diff --git a/Cargo.toml b/Cargo.toml index 705aec75..e097734e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "peroxide" -version = "0.34.3" +version = "0.34.4" authors = ["axect "] edition = "2018" description = "Rust comprehensive scientific computation library contains linear algebra, numerical analysis, statistics and machine learning tools with farmiliar syntax" diff --git a/RELEASES.md b/RELEASES.md index 1dfddfa1..69aa4977 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,8 @@ +# Release 0.34.4 (2024-01-28) + +* Derive `Serialize` and `Deserialize` for `Matrix` +* Remove explicit implementation for `Default` for `Shape` + # Release 0.34.3 (2023-11-25) * Update `peroxide-num` to `v0.1.4` diff --git a/src/structure/matrix.rs b/src/structure/matrix.rs index 091df7fe..baf7bbdd 100644 --- a/src/structure/matrix.rs +++ b/src/structure/matrix.rs @@ -607,13 +607,13 @@ #[cfg(feature="csv")] extern crate csv; +#[cfg(feature="csv")] +use self::csv::{ReaderBuilder, StringRecord, WriterBuilder}; + #[cfg(feature = "O3")] extern crate blas; #[cfg(feature = "O3")] extern crate lapack; - -#[cfg(feature="csv")] -use self::csv::{ReaderBuilder, StringRecord, WriterBuilder}; use ::matrixmultiply; #[cfg(feature = "O3")] use blas::{daxpy, dgemm, dgemv}; @@ -622,6 +622,9 @@ use lapack::{dgecon, dgeqrf, dgetrf, dgetri, dgetrs, dorgqr, dgesvd, dpotrf}; #[cfg(feature = "O3")] use std::f64::NAN; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + pub use self::Shape::{Col, Row}; use crate::numerical::eigen::{eigen, EigenMethod}; use crate::traits::{ @@ -661,8 +664,10 @@ pub type Perms = Vec<(usize, usize)>; /// println!("{}", a); // Similar to [[1,2],[3,4]] /// println!("{}", b); // Similar to [[1,3],[2,4]] /// ``` -#[derive(Debug, PartialEq, Clone, Copy)] +#[derive(Default, Debug, PartialEq, Clone, Copy)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub enum Shape { + #[default] Col, Row, } @@ -678,12 +683,6 @@ impl fmt::Display for Shape { } } -impl Default for Shape { - fn default() -> Self { - Shape::Col - } -} - /// R-like matrix structure /// /// # Examples @@ -700,6 +699,7 @@ impl Default for Shape { /// }; // [[1,2],[3,4]] /// ``` #[derive(Debug, Clone, Default)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct Matrix { pub data: Vec, pub row: usize,