doc.rust-lang.org
...match operand.into_future() {
mut pinned => loop {
let mut pin = unsafe { Pin::new_unchecked(&mut pinned) };
match Pin::future::poll(Pin::borrow(&mut pin), &mut current_context) {
Poll::Ready(r) => break r,
Poll::Pending => yield Poll::Pending,
}
}
}
where the yield pseudo-code returns Poll::Pending and, when re-invoked, resumes...
The Rust Reference
Book
2024-01-01
~1 min read
radekmie.dev
...It’d look like this:// The below code is just a simplification -- it may not compile!
impl<Id> Expression<Id> {
fn add_casts(&self, type_: &Type<Id>) -> Result<Self, Error<Id>> {
let mut clone = match self {
Self::Access { lhs, rhs } => {
let lhs_type = lhs.infer()?;
let Type::Arrow { lhs: key...
Observations/Thoughts
2024-04-03
~4 min read
rust-lang.github.io
...Unresolved questions
The behavior specified here should match the behavior of MSVC at least. Does
it match the behavior of other C/C++ compilers as well?
Should it still be safe to borrow fields whose alignment is less than or equal
to the specified packing or should all field borrows...
Updates from Rust Core
2018-04-17
~3 min read
www.fpcomplete.com
...This function is all about pattern matching and unifying the error representation using .into():
fn poll_ready(
&mut self,
cx: &mut std::task::Context<'_>,
) -> std::task::Poll<Result<(), Self::Error>> {
match self.web.poll_ready(cx) {
Poll::Ready(Ok(())) => match self.grpc.poll_ready(cx) {
Poll::Ready(Ok(())) => Poll::Ready...
Rust Walkthroughs
2021-09-22
~11 min read
rustc-dev-guide.rust-lang.org
...The subroutines that decide whether a particular impl/where-clause/etc applies to a particular obligation are collectively referred to as the process of matching. For impl candidates , this amounts to unifying the impl header (the Self type and the trait arguments) while ignoring nested obligations. If matching succeeds then...
Guide to Rustc Development
Book
2024-01-01
~7 min read
tech.nextroll.com
...For your sanity, the match statement in this function is shortened for this example. fn recurse(stmt: &Statement, errors: &mut Vec<String>, mut is_global: bool) {
let mut allow_vars = true;
if is_global {
is_global = false;
allow_vars = false;
}
match stmt {
Statement::FunctionDeclaration(func) => match func {
FunctionDeclarationStat::Local { body...
Rust Walkthroughs
2022-07-13
~4 min read
rustacean-station.org
...16:09 - matches!
Macro documentation
Jon proposes assert_matches
18:13 - Error::description deprecation
RFC
Soft deprecation in 1.27
failure
thiserror
anyhow
eyre
Jane expermenting with track_caller in eyre
24:23 - Other changes in 1.42
Documentation improvements to cargo
26:47 - Rust 1.43
27:17 - item...
News & Blog Posts
2020-05-19
~1 min read
www.ncameron.org
...Changes to rules around temporary lifetimes for if let and the last expression in a block (2024).No need for pattern matching branches for impossible variants (e.g, using ! or Infallible) (1.82).Restrictions on using explicit referencing in patterns with match ergonomics (2024).Standard libraryLazyCell and LazyLock, alternatives to...
Observations/Thoughts
2025-10-29
~3 min read
blog.logrocket.com
...fn main() {
let args = Arguments::parse();
let logger = logger::DummyLogger::new(args.verbosity as usize);
match args.cmd {
SubCommand::Count { package_name } => match count(&package_name, args.max_depth, &logger) {
Ok(c) => println!("{} uses found", c),
Err(e) => eprintln!("error in processing : {}", e),
},
SubCommand::Projects {
start_path,
exclude,
} => match projects...
Rust Walkthroughs
2022-04-20
~23 min read
thedataquarry.com
...The key difference
here is how we use a match statement to replace multiple patterns using a single closure.
The &capture[2] syntax is used to access the second capture group in the regex match, which is the
suffix of the contraction, and this is then passed to the match...
Rust Walkthroughs
2024-02-14
~19 min read
adventures.michaelfbryan.com
...Clear) -> Self::Response {
self.ticks.clear();
Ack::new()
}
}
We can now add the match arm to our Router’s handle_message() method.
// sim/src/router.rs
use fps_counter::Clear;
impl<'a> MessageHandler for Router<'a> {
fn handle_message(&mut self, msg: &Packet) -> Result<Packet, CommsError> {
match msg.id() {
1...
News & Blog Posts
2019-10-15
~9 min read
tech.stonecharioteer.com
...When the responding IP matches our target, we’ve reached the destination
and break out.
This needs sudo to run because of the raw ICMP socket.
1
2
3
4
5
6
7
8
9
10
11
$ sudo cargo run
1 <tailscale-ip>
2 <router-ip>
3 <isp-gateway-ip...
Rust Walkthroughs
2026-04-15
~16 min read
siciarz.net
...ReplyEntry) {
println!("lookup(parent={}, name={})", parent, name.display());
let inode = match self.inodes.get(name.as_str().unwrap()) {
Some(inode) => inode,
None => {
reply.error(ENOENT);
return;
},
};
match self.attrs.get(inode) {
Some(attr) => {
let ttl = Timespec::new(1, 0);
reply.entry(&ttl, attr, 0);
},
None => reply.error(ENOENT),
};
}
This method...
24 Days of Rust continues!
2014-12-22
~4 min read
github.com
...When combined with `#[repr(C)]` the size alignment and layout of the struct
should match the equivalent struct in C.
`#[repr(packed)]` and `#[repr(packed = "1")]` should have identical behavior.
Because this lowers the effective alignment of fields in the same way that
`#[repr(packed)]` does (which caused [issue #27060...
RFC 1399
RFC
2015-12-06
~3 min read
blog.sheerluck.dev
...The router receives the request and efficiently matches the request path against the registered routes. The pattern /{code} matches /abc12345, captures the path segment, verifies the HTTP method is GET, and selects the redirect handler.
Handler extraction: Before calling redirect, Axum runs the extractors. State<AppState> clones the Arc (cheap...
Rust Walkthroughs
2026-07-08
~20 min read
code.visualstudio.com
...implicit declaration of function ‘prinft’ [-Wimplicit-function-declaration]
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
// The first match group matches the file name which is relative.
"file": 1,
// The second match group matches the line on which the problem occurred.
"line": 2,
// The third match group matches the column at...
News & Blog Posts
2017-04-11
~21 min read
blog.sylver.dev
...0,
}
}
pub fn next_record(&mut self) -> Option<anyhow::Result<Cursor>> {
let page = match self.pager.read_page(self.page) {
Ok(page) => page,
Err(e) => return Some(Err(e)),
};
match page {
Page::TableLeaf(leaf) => {
let cell = leaf.cells.get(self.cell)?;
let header = match parse_record_header(&cell.payload) {
Ok...
Rust Walkthroughs
2024-07-24
~13 min read
blog.thomasheartman.com
...nested OR-patterns and trait aliases.Nested OR-patternsThis was mentioned as an upcoming feature in the post Recent and future pattern matching improvements from the Inside Rust Blog in March. In short, it allows you to nest patterns when pattern matching.Imagine you have an Option<u8> and you...
Call for Blog Posts
2020-09-30
~4 min read
epage.github.io
...Spawn Failed
Assertion Failed
Status (success / failure) Failed
Exit Code Failed
Output
Strings matched when shouldn't
Strings matched when should
Bytes matched when shouldn't
Bytes matched when should
Sub-strings matched when shouldn't
Sub-strings matched when should
Byte subset matched when shouldn't
Byte subset matched...
News & Blog Posts
2018-03-13
~10 min read
blog.jonaylor.xyz
...Lazy<RegexSet> = Lazy::new(|| {
RegexSet::new(RULES.iter().map(|&(_, regex)| regex))
.expect("All regexes should be valid")
});
let matches = REGEX_SET.matches(blob);
if !matches.matched_any() {
return None;
}
Some(matches.iter().map(|i| RULES[i].0).collect())
}
And with the find_secrets() function done, we can go ahead and...
Rust Walkthroughs
2021-11-10
~9 min read