scientific 0.5.3

Arbitrary precision scientific number (no_std capable, in pure Rust)
Documentation
#![cfg(feature = "serde")]

use scientific::Scientific;
use std::str::FromStr;

#[test]
fn serde() {
  for (sci, json, postcard) in &[
    (
      Scientific::from_str("-12340").unwrap(),
      r#""-12340""#,
      vec![3, 129, 30, 208],
    ),
    (
      Scientific::from_str("1.234").unwrap(),
      r#""1.234""#,
      vec![3, 125, 30, 208],
    ),
    (
      Scientific::from_str("123.4e9").unwrap(),
      r#""1.234e11""#,
      vec![3, 8, 30, 208],
    ),
    (
      Scientific::from_str("123.4e99").unwrap(),
      r#""1.234e101""#,
      vec![4, 60, 98, 30, 208],
    ),
    (
      Scientific::from_str("123.4e999").unwrap(),
      r#""1.234e1001""#,
      vec![5, 61, 3, 230, 30, 208],
    ),
  ] {
    assert_eq!(
      serde_json::to_string(sci).map_err(|_| ()),
      Ok(json.to_string()),
      "{sci} to json"
    );
    assert_eq!(
      serde_json::from_str(json).map_err(|_| ()),
      Ok(sci.clone()),
      "{sci} from json"
    );
    assert_eq!(
      postcard::to_extend(sci, Vec::new()),
      Ok(postcard.clone()),
      "{sci} to postcard"
    );
    assert_eq!(
      postcard::from_bytes(postcard),
      Ok(sci.clone()),
      "{sci} from postcard"
    );
  }
}