I imagine this is going to break a lot of existing code. There doesn't even seem to be a way to have {x} mean the same thing in 1.57 and 1.58
I imagine this is going to break a lot of existing code. There doesn't even seem to be a way to have {x} mean the same thing in 1.57 and 1.58
Additionally, new releases are frequently tested with a tool called Crater, which basically builds and runs the tests for all publicly available Rust code. This helps massively in upholding backwards compatibility guarantees and in evaluating if a compatibility break is worth it.
But how would you print {x} in 1.57? I doubt you would escape it with {{ in that release. Maybe \{ then? Does that still work in 1.58?
This still smells fishy to me, but I need to dig deeper.
You would. Brackets were still escaping in that release because you would of course still do `println!("{}", x);`
pub fn main() {
let y = 4;
println!("{x}", x=y);
}
To print '{x}', you need to write: pub fn main() {
let x = 4; // unused
println!("{{x}}");
} pub fn main() {
let x = 4; // unused
println!("{x}");
}
would previously be a compile time error (because the format! family of macros perform string interpolation at compile time): error: there is no argument named `x`
--> <source>:3:15
|
3 | println!("{x}");
| ^^^
So no new existing code will stop compiling, some things that were previously compile errors will now work.