Rust: Devblog 261

cargo script script.rs Add #!/usr/bin/env cargo-script shebang and chmod +x for executable scripts. 4. Standard library: integer::is_multiple_of What’s new: New method is_multiple_of on integer types.

If you use #![deny(clippy::pedantic)] or custom lints, they are now more predictable.

#!/usr/bin/env cargo-script //! ```cargo //! [dependencies] //! regex = "1.10" //! anyhow = "1.0" //! ``` use regex::Regex; use anyhow::Result;

error: This usage is invalid --> src/main.rs:3:1 | 3 | my_macro!(bar); | ^^^^^^^^^^^^^^ help: Try using `foo` instead of `bar` Use span methods to point exactly at the problematic token. 2. Lint stability: #[stable] for lints What’s new: Lints can now be marked stable, meaning they won’t change behavior without an edition bump. rust devblog 261

Temporarily building an older crate that declares rust-version = "1.80" while you’re on 1.75 .

let x = 42u32; assert!(x.is_multiple_of(7)); assert!(!x.is_multiple_of(5)); Avoids division by zero — it’s a panic (same as % ). 5. Cargo: --ignore-rust-version flag What’s new: Build crates even if they require a newer Rust version than your current toolchain.

fn main() -> Result<()> let re = Regex::new(r"\d+")?; println!("Found numbers: :?", re.find_all("a1 b2 c3")); Ok(()) cargo script script

Here’s a practical guide covering the key updates from (released February 2025). The focus is on the new proc macro changes , lint stability , cargo script improvements , and standard library additions . Rust Devblog 261 Guide: New Macros, Lints, and Cargo Script 1. Procedural Macros: #[diagnostic] namespace What’s new: You can now emit custom compiler diagnostics from proc macros using the #[diagnostic] attribute.

Better error messages for your macro users.

if n.is_multiple_of(7) ...

if n % 7 == 0 ...

// In your proc macro #[proc_macro] pub fn my_macro(input: TokenStream) -> TokenStream let diag = Diagnostic::new(Severity::Error, "This usage is invalid") .help("Try using `foo` instead of `bar`") .emit(); // ...