Go to file
Matthias Krüger 0b7f0ff230
Rollup merge of #117614 - RalfJung:static-mut-refs, r=davidtwco,oli-obk
static mut: allow mutable reference to arbitrary types, not just slices and arrays

For historical reasons, we allow this:
```rust
static mut ARRAY: &'static mut [isize] = &mut [1];
```
However, we do not allow this:
```rust
static mut INT: &'static mut isize = &mut 1;
```

I think that's terribly inconsistent. I don't care much for `static mut`, but we have to keep it around for backwards compatibility and so we have to keep supporting it properly in the compiler. In recent refactors of how we deal with mutability of data in `static` and `const`, I almost made a fatal mistake since I tested `static mut INT: &'static mut isize = &mut 1` and concluded that we don't allow such `'static` mutable references even inside `static mut`. After all, nobody would expect this to be allowed only for arrays and slices, right?!?? So for the sake of our own sanity, and of whoever else reverse engineers these rules in the future to understand what the Rust compiler accepts or does not accept, I propose that we accept this for all types, not just arrays and slices.
2024-02-10 13:12:28 +01:00
.github Use new publicly-available M1 runners 2024-02-04 13:52:05 -05:00
.reuse Rollup merge of #119189 - henrispriet:move-installing-from-source, r=Mark-Simulacrum 2024-01-13 22:35:08 +01:00
LICENSES Add missing CC-BY-SA-4.0. 2023-11-27 11:03:53 +00:00
compiler Rollup merge of #117614 - RalfJung:static-mut-refs, r=davidtwco,oli-obk 2024-02-10 13:12:28 +01:00
library Auto merge of #120712 - compiler-errors:async-closures-harmonize, r=oli-obk 2024-02-10 07:15:15 +00:00
src Auto merge of #120721 - onur-ozkan:incorrect-llvm-path-on-cross-target, r=albertlarsan68 2024-02-10 04:12:51 +00:00
tests Rollup merge of #117614 - RalfJung:static-mut-refs, r=davidtwco,oli-obk 2024-02-10 13:12:28 +01:00
.editorconfig Only use max_line_length = 100 for *.rs 2023-07-10 15:18:36 -07:00
.git-blame-ignore-revs Ignore let-chains formatting 2023-10-15 18:30:34 +00:00
.gitattributes Rename `config.toml.example` to `config.example.toml` 2023-03-11 14:10:00 -08:00
.gitignore don't globally ignore rustc-ice files 2023-09-16 09:44:44 +02:00
.gitmodules Update to LLVM 17.0.6 2023-12-14 09:54:14 +01:00
.mailmap correct my mailmap entry 2024-01-21 20:47:26 -05:00
CODE_OF_CONDUCT.md Remove the code of conduct; instead link https://www.rust-lang.org/conduct.html 2019-10-05 22:55:19 +02:00
CONTRIBUTING.md fix: Update CONTRIBUTING.md recommend -> recommended 2023-11-16 23:57:09 +05:30
COPYRIGHT Update COPYRIGHT file 2022-10-30 10:23:14 -04:00
Cargo.lock Rollup merge of #120846 - petrochenkov:jobs, r=oli-obk 2024-02-10 00:58:38 +01:00
Cargo.toml Bump Clippy version -> 0.1.78 2024-02-08 19:13:40 +01:00
INSTALL.md Move section "Installing from Source" to seperate file 2024-01-13 17:22:55 +01:00
LICENSE-APACHE Remove appendix from LICENCE-APACHE 2019-12-30 14:25:53 +00:00
LICENSE-MIT LICENSE-MIT: Remove inaccurate (misattributed) copyright notice 2017-07-26 16:51:58 -07:00
README.md Update Readme 2024-01-15 13:57:29 -08:00
RELEASES.md Remove duplicate release note 2024-02-09 12:31:32 -05:00
config.example.toml add a new `optimized_compiler_builtins` option 2024-01-07 13:04:40 +03:00
configure Enforce Python 3 as much as possible 2020-04-10 09:09:58 -04:00
rust-bors.toml Add integration for new bors 2023-09-28 10:43:24 +02:00
rustfmt.toml rustfmt.toml: don't ignore just any `tests` path, only root one 2024-01-11 14:59:59 +03:00
triagebot.toml Remove myself from review rotation. 2024-02-08 11:06:02 +01:00
x Make x capable of resolving symlinks 2023-10-14 17:53:33 +03:00
x.ps1 use `&` instead of start-process in x.ps1 2023-12-09 09:46:16 -05:00
x.py Fix recent python linting errors 2023-08-02 04:40:28 -04:00

README.md

The Rust Programming Language

Rust Community

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Note: this README is for users rather than contributors. If you wish to contribute to the compiler, you should read CONTRIBUTING.md instead.

Table of Contents

Quick Start

Read "Installation" from The Book.

Installing from Source

If you really want to install from source (though this is not recommended), see INSTALL.md.

Getting Help

See https://www.rust-lang.org/community for a list of chat platforms and forums.

Contributing

See CONTRIBUTING.md.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

Trademark

The Rust Foundation owns and protects the Rust and Cargo trademarks and logos (the "Rust Trademarks").

If you want to use these names or brands, please read the media guide.

Third-party logos may be subject to third-party copyrights and trademarks. See Licenses for details.