Rust 1.58 was just released (rust releases new version every 6 weeks). The only feature relevant to competitive programming is this:
Captured identifiers in format strings
Format strings can now capture arguments simply by writing {ident} in the string. Formats have long accepted positional arguments (optionally by index) and named arguments, for example:
println!("Hello, {}!", get_person()); // implicit position
println!("Hello, {0}!", get_person()); // explicit index
println!("Hello, {person}!", person = get_person()); // named
Now named arguments can also be captured from the surrounding scope, like:
let person = get_person();
// ...
println!("Hello, {person}!"); // captures the local `person`
This may also be used in formatting parameters:
let (width, precision) = get_format();
for (name, score) in get_scores() {
println!("{name}: {score:width$.precision$}");
}
Format strings can only capture plain identifiers, not arbitrary paths or expressions. For more complicated arguments, either assign them to a local name first, or use the older name = expression style of formatting arguments.
This feature works in all macros accepting format strings. However, one corner case is the panic! macro in 2015 and 2018 editions, where panic!("{ident}") is still treated as an unformatted string -- the compiler will warn about this not having the intended effect. Due to the 2021 edition's update of panic macros for improved consistency, this works as expected in 2021 panic!.








Nice to hear!
Waited for it!
I would surely love to see something like "Rust Heroes" contest on Codeforces (similar to "Kotlin Heroes"). And I wonder about how many participants would it be able to realistically attract.
I wish we can get
RUST_BOOTSTRAP=1in compile command for rust. So we can enjoy the nightly features ;)Try it here
Thanks