diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 82d0eab..3059426 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,15 +23,15 @@ jobs: env: TZ: "/usr/share/zoneinfo/your/location" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cache .cargo and target uses: actions/cache@v2 with: path: | ~/.cargo ./target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }} - restore-keys: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }} + key: ${{ runner.os }}-cargo-${{ matrix.platform.target }}-${{ hashFiles('**/Cargo.toml') }} + restore-keys: ${{ runner.os }}-cargo-${{ matrix.platform.target }}-${{ hashFiles('**/Cargo.toml') }} - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: @@ -56,3 +56,34 @@ jobs: - name: Tests in WASM if: matrix.platform.target == 'wasm32-unknown-unknown' run: wasm-pack test --node -- --all-features + + check_features: + runs-on: "${{ matrix.platform.os }}-latest" + strategy: + matrix: + platform: [{ os: "ubuntu" }] + features: ["--features serde", "--features datasets", ""] + env: + TZ: "/usr/share/zoneinfo/your/location" + steps: + - uses: actions/checkout@v3 + - name: Cache .cargo and target + uses: actions/cache@v2 + with: + path: | + ~/.cargo + ./target + key: ${{ runner.os }}-cargo-features-${{ hashFiles('**/Cargo.toml') }} + restore-keys: ${{ runner.os }}-cargo-features-${{ hashFiles('**/Cargo.toml') }} + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.platform.target }} + profile: minimal + default: true + - name: Stable Build + uses: actions-rs/cargo@v1 + with: + command: build + args: --no-default-features ${{ matrix.features }} diff --git a/Cargo.toml b/Cargo.toml index a1df4e1..0d3c1b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,11 +42,6 @@ bincode = "1.3.1" [target.'cfg(target_arch = "wasm32")'.dev-dependencies] wasm-bindgen-test = "0.3" -[profile.bench] -debug = true - -resolver = "2" - [profile.test] debug = 1 opt-level = 3 diff --git a/src/linalg/basic/matrix.rs b/src/linalg/basic/matrix.rs index 149c1fc..bde6b78 100644 --- a/src/linalg/basic/matrix.rs +++ b/src/linalg/basic/matrix.rs @@ -4,6 +4,7 @@ use std::ops::Range; use std::slice::Iter; use approx::{AbsDiffEq, RelativeEq}; +#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; use crate::linalg::basic::arrays::{ @@ -19,7 +20,8 @@ use crate::numbers::basenum::Number; use crate::numbers::realnum::RealNumber; /// Dense matrix -#[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Debug, Clone)] pub struct DenseMatrix { ncols: usize, nrows: usize, diff --git a/src/numbers/floatnum.rs b/src/numbers/floatnum.rs index 034f4fd..4ca7f73 100644 --- a/src/numbers/floatnum.rs +++ b/src/numbers/floatnum.rs @@ -1,6 +1,6 @@ use num_traits::{Float, Signed}; -use crate::numbers::basenum::Number; +use crate::{numbers::basenum::Number, rand_custom::get_rng_impl}; /// Defines float number /// @@ -57,7 +57,7 @@ impl FloatNumber for f64 { fn rand() -> f64 { use rand::Rng; - let mut rng = rand::thread_rng(); + let mut rng = get_rng_impl(None); rng.gen() } @@ -99,7 +99,7 @@ impl FloatNumber for f32 { fn rand() -> f32 { use rand::Rng; - let mut rng = rand::thread_rng(); + let mut rng = get_rng_impl(None); rng.gen() } diff --git a/src/svm/mod.rs b/src/svm/mod.rs index 3bb3c41..3346c52 100644 --- a/src/svm/mod.rs +++ b/src/svm/mod.rs @@ -52,6 +52,7 @@ impl<'a> Debug for dyn Kernel<'_> + 'a { } } +#[cfg(feature = "serde")] impl<'a> Serialize for dyn Kernel<'_> + 'a { fn serialize(&self, serializer: S) -> Result where @@ -64,7 +65,8 @@ impl<'a> Serialize for dyn Kernel<'_> + 'a { } /// Pre-defined kernel functions -#[derive(Debug, Clone, Serialize, Deserialize)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Debug, Clone)] pub struct Kernels {} impl<'a> Kernels { diff --git a/src/svm/svc.rs b/src/svm/svc.rs index 256c3c3..d616374 100644 --- a/src/svm/svc.rs +++ b/src/svm/svc.rs @@ -133,7 +133,7 @@ pub struct SVCParameters< pub struct SVC<'a, TX: Number + RealNumber, TY: Number + Ord, X: Array2, Y: Array1> { classes: Option>, instances: Option>>, - #[serde(skip)] + #[cfg_attr(feature = "serde", serde(skip))] parameters: Option<&'a SVCParameters<'a, TX, TY, X, Y>>, w: Option>, b: Option, diff --git a/src/svm/svr.rs b/src/svm/svr.rs index 00191b0..14180e4 100644 --- a/src/svm/svr.rs +++ b/src/svm/svr.rs @@ -92,7 +92,7 @@ pub struct SVRParameters<'a, T: Number + RealNumber> { pub c: T, /// Tolerance for stopping criterion. pub tol: T, - #[serde(skip_deserializing)] + #[cfg_attr(feature = "serde", serde(skip_deserializing))] /// The kernel function. pub kernel: Option<&'a dyn Kernel<'a>>, }