{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/2121","repository_url":"https://api.github.com/repos/rust-lang/rfcs","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2121/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2121/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2121/events","html_url":"https://github.com/rust-lang/rfcs/pull/2121","id":252184164,"number":2121,"title":"Modules","user":{"login":"withoutboats","id":9063376,"avatar_url":"https://avatars2.githubusercontent.com/u/9063376?v=4","gravatar_id":"","url":"https://api.github.com/users/withoutboats","html_url":"https://github.com/withoutboats","followers_url":"https://api.github.com/users/withoutboats/followers","following_url":"https://api.github.com/users/withoutboats/following{/other_user}","gists_url":"https://api.github.com/users/withoutboats/gists{/gist_id}","starred_url":"https://api.github.com/users/withoutboats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/withoutboats/subscriptions","organizations_url":"https://api.github.com/users/withoutboats/orgs","repos_url":"https://api.github.com/users/withoutboats/repos","events_url":"https://api.github.com/users/withoutboats/events{/privacy}","received_events_url":"https://api.github.com/users/withoutboats/received_events","type":"User","site_admin":false},"labels":[{"id":668044488,"url":"https://api.github.com/repos/rust-lang/rfcs/labels/Ergonomics%20Initiative","name":"Ergonomics Initiative","color":"0e8a16","default":false},{"id":211667886,"url":"https://api.github.com/repos/rust-lang/rfcs/labels/T-lang","name":"T-lang","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":25,"created_at":"2017-08-23T07:19:50Z","updated_at":"2017-08-23T16:09:20Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/2121","html_url":"https://github.com/rust-lang/rfcs/pull/2121","diff_url":"https://github.com/rust-lang/rfcs/pull/2121.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/2121.patch"},"body":"Here is another RFC describing a change to the Rust module system (hopefully the last for the near future).\r\n\r\nBecause it is a relatively large RFC, I have broken the text into multiple files. **[You can find the rendered root of the RFC here](https://github.com/withoutboats/rfcs/tree/modules/0000-modules).**\r\n\r\nThe **[overview](https://github.com/withoutboats/rfcs/blob/modules/0000-modules/overview.md)** document gives a high level overview of the proposed new system and how it differs from the current system.\r\n\r\nSee RFC #2108, the previous module RFC, for previous work (and links to even more previous work).\r\n\r\n---\r\n\r\nFor people involved in the previous discussion, here are the highlights of the differences. I would say in summary its a similar skeleton, but with some very significant changes to the skin to make it a much less radical departure.\r\n\r\n* **The `local` keyword:** Instead of changing the meaning of `pub`, a new visibility called `local` is added for restricted visibility between private and pub. To make this meaning of local easier to learn pedagogically, the `crate::` form of absolute paths have been changed to be written `local::`.\r\n\r\n* **`mod` statements:** Mod statements continue to exist instead of being removed. Even when autoloading modules, they will still be used to control visibility (such as making them more public or more private).\r\n\r\n* **The `export` keyword:** Now that its not a visibility, `export` is just a standard mechanism for re-exporting things, similar to a `use` statement but optimized for this use case.\r\n\r\n* **Autoloading opt outs:** Two mechanisms of opt out for the autoloading mechanism are added, an `#[ignore]` attribute for temporarily opting out of loading a particular file, and a Cargo.toml flag which prevents cargo from preparing the `--modules` list at all.\r\n\r\n---\r\n\r\nQuoting this from the previous RFC:\r\n\r\n> Based on past experience, I predict this RFC will be high traffic. So a couple of reminders:\r\n>\r\n> * If you find yourself in a conversation with a small number of other users \"workshopping\" a particular topic, consider finding an out-of-band medium (such as IRC) to hash out the details, and bringing the substantial proposal back to the thread afterward.\r\n> * If you've staked out a position, consider when making a new comment whether you're restating the same position or if your thoughts have been clarified or evolved. Unless your prior post was significantly misunderstood, the conversation doesn't progress much by the same arguments being repeated in cycles.\r\n> * When the conversation grows long, its unreasonable to expect someone coming into it to have read every prior comment. But if you have an objection that seems very obvious to you, there's a good chance its been discussed previously. Consider searching the thread to see if maybe that subject has already reached an endpoint.\r\n>\r\n> Lastly, if you want to leave a comment on the RFC but for any reason at all don't want to leave it publicly, I receive email addressed to woboats@gmail.com. I can't promise I'll respond, but I will read it.\r\n\r\nAs a final note: this is a polite reminder that the RFCs repo, like all Rust project venues, is governed by the [Code of Conduct](https://www.rust-lang.org/en-US/conduct.html) and also that we, the RFC authors, are acting in good faith (honestly!). Please always be charitable in disagreement. :smile: :rainbow: :heart:"},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/324384713","html_url":"https://github.com/rust-lang/rfcs/pull/2121#issuecomment-324384713","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2121","id":324384713,"user":{"login":"phaylon","id":41822,"avatar_url":"https://avatars0.githubusercontent.com/u/41822?v=4","gravatar_id":"","url":"https://api.github.com/users/phaylon","html_url":"https://github.com/phaylon","followers_url":"https://api.github.com/users/phaylon/followers","following_url":"https://api.github.com/users/phaylon/following{/other_user}","gists_url":"https://api.github.com/users/phaylon/gists{/gist_id}","starred_url":"https://api.github.com/users/phaylon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phaylon/subscriptions","organizations_url":"https://api.github.com/users/phaylon/orgs","repos_url":"https://api.github.com/users/phaylon/repos","events_url":"https://api.github.com/users/phaylon/events{/privacy}","received_events_url":"https://api.github.com/users/phaylon/received_events","type":"User","site_admin":false},"created_at":"2017-08-23T16:09:20Z","updated_at":"2017-08-23T16:09:20Z","body":"@stevenblenkinsop I would certainly see current `pub` as meaning `pub`, just that it's currently in module-context instead of crate-context."}}
{"actor":{"display_login":"phaylon"}}