use bincode::{de::Deserializer, options, Serializer};
use serde::Deserialize;
use sharify::Shared;
#[test]
fn main() -> Result<(), Box<dyn std::error::Error>> {
let slice_a: Shared<[u64]> = Shared::new(&(0, 1_000_000))?;
let slice_b = slice_a.clone();
let mut bytes_a = Vec::new();
let mut serializer = Serializer::new(&mut bytes_a, options());
slice_a.into_serialized(&mut serializer).unwrap();
let mut bytes_b = Vec::new();
let mut serializer = Serializer::new(&mut bytes_b, options());
slice_b.into_serialized(&mut serializer).unwrap();
{
let mut deserializer = Deserializer::from_slice(&bytes_a, options());
Shared::<[u64]>::deserialize(&mut deserializer)?;
let mut deserializer = Deserializer::from_slice(&bytes_a, options());
Shared::<[u64]>::deserialize(&mut deserializer)?;
}
let mut deserializer = Deserializer::from_slice(&bytes_b, options());
assert!(Shared::<[u64]>::deserialize(&mut deserializer).is_err());
Ok(())
}