Name Description Size
mod.rs 40748
path_meta.rs Path-based metadata to serialize with a value. Path-based in this context means that the metadata is linked to the data in a relative and hierarchical fashion by tracking the current absolute path of the field being serialized. # Example ``` # use ron::ser::{PrettyConfig, path_meta::Field}; #[derive(serde::Serialize)] struct Creature { seconds_since_existing: usize, linked: Option<Box<Self>>, } let mut config = PrettyConfig::default(); config .path_meta // The path meta defaults to no root structure, // so we either provide a prebuilt one or initialize // an empty one to build. .get_or_insert_with(Field::empty) .build_fields(|fields| { fields // Get or insert the named field .field("seconds_since_existing") .with_doc("Outer seconds_since_existing"); fields .field("linked") // Doc metadata is serialized preceded by three forward slashes and a space for each line .with_doc("Optional.\nProvide another creature to be wrapped.") // Even though it's another Creature, the fields have different paths, so they are addressed separately. .build_fields(|fields| { fields .field("seconds_since_existing") .with_doc("Inner seconds_since_existing"); }); }); let value = Creature { seconds_since_existing: 0, linked: Some(Box::new(Creature { seconds_since_existing: 0, linked: None, })), }; let s = ron::ser::to_string_pretty(&value, config).unwrap(); assert_eq!(s, r#"( /// Outer seconds_since_existing seconds_since_existing: 0, /// Optional. /// Provide another creature to be wrapped. linked: Some(( /// Inner seconds_since_existing seconds_since_existing: 0, linked: None, )), )"#); ``` # Identical paths Especially in enums and tuples it's possible for fields to share a path, thus being unable to be addressed separately. ```no_run enum Kind { A { field: (), }, // ^ // cannot be addressed separately because they have the same path B { // v field: (), }, } ``` ```no_run struct A { field: (), } struct B { field: (), } type Value = ( A, // ^ // These are different types, but they share the path `field` // v B, ); ``` 10064
raw.rs 7587
tests.rs 8391
value.rs 918