Revision control
Copy as Markdown
Other Tools
use ron::{
error::{Error, Position, SpannedError},
value::{Number, Value},
};
#[test]
fn test_array() {
let array: [i32; 3] = [1, 2, 3];
let ser = ron::to_string(&array).unwrap();
assert_eq!(ser, "(1,2,3)");
let de: [i32; 3] = ron::from_str(&ser).unwrap();
assert_eq!(de, array);
let value: Value = ron::from_str(&ser).unwrap();
assert_eq!(
value,
Value::Seq(vec![
Value::Number(Number::from(1)),
Value::Number(Number::from(2)),
Value::Number(Number::from(3)),
])
);
let ser = ron::to_string(&value).unwrap();
assert_eq!(ser, "[1,2,3]");
let de: [i32; 3] = value.into_rust().unwrap();
assert_eq!(de, array);
// FIXME: fails and hence arrays do not roundtrip
let de: SpannedError = ron::from_str::<[i32; 3]>(&ser).unwrap_err();
assert_eq!(
de,
SpannedError {
code: Error::ExpectedStructLike,
position: Position { line: 1, col: 1 },
}
);
let value: Value = ron::from_str(&ser).unwrap();
assert_eq!(
value,
Value::Seq(vec![
Value::Number(Number::from(1)),
Value::Number(Number::from(2)),
Value::Number(Number::from(3)),
])
);
}