// some fields omitted


#1

Someone who decided to look at some documentation for my Rust code saw // some fields omitted and was confused and thought that there was something broken with rustdoc being unable to display some fields. I had to explain to him that it was because it was some fields were private but he pointed out that had nothing to do with the API. In response I pointed out that it does affect whether you are able to create instances of that struct outside of that module and he countered that the comment should instead say that directly such as // cannot instantiate directly. Thoughts?


#2

// private fields omitted?

Beyond just construction, it also effects unsafe manipulations like transmute, as well as destructuring:

mod foo {
    pub struct Baz{
        a: uint,
        pub b: uint,
    }
    
    pub fn make_baz() -> Baz{
        Baz { a: 0, b: 1 }
    }
}

mod bar {
    use foo;
    fn main () {
        let baz = foo::make_baz();
        //must omit a value, because there's more, but we can't reference them
        let foo::Baz { b, .. } = baz;
        println!("{}", b);
    }
}

#3

Perhaps something like // ... ?


#4

Like Gankro said, perhaps simply stating that the omitted fields are private // private fields omitted


#5

Made a PR since it’s a super-minor change, and can be bikeshedded there if necessary: https://github.com/rust-lang/rust/pull/16376


#6

Conclusion for those that didn’t follow along: Fields can be omitted by the docs either because they’re private, or because they’re suppressed by an annotation (possibly more ways?). Thus, // some fields omitted is truly the most accurate note, as the fields need not be private, and the object can be instantiable directly.