diff --git a/.circleci/config.yml b/.circleci/config.yml index 105342f..5ca96ea 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,6 +11,9 @@ jobs: debian-version: type: string default: "buster" + rust-features: + type: string + default: "''" docker: - image: rust:<< parameters.rust-version >>-<< parameters.debian-version >> environment: @@ -36,7 +39,7 @@ jobs: command: cargo build - run: name: Test - command: cargo test + command: cargo test --features=<< parameters.rust-features >> upload-coverage: parameters: @@ -91,6 +94,15 @@ workflows: - "1.40.0" - "1.50.0" - "1.54.0" + - build-and-test: + matrix: + parameters: + rust-version: + - "1.50.0" + - "1.54.0" + rust-features: + - "'serde'" + - "'serde,string-only'" - upload-coverage: rust-version: "1.54.0" requires: diff --git a/Cargo.toml b/Cargo.toml index e1c7e61..e17ad59 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bigdecimal" -version = "0.2.2" +version = "0.3.0" authors = ["Andrew Kubera"] description = "Arbitrary precision decimal numbers" documentation = "https://docs.rs/bigdecimal" @@ -10,7 +10,7 @@ keywords = ["mathematics", "numerics", "decimal", "arbitrary-precision", "floati license = "MIT/Apache-2.0" [dependencies] -num-bigint = "0.3" +num-bigint = "0.4" num-integer = "0.1" num-traits = "0.2" serde = { version = "1.0", optional = true } diff --git a/src/lib.rs b/src/lib.rs index a59f148..8eb3dd6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1813,6 +1813,9 @@ mod bigdecimal_serde { use serde::{de, ser}; use std::convert::TryFrom; use std::fmt; + use std::str::FromStr; + #[allow(unused_imports)] + use num_traits::FromPrimitive; impl ser::Serialize for BigDecimal { fn serialize(&self, serializer: S) -> Result @@ -1836,7 +1839,6 @@ mod bigdecimal_serde { where E: de::Error, { - use std::str::FromStr; BigDecimal::from_str(value).map_err(|err| E::custom(format!("{}", err))) } @@ -1942,8 +1944,6 @@ mod bigdecimal_serde { #[test] #[cfg(not(feature = "string-only"))] fn test_serde_deserialize_int() { - use traits::FromPrimitive; - let vals = vec![0, 1, 81516161, -370, -8, -99999999999]; for n in vals { let expected = BigDecimal::from_i64(n).unwrap();