# The Great Module Adventure Continues

**URL:** <https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678>\
**Category:** language design\
**Created:** [January 31, 2018, 10:20pm UTC](https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678 "2018-01-31T22:20:08Z")\
**Posts on this page:** 1\
**Showing post:** 174

<div class="post-metadata">

**Author:** ![matklad](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/matklad/32/12266_2.png) [@matklad](https://internals.rust-lang.org/u/matklad)\
**Post date:** [February 23, 2018, 10:09am UTC](https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678/174 "2018-02-23T10:09:41Z")

</div>

> [@aturon](#):
>
> Add std to the prelude, rather than just injecting it into the crate root.

Hm, this is a very neat idea! I am a little bit worried that extern crates and std work differently as a result of this: the fact that std is special-cased is one of the drawbacks of the current system.

However, what if we add _all_ extern crates to the prelude? The system would work like this:

- There are no absolute paths at all, **every** path starts relative to the current module.

- By default, the namespace of each module includes:

- Paths in `use` and in function bodies are the same relative paths.

- There's no syntactic form for absolute paths, no `::`, no `extern`, no `:`.

- Usual shadowing rules apply.

I am totally not sure that this is a great idea, and I have not though out the transition paths, but it seems to be a proposal not mentioned before, and I find "absolute paths are hard? Get rid of absolute paths" approach neat 🙂

---

_[View the full topic](https://internals.rust-lang.org/t/the-great-module-adventure-continues/6678)._
