3. and 4 do not currently work in all cases. Either that or I'm testing
them wrong. see here: https://gist.github.com/DovReshef/6116690.


On Tue, Jul 30, 2013 at 11:33 PM, Alex Crichton <[email protected]> wrote:

> I've always wanted to see the correct rules written down in one place, so I
> wanted to try to at least the best of my ability. Is this what resolve is
> supposed to do?
>
> 1: All items are private by default, with the exception of struct fields.
>    To flag an item as public, you use `pub`. Also `pub` is not allowed on
> `impl`
>    or `extern` (visibility is determined by each item individually).
>
> 2: For a path which is a cross-crate reference, it is only valid of *every*
>    item in the path is marked as `pub`.
>
> 3: A module may access any item from its immediate parent.
>
> 4. A module may access any item from its immediate children.
>
> 5. Any local-crate path which goes outside the bounds of 3/4 will only
> resolve
>    if each component of the path is `pub`. For example I could reach into a
>    child's private mod's pub items, but not the child's private mod's
> non-pub
>    items.
>
> Those are the rules that at least make sense to me, I'm not sure if that's
> what
> is intended. Regardless, this would make for an awesome compile-fail test
> to
> showcase how resolve works.
>
> I also wanted to mention #8122 because if these rules are true I don't
> think
> that `priv` is needed at all for visibility except for enum variants and
> struct
> fields. If possible I'd like to make it a compile error to put `priv` on
> an item
> if these rules are true.
>
> Do others agree with these rules or are there missing ones? I'd be
> more than willing to open an issue and curate related issues once
> we've got these all written down.
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to