Rust Search

Find the best content on Rust, curated by the community; a search engine for Rustaceans.
blog.logrocket.com
...Understanding match in Rust Feel free to skip to the next section if you already understand pattern matching. Before exploring how that’s even possible, let’s understand Rust’s idea of pattern matching. Here’s a scenario: A hungry customer asks for a meal from our Korean street food...
Rust Walkthroughs 2021-07-28 ~11 min read
rust-lang.github.io
...i32 = match some_bool { true => 23, false => panic!("aaah!"), // an expression of type `!`, gets cast to `i32` } match break { () => 23, // matching with a `()` forces the match argument to be cast to type `()` } These casts can be implemented by having the compiler assign a fresh, diverging type variable to any expression...
Updates from Rust Core 2018-03-20 ~12 min read
docs.rs
...u32 = match <u32 as TryFrom<u8>>::try_from(42) { | Ok(it) => it, | Err(unreachable) => unreachable, // Error, expected `u32`, found `Infallible` }; but the following doesn't! use ::never_say_never::Never; let x: u32 = match Ok::<_, Never>(42) { | Ok(it) => it, | Err(unreachable) => unreachable, };
Crate v6.6.666 2022-01-19
github.com
...i32 = match some_bool { true => 23, false => panic!("aaah!"), // an expression of type `!`, gets cast to `i32` } match break { () => 23, // matching with a `()` forces the match argument to be cast to type `()` } ``` These casts can be implemented by having the compiler assign a fresh, diverging type variable to any expression...
RFC 1216 RFC 2015-07-19 ~13 min read
apanatshka.github.io
...Debug; fn start_state() -> Self::State; fn next_state(&self, state: &Self::State, input: &Input) -> Self::State; fn get_match(&self, state: &Self::State, text_offset: usize) -> Option<Match<Payload>>; fn find<'i, 'a>(&'a self, s: &'i [Input]) -> Matches<'i, 'a, Input, Payload, Self> where Self: Sized { Matches { aut...
News & Blog Posts 2016-10-04 ~11 min read
github.com
...Some libraries (like Python's `re` and RE2/C++) distinguish between matching an expression against an entire string and matching an expression against part of the string. My implementation favors simplicity: matching the entirety of a string requires using the `^` and/or `$` anchors. In all cases, an implicit `.*?` is added...
RFC 42 RFC 2014-04-12 ~9 min read
e003: No. more. nulls.
16:51
New Rustacean newrustacean.com
No More Nulls Subject: Enumerated (enum) types, pattern matching, and meaningful return types. Notes Today’s episode discusses, in order: Enumerated types, with an eye to the difference between structs and enums, and to...
Podcast 2015-10-21 16:51
blog.ezyang.com
...When match is involved, you can usually arrange for the misbehaving borrow to be performed outside of the match statement, in a new, non-overlapping lexical scope. This is easy when the relevant branch does not rely on any variables from the pattern-match by using short-circuiting control operators...
Announcements, etc 2013-12-22 ~8 min read
doc.rust-lang.org
...The second arm of the outer match stays the same, so the program panics on any error besides the missing file error. Alternatives to Using match with Result<T, E> That’s a lot of match! The match expression is very useful but also very much a primitive. In Chapter...
The Rust Programming Language Book 2024-02-01 ~18 min read
doc.rust-lang.org
...io::Result<()> { match OpenOptions::new().create(true).write(true).open(path) { Ok(_) => Ok(()), Err(e) => Err(e), } } fn main() { println!("`mkdir a`"); // Create a directory, returns `io::Result<()>` match fs::create_dir("a") { Err(why) => println!("! {:?}", why.kind()), Ok(_) => {}, } println!("`echo hello > a/b.txt`"); // The previous match can be...
Rust by Example Book 2024-01-01 ~2 min read
docs.rs
...use croner::Cron; use chrono::Local; fn main() { // Parse cron expression let cron_all = Cron::from_str("18 * * * 5") .expect("Couldn't parse cron string"); // Compare cron pattern with current local time let time = Local::now(); let matches_all = cron_all.is_time_matching(&time).unwrap(); // Get next match let...
Crate v3.0.1 2025-10-27
gruebelinchen.wordpress.com
...It uses a placeholder, which we call ActualT, to specify the type of the value being matched. Rust provides two ways to express this. One can define a generic trait with a type parameter: 123trait Matcher<ActualT> {    fn matches(&self, actual: &ActualT) -> bool;} Or one can add an associated type...
Observations/Thoughts 2023-06-07 ~7 min read
andygrove.io
...However, we still have to pattern match for dynamic behavior at runtime. We can’t pattern match on the BufferArrayData itself but instead have to pattern match on the separate type metadata. fn add(a: &ArrayData, a_type: DataType, b: &ArrayData, b_type: DataType) -> Rc<ArrayData> { match (a_type, b...
News & Blog Posts 2018-05-08 ~5 min read
saghm.github.io
...2, ..Default::default() }; Pattern match guards Sometimes when pattern matching, the cases you want to handle don’t map exactly to the patterns of the data you’re matching on. For instance, you might write some code like this: fn divide_opt(x: Option<i32>, y: Option<i32>) -> Option<i32...
News & Blog Posts 2019-04-02 ~3 min read
doc.rust-lang.org
...f64) -> f64 { // This is a three level match pyramid! match checked::div(x, y) { Err(why) => panic!("{:?}", why), Ok(ratio) => match checked::ln(ratio) { Err(why) => panic!("{:?}", why), Ok(ln) => match checked::sqrt(ln) { Err(why) => panic!("{:?}", why), Ok(sqrt) => sqrt, }, }, } } fn main() { // Will this fail? println!("{}", op(1.0...
Rust by Example Book 2024-01-01 ~1 min read
doc.rust-lang.org
tuples Tuples can be destructured in a match as follows: fn main() { let triple = (0, -2, 3); // TODO ^ Try different values for `triple` println!("Tell me about {:?}", triple); // Match can be used to destructure a tuple match triple { // Destructure the second and third elements (0, y, z) => println!("First is...
Rust by Example Book 2024-01-01 ~1 min read
erickt.github.io
...Consider what happens with matches. Consider: 1 2 3 4 match ... { x => { ... } y => { ... } } Is x or y a variable, or a variant? There’s no way to know unless you perform name resolution, otherwise known as the resolve pass in the compiler. Unfortunately though, there’s no way for Stateful...
News & Blog Posts 2016-02-08 ~10 min read
doc.rust-lang.org
use
...let role = Student; match stage { // Note the lack of scoping because of the explicit `use` above. Beginner => println!("Beginners are starting their learning journey!"), Advanced => println!("Advanced learners are mastering their subjects..."), } match role { // Note again the lack of scoping. Student => println!("Students are acquiring knowledge!"), Teacher => println!("Teachers are...
Rust by Example Book 2024-01-01 ~1 min read
smallcultfollowing.com
...The innermost expression that encloses both of these expressions is the match itself (as depicted above), and hence the borrow is considered to extend until the end of the match. Unfortunately, the match encloses not only the Some branch, but also the None branch, and hence when we go to...
News & Blog Posts 2016-05-09 ~9 min read
docs.rs
...String) -> Result<i32, exitcode::ExitCode> { match s.parse::<i32>() { Ok(i) => Ok(i), Err(_) => Err(exitcode::USAGE) } } pub fn main() { match parse_int_or_return_error_exitcode("123".to_string()) { Ok(i) => println!("Parsed: {}", i), Err(code) => { println!("Parse error. Exiting with code: {}", code); process::exit(code); } } match parse_int...
Crate v1.1.2 2017-06-18
"Congrats to the #Rustlang and #Rust-for-#Linux community: the #LinuxKernel now contains the first useful thing built using Rust!"

Search tips

Type anything to search across articles, videos (including conference talks), podcasts, research, crates, and Rust API documentation. These operators give you finer control — click an example to try it.

Find pages containing all your words. Pages where the words appear together rank higher.
Quote part of your query to keep those words together as an exact phrase within a larger search.
Wrap the whole query in quotes for a verbatim search that matches text exactly, punctuation and all — perfect for Rust syntax. Needs at least 3 characters.
Limit results to a single site. Works on its own () too. One site: per search.

Use the tabs and filters above the results to narrow by content type, publication year, and sort order.