Rust’s ownership rules
1. Every value in Rust must have a single owner
2. A value can have any number of immutable references
3. You can only create a single mutable reference to a value
4. If there’s a mutable reference to a value, you cannot have an immutable reference to it
Rust is re-defining Infrastructure engineering. We're seeing the foundations of our tools and services get refactored to it, from CLI to Cloud.
Very excited about resources like @rustforjsdev that make it more accessible to everyone!
It’s exciting how much of modern JavaScript tooling is adopting Rust!
There’s swc, turbopack, turborepo rewrite (nice work @vercel friends), the new parcel CSS compiler and now the new Tailwind compiler.
It’s great to see.
I'm beyond excited to announce that CodeSandbox now has support for the most loved language... @rustlang!! 🦀🦀
Start a new Rust VM in 2 seconds, with:
📦 crates.io support
🦀 @rust_analyzer autocomplete
💡 code actions
💅 auto-formatting
codesandbox.io/blog/announci…
It’s exciting how much of modern JavaScript tooling is adopting Rust!
There’s swc, turbopack, turborepo rewrite (nice work @vercel friends), the new parcel CSS compiler and now the new Tailwind compiler.
It’s great to see.
Whipped up a tiny abstraction to make it easier to run the Tailwind test suite against both our stable engine and the new Rust stuff... Couldn't resist the name 🏒🥅
Getting the finishing touches in on the Building an API server module.
We’re going to build an API that runs on @flydotio and persists answers to Postgres for quiz questions for the course.
Coming next week!
In Rust, it is possible to force-ably allocate values on the heap using the Box type, here is an example of an i32 value allocated on the heap.
age is now a pointer to a heap allocated i32.
Rust lets you iterate through something iterable using an Iterator. Here's an example of filtering an array for even numbers.
We create an Iterator from our array using into_iter in this case, a version of iter that moves ownership of each value into our closure.
ALT fn main() {
let x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let y: Vec<i32> = x.into_iter().filter(|a| a % 2 == 0).collect();
println!("{:?}", y); // [2, 4, 6, 8, 10]
}
In Rust, unwrap is a quick and easy way to get a Some value from within an Option when you know for sure that a value is present (because it will panic if the Option is None)
unwrap is fine for code in development or tests but for production, you should probably be calling unwrap_or which lets you set a default for when the value is None instead of panicking!
I'm quite happy with how search turned out for @rustforjsdev
It's fully accessible, works with Command K as well and is fast as hell
Shipping this to production now
In Rust, Option<Box<T>> uses the same memory layout as Box<T>, e.g. Option takes no space. The Rust compiler knows that pointers cannot be null, so uses the null bit pattern to encode None.
Today we are excited to talk about Pingora, a new HTTP proxy we’ve built in-house using Rust that serves over 1 trillion requests a day, boosts our performance, and enables many new features for Cloudflare customers. Read all the details: cfl.re/3qHoIb3