diff --git a/content/what-do-people-love-about-rust.md b/content/what-do-people-love-about-rust.md index af6bbe6f5..4b7495aac 100644 --- a/content/what-do-people-love-about-rust.md +++ b/content/what-do-people-love-about-rust.md @@ -192,7 +192,7 @@ This "goldilocks" framing helps people recognize where they are and course-corre We recommend **doubling down on extensibility** as a core strategy. Rust's extensibility — traits, macros, operator overloading — has been key to its versatility. But that extensibility is currently concentrated in certain areas: the type system and early-stage proc macros. We should expand it to cover **supportive interfaces** (better diagnostics and guidance from crates) and **compilation workflow** (letting crates integrate at more stages of the build process). -Rust's extensibility is a big part of how Rust achieves versatility, and that versatility is a big part of what people love about Rust. Leveraging mechanisms like proc macros, the trait system, and the borrow checker, Rust crates are able to expose high-level, elegant interfaces that compile down to efficiemt machine code. At its best, it can feel a bit like magic. +Rust's extensibility is a big part of how Rust achieves versatility, and that versatility is a big part of what people love about Rust. Leveraging mechanisms like proc macros, the trait system, and the borrow checker, Rust crates are able to expose high-level, elegant interfaces that compile down to efficient machine code. At its best, it can feel a bit like magic. Unfortunately, while Rust gives crates good tools for building safe, efficient abstractions, we don't provide tools to enable **supportive** ones. Within builtin Rust language concepts, we have worked hard to create effective error messages that help steer users to success; we ship the compiler with lints that catch common mistakes or enforce important conventions. But crates benefit from none of this. RFCs like [RFC #3368](https://rust-lang.github.io/rfcs/3368-diagnostic-attribute-namespace.html), which introduced the diagnostic namespace and `#[diagnostic::on_unimplemented]`, Rust has already begun moving in this direction. We should continue and look for opportunities to go further, particularly for proc-macros which often create DSL-like interfaces. @@ -216,4 +216,4 @@ To sum up the main points in this post: * We make three recommendations to help Rust continue to scale across domains and usage levels * Enumerate and describe Rust's design goals and integrate them into our processes, helping to ensure they are observed by future language designers and the broader ecosystem. * Double down on extensibility, introducing the ability for crates to influence the develop experience and the compilation pipeline. - * Help users to navigate the crates.io ecosystem and enable smoother interop \ No newline at end of file + * Help users to navigate the crates.io ecosystem and enable smoother interop