Skip to content

Commit

Permalink
[nanoserde] Add nanoserde serialization option
Browse files Browse the repository at this point in the history
  • Loading branch information
pczarn committed May 31, 2024
1 parent cc3d3d7 commit e69fa90
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ readme = "README.md"
borsh = { version = "1.5.0", default-features = false, features = ["derive"], optional = true }
serde = { version = "1.0", default-features = false, features = ["derive"], optional = true }
miniserde = { version = "0.1", optional = true }
nanoserde = { version = "0.1", optional = true }

[dev-dependencies]
serde_json = "1.0"
Expand Down
25 changes: 25 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ use serde::{Deserialize, Serialize};
extern crate borsh;
#[cfg(feature = "miniserde")]
extern crate miniserde;
#[cfg(feature = "nanoserde")]
extern crate nanoserde;
#[cfg(feature = "nanoserde")]
use nanoserde::{DeBin, DeJson, DeRon, SerBin, SerJson, SerRon};

#[cfg(not(feature = "std"))]
#[macro_use]
Expand Down Expand Up @@ -230,6 +234,10 @@ static FALSE: bool = false;
feature = "miniserde",
derive(miniserde::Deserialize, miniserde::Serialize)
)]
#[cfg_attr(
feature = "nanoserde",
derive(DeBin, DeJson, DeRon, SerBin, SerJson, SerRon)
)]
pub struct BitVec<B = u32> {
/// Internal representation of the bit vector
storage: Vec<B>,
Expand Down Expand Up @@ -2669,6 +2677,23 @@ mod tests {
assert_eq!(bit_vec, unserialized);
}

#[cfg(feature = "nanoserde")]
#[test]
fn test_nanoserde_json_serialization() {
use nanoserde::{DeJson, SerJson};

let bit_vec: BitVec = BitVec::new();
let serialized = bit_vec.serialize_json();
let unserialized: BitVec = BitVec::deserialize_json(&serialized[..]).unwrap();
assert_eq!(bit_vec, unserialized);

let bools = vec![true, false, true, true];
let bit_vec: BitVec = bools.iter().map(|n| *n).collect();
let serialized = bit_vec.serialize_json();
let unserialized = BitVec::deserialize_json(&serialized[..]).unwrap();
assert_eq!(bit_vec, unserialized);
}

#[cfg(feature = "borsh")]
#[test]
fn test_borsh_serialization() {
Expand Down

0 comments on commit e69fa90

Please sign in to comment.