# Request: Better compiler hint for when using edition2018 style import without declaring edition = "2018" in Cargo.toml

**URL:** <https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593>\
**Category:** Uncategorized\
**Created:** [June 19, 2020, 10:48am UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593 "2020-06-19T10:48:51Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![KSXGitHub](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/ksxgithub/32/5582_2.png) [@KSXGitHub](https://internals.rust-lang.org/u/KSXGitHub)\
**Post date:** [June 19, 2020, 10:48am UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/1 "2020-06-19T10:48:51Z")

</div>

Recently, I forgot declaring `edition = "2018"` in Cargo.toml and try to write `use crate_name` in the code. The error message was:

```rust
error[E0433]: failed to resolve: maybe a missing crate `crate_name`?
 --> src/main.rs:1:5
   |
 1 | use crate_name;
   | ^^^^^^^^^^ maybe a missing crate `crate_name`?

```

This error message confused me for hours. I only find out how to fix it by remembering "edition".

## Request

The compiler should add the following hints:

```rust
hint: Try setting edition to 2018
hint: Try adding `extern crate crate_name` for 2015 edition

```

---

<div class="post-metadata">

**Author:** ![tesuji](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/tesuji/32/12790_2.png) [@tesuji](https://internals.rust-lang.org/u/tesuji)\
**Post date:** [June 19, 2020, 12:09pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/2 "2020-06-19T12:09:16Z")

</div>

When working with one crate, you should know its Rust edition. If your crate is in edition 2015, simply adding the edition field does not make it magically work. The cargo new command sets edition 2018 by default.

---

<div class="post-metadata">

**Author:** ![KSXGitHub](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/ksxgithub/32/5582_2.png) [@KSXGitHub](https://internals.rust-lang.org/u/KSXGitHub)\
**Post date:** [June 19, 2020, 12:25pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/3 "2020-06-19T12:25:56Z")

</div>

> [@tesuji](#):
>
> When working with one crate

Actually, I was working on a monorepo of multiple crates.

> [@tesuji](#):
>
> If your crate is in edition 2015, simply adding the edition field does not make it magically work.

Is following compiler hints by the letter supposed to fix everything?

> [@tesuji](#):
>
> The cargo new command sets edition 2018 by default.

`cargo new` has its own problems, such as creating a `.git` directory inside a git repository.

---

<div class="post-metadata">

**Author:** ![steffahn](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/steffahn/32/13288_2.png) [@steffahn](https://internals.rust-lang.org/u/steffahn)\
**Post date:** [June 19, 2020, 12:31pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/4 "2020-06-19T12:31:47Z")

</div>

> [@KSXGitHub](#):
>
> creating a `.git` directory

You can pass `--vcs none`.

---

<div class="post-metadata">

**Author:** ![KSXGitHub](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/ksxgithub/32/5582_2.png) [@KSXGitHub](https://internals.rust-lang.org/u/KSXGitHub)\
**Post date:** [June 19, 2020, 12:39pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/5 "2020-06-19T12:39:41Z")

</div>

For convenient, I think that `cargo new` should avoid creating a `.git` directory when a `.git` directory already exists in one of the ancestor directories. But this should be in a separate proposal.

---

<div class="post-metadata">

**Author:** ![kinnison](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kinnison/32/5768_2.png) [@kinnison](https://internals.rust-lang.org/u/kinnison)\
**Post date:** [June 19, 2020, 12:55pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/6 "2020-06-19T12:55:54Z")

</div>

I just tried and both `cargo init` and `cargo new` when within a git tree correctly did not create another `.git`

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [June 19, 2020, 1:52pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/7 "2020-06-19T13:52:17Z")

</div>

Try making pull request to rustc. It's relatively easy to implement, since the error is attached to a node which can tell you which edition it is, so it's a matter of adding extra info to the error based on that.

---

<div class="post-metadata">

**Author:** ![ehuss](https://avatars.discourse-cdn.com/v4/letter/e/9de0a6/32.png) [@ehuss](https://internals.rust-lang.org/u/ehuss)\
**Post date:** [June 19, 2020, 3:32pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/8 "2020-06-19T15:32:23Z")

</div>

There are some open issues regarding this, such as [https://github.com/rust-lang/rust/issues/61914](https://github.com/rust-lang/rust/issues/61914) or [https://github.com/rust-lang/rust/issues/63323](https://github.com/rust-lang/rust/issues/63323). Improvements are occasionally being added, such as [https://github.com/rust-lang/rust/pull/71783](https://github.com/rust-lang/rust/pull/71783).

@kornel you mentioned [this](https://github.com/rust-lang/rust/pull/63289#issuecomment-518347728) when updating the diagnostic. Have you changed your opinion about 2015-specific diagnostics? I personally think it would be good to help in situations like this.

---

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [June 19, 2020, 3:44pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/9 "2020-06-19T15:44:44Z")

</div>

Yes, I was wrong about not needing 2015 version of the error.

---

<div class="post-metadata">

**Author:** ![CAD97](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/cad97/32/3460_2.png) [@CAD97](https://internals.rust-lang.org/u/CAD97)\
**Post date:** [June 19, 2020, 5:43pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/10 "2020-06-19T17:43:23Z")

</div>

> [@KSXGitHub](#):
>
> `cargo new` has its own problems, such as creating a `.git` directory inside a git repository.

There are 3rd party extensions for better integration with workspaces, such as [`cargo ws create`](https://crates.io/crates/cargo-workspaces#create). (There are others, that's just the one I know.)

---

<div class="post-metadata">

**Author:** ![Aloso](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/aloso/32/5039_2.png) [@Aloso](https://internals.rust-lang.org/u/Aloso)\
**Post date:** [June 19, 2020, 5:55pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/11 "2020-06-19T17:55:35Z")

</div>

I think discussing the pros and cons of `cargo new` is off topic here. Not everyone uses `cargo new`, which is fine. Adding a hint to use to the 2018 edition is a good idea IMHO.

---

<div class="post-metadata">

**Author:** ![josh](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/josh/32/5934_2.png) [@josh](https://internals.rust-lang.org/u/josh)\
**Post date:** [June 19, 2020, 8:50pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/12 "2020-06-19T20:50:13Z")

</div>

> [@KSXGitHub](#):
>
> For convenient, I think that `cargo new` should avoid creating a `.git` directory when a `.git` directory already exists in one of the ancestor directories.

It already does, which I find a little annoying because my home directory is a git repository, and I still want Cargo to create git repositories under it. 🙂

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [September 17, 2020, 8:50pm UTC](https://internals.rust-lang.org/t/request-better-compiler-hint-for-when-using-edition2018-style-import-without-declaring-edition-2018-in-cargo-toml/12593/13 "2020-09-17T20:50:22Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
