serde_magnus 0.2.2

Serde integration for Magnus
Documentation
use magnus::{encoding, encoding::EncodingCapable, Error, RString};
use serde_bytes::{ByteBuf, Bytes};
use serde_magnus::serialize;

#[test]
fn test_serializing_strings() -> Result<(), Error> {
    let _cleanup = unsafe { magnus::embed::init() };

    let output: RString = serialize(&'')?;
    assert_eq!("", output.to_string()?);
    assert!(output.enc_get() == encoding::Index::utf8());

    let output: RString = serialize(&"Hello, world!")?;
    assert_eq!("Hello, world!", output.to_string()?);
    assert!(output.enc_get() == encoding::Index::utf8());

    let output: RString = serialize(&String::from("Hello, world!"))?;
    assert_eq!("Hello, world!", output.to_string()?);
    assert!(output.enc_get() == encoding::Index::utf8());

    let output: RString = serialize(&Bytes::new(b"Hello, world!"))?;
    assert_eq!(b"Hello, world!", unsafe { output.as_slice() });
    assert!(output.enc_get() == encoding::Index::ascii8bit());

    let output: RString = serialize(&ByteBuf::from(*b"Hello, world!"))?;
    assert_eq!(b"Hello, world!", unsafe { output.as_slice() });
    assert!(output.enc_get() == encoding::Index::ascii8bit());

    Ok(())
}