this post was submitted on 20 Feb 2025
84 points (100.0% liked)

Rust

6403 readers
22 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 15 points 2 days ago (2 children)

For anyone like me who hasn't seen an edition change before, it's just a mechanism for bundling breaking changes together and making them opt-in.

We are excited to announce that the Rust 2024 Edition is now stable! Editions are a mechanism for opt-in changes that may otherwise pose a backwards compatibility risk.

[–] [email protected] 5 points 2 days ago (1 children)

@Rogue @snaggen Yeah, it's a setting in Cargo.toml that you have to update manually if you want to upgrade. It is set to latest edition in new projects. And the nice thing:

it's configurable per-crate, not per-compilation. So you can depend on crates that use different editions than your crate. Which avoids ecosystem fragmentation.

[–] [email protected] 1 points 2 days ago (1 children)

it's configurable per-crate, not per-compilation. So you can depend on crates that use different editions than your crate. Which avoids ecosystem fragmentation.

Thanks! That pre-empted my next question of how quickly crates typically update to newer editions. I guess it doesn't matter

[–] [email protected] 1 points 1 day ago

There is also cargo fix --edition which can update your code in a very conservative way automatically. The result might not be as idiomatic but errs on the side of having semantics that do not change.

[–] [email protected] 1 points 2 days ago

You can think of the Rust Editions as updates to the language, that would break compatibility with previous versions. But the key here is, that you can mix crates with older versions and the new one in one project and cargo will figure out which one to use for each crate (based on the cargo.toml file). That means breaking changes without breaking compatibility of existing libraries and crates, unlike in other languages.