ron-rs/ron

Support (basic) attributes

Opened this issue · 1 comments

I think it would be more in line with the Rust style of things if doc comments would be treated as parseable attributes by ron, like in Rust.

Of course, Value would have to be extended into something maybe looking like this:

pub enum Value {
    Bool(Field<bool>),
    Char(Field<char>),
    Map(Field<Map>),
    Number(Field<Number>),
    Option(Field<Option<Box<Value>>>),
    String(Field<String>),
    Seq(Field<Vec<Value>>),
    Unit,
}

pub struct Field<T> {
    attrs: Vec<Attr>
    value: T,
}
juntyr commented

I think adding support for doc comments is definitely a neat idea and could help with the question of how to preserve comments across serde - here doc comments would be given a special role in that we would guarantee to keep them around. How this could be achieved for Value and when going through other serde formats would be a bit more difficult and might require some slight hacks such as using special struct names. One more thought that comes to mind is that our Value type is asking more and more to become an AST so that it can express all of RON (almost) losslessly (unfortunately serde’s model is not expressive enough to support fully lossless round trips through RON, Value, and other formats).