I'm new to Rust and to my surprise rustdoc won't allow me to use docstrings on the right of elements, only on top, if you put anything on right it gives an error.
This won't work:
/// Users.
pub struct User {
pub name: String /// User name.
}
You have to do it like this:
/// Users.
pub struct User {
/// User name.
pub name: String
}
I think this would be easy to implement using this logic:
If a docstring is not alone in the line, then assign it to the element that's on the left side of it, else assign it to the element bellow it.
Please let me know what you think. If it's a good idea should a feature request be opened on GitHub?
I think any attempt at opening a new RFC for it would require a very strong consensus from a large group of users that it's an absolutely needed feature (something that I doubt is possible to gather).
So, it works like this because /// is actually an attribute, so it works like attributes.
That means that this already compiles:
pub struct Foo {
x: i32, /// Hi there
y: i32,
}
But running rustfmt on it will correct it to the more normal
pub struct Foo {
x: i32,
/// Hi there
y: i32,
}
which says to me that this would be a breaking change, and thus would need to be done over an edition, which means it needs even stronger motivation to bother.
What's wrong with just putting the doc comment over the field?
What that would be possible, a rule like that would be unprecedented in Rust -- there's nothing else where parsing depends on formatting like this. I thus suspect it wouldn't happen. (Maybe it could happen with a different syntax.)
Good doc strings are hardly going to be as short as "User name" anyway. As soon you put any effort into documenting what your fields actually mean, you'll need to put it in prefix form.
Besides that, non-doc comments already work for this purpose: you can put them wherever you want in the code. (If you were optimizing for reading source-code directly, there'd be no need for doc-comments.) So just get rid of one of those / chars and everything looks peachy.
Also, your idea has the same problem as before that it only works for one-line comments; the comments you've used as an example are basically just the name of the field again, which I wouldn't find helpful at all as a reader of the docs.