rust/src
bors ccf3198de3 Auto merge of #138677 - shepmaster:consistent-elided-lifetime-syntax, r=traviscross,jieyouxu
Add a new `mismatched-lifetime-syntaxes` lint

The lang-team [discussed this](https://hackmd.io/nf4ZUYd7Rp6rq-1svJZSaQ) and I attempted to [summarize](https://github.com/rust-lang/rust/pull/120808#issuecomment-2701863833) their decision. The summary-of-the-summary is:

- Using two different kinds of syntax for elided lifetimes is confusing. In rare cases, it may even [lead to unsound code](https://github.com/rust-lang/rust/issues/48686)! Some examples:

    ```rust
    // Lint will warn about these
    fn(v: ContainsLifetime) -> ContainsLifetime<'_>;
    fn(&'static u8) -> &u8;
    ```

- Matching up references with no lifetime syntax, references with anonymous lifetime syntax, and paths with anonymous lifetime syntax is an exception to the simplest possible rule:

    ```rust
    // Lint will not warn about these
    fn(&u8) -> &'_ u8;
    fn(&'_ u8) -> &u8;
    fn(&u8) -> ContainsLifetime<'_>;
    ```

- Having a lint for consistent syntax of elided lifetimes will make the [future goal](https://github.com/rust-lang/rust/issues/91639) of warning-by-default for paths participating in elision much simpler.

---

This new lint attempts to accomplish the goal of enforcing consistent syntax. In the process, it supersedes and replaces the existing `elided-named-lifetimes` lint, which means it starts out life as warn-by-default.
2025-06-05 19:49:30 +00:00
..
bootstrap Auto merge of #142081 - matthiaskrgr:rollup-secpezz, r=matthiaskrgr 2025-06-05 16:46:32 +00:00
build_helper Add some new solver to PGO 2025-05-31 09:54:28 +00:00
ci Rollup merge of #141777 - Kobzol:dist-linux-alt-no-pgo-bolt, r=marcoieni 2025-06-05 12:21:30 +02:00
doc Rollup merge of #141970 - onur-ozkan:skip-stage1-std, r=Kobzol 2025-06-05 12:21:34 +02:00
etc Rollup merge of #141970 - onur-ozkan:skip-stage1-std, r=Kobzol 2025-06-05 12:21:34 +02:00
gcc@04ce66d8c9 Update src/gcc submodule to 04ce66d8c918de9273bd7101638ad8724edf5e21 2025-05-14 18:02:02 +02:00
librustdoc Rollup merge of #141968 - oli-obk:wfck-everything-at-once, r=wesleywiser 2025-06-04 19:50:22 +02:00
llvm-project@c1118fdbb3 Update to LLVM 20.1.5 2025-05-16 08:34:16 +08:00
rustc-std-workspace update rustc-std-workspace crates 2024-11-04 07:45:15 +01:00
rustdoc-json-types rustdoc-json-type: Depend on serde and serde_derive seperately 2025-06-03 21:17:33 +00:00
tools Auto merge of #138677 - shepmaster:consistent-elided-lifetime-syntax, r=traviscross,jieyouxu 2025-06-05 19:49:30 +00:00
README.md
stage0 Bump master stage0 compiler 2025-05-27 20:36:00 +08:00
version bump version number to 1.89.0 2025-05-09 11:13:08 +02:00

This directory contains some source code for the Rust project, including:

  • The bootstrapping build system
  • Various submodules for tools, like cargo, tidy, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.