rfcs
rfcs copied to clipboard
RFCs for changes to Rust
We have `From` for infallible, `TryFrom` for checked, and this proposes `WrappingFrom` for modular conversions. [Rendered](https://github.com/scottmcm/rfcs/blob/wrapping-from/text/3703-wrapping-from.md)
## What is this? Recently, a series of blog posts were published by withoutboats[^1][^2] as well as Olivier Faure[^3] discussing some existing problems with the ergonomics of the `std::pin::Pin` API,...
Right now, the keyword [`use`](https://doc.rust-lang.org/reference/items/use-declarations.html) in [modules and block expressions](https://doc.rust-lang.org/reference/items/use-declarations.html#:~:text=may%20appear%20in%20modules%20and%20blocks%2C) is reserved for including modules, crates, external sources and the use of it is fairly simply. An unsuccessful proposal to...
This adds `resolver.feature-unification` to `.cargo/config.toml` to allow workspace unfication (cargo-workspace-hack) or per-package unification (`cargo hack`). [Rendered](https://github.com/epage/rfcs/blob/feature-unification/text/3692-feature-unification.md)
This RFC proposes a feature to provide a guarantee that function calls are tail-call eliminated via the `become` keyword. If this guarantee can not be provided an error is generated...
Many crates provide attribute macros. Today, this requires defining proc macros, in a separate crate, typically with several additional dependencies adding substantial compilation time, and typically guarded by a feature...
[Rendered](https://github.com/tgross35/rfcs/blob/const-fn-in-trait/text/0000-const-fn-in-trait.md) This RFC allows marking methods in traits as `const`. ```rust trait Foo { const fn bar(a: i32) -> i32; } impl Foo for MyStruct { // Implementation must provide...
unsafe keyword is only valid this way: `unsafe { unsafe_function() }` but it cloud be more better if unsafe cloud be written this way: `unsafe unsafe_function()` - it can make...
This is something that threw me off years ago when I spent more time than I'd care to admit looking for a `Collection::take()` when it was actually named `Collection::remove()`, more...
Afaik the shortest way to get the metadata of a raw fd is ```rust let f = unsafe { File::from_raw_fd(fd) }; let metadata = f.metadata(); mem::forget(f); ``` There should be...