Rust Borrowing Quick Reference Cheat Sheet
Key Takeaways
- โKeep this Rust Borrowing reference handy for quick syntax lookups
- โFocus on idiomatic Rust patterns rather than porting habits from other languages
- โPractice common patterns until they become muscle memory
- โRefer to advanced sections as specific needs arise in your projects
Rust Borrowing Essential Syntax
// Immutable references (multiple OK)
let s = String::from("hello");
let r1 = &s;
let r2 = &s; // OK
// Mutable reference (exclusive)
let mut s = String::from("hello");
let r = &mut s;
r.push_str(" world");
// Cannot mix mut and immut refs
// let r1 = &s; let r2 = &mut s; // ERRORRust Borrowing Common Patterns
// Pattern matching with Result
match result {
Ok(val) => println!("Success: {}", val),
Err(e) => eprintln!("Error: {}", e),
}
// if let for single pattern
if let Some(val) = optional {
println!("{}", val);
}
// Iterator chains
let sum: i32 = vec![1, 2, 3, 4, 5]
.iter()
.filter(|&&x| x > 2)
.map(|&x| x * x)
.sum();Think Your Code Is Clean? Let NexusBro QA It in 20 Seconds.
Paste your code. Click QA. Get an instant expert-level audit with fixes.
QA My Code FreeRust Borrowing Error Handling Patterns
// Custom error type
#[derive(Debug)]
enum AppError {
NotFound(String),
Database(sqlx::Error),
Validation(String),
}
impl From<sqlx::Error> for AppError {
fn from(e: sqlx::Error) -> Self {
AppError::Database(e)
}
}
// Using thiserror crate
#[derive(thiserror::Error, Debug)]
enum AppError {
#[error("not found: {0}")]
NotFound(String),
}Rust Borrowing Type System Usage
// Generic function
fn largest<T: PartialOrd>(list: &[T]) -> &T {
let mut largest = &list[0];
for item in &list[1..] {
if item > largest { largest = item; }
}
largest
}
// Enum variants as types
enum Shape {
Circle(f64),
Rectangle(f64, f64),
}
impl Shape {
fn area(&self) -> f64 {
match self {
Shape::Circle(r) => std::f64::consts::PI * r * r,
Shape::Rectangle(w, h) => w * h,
}
}
}Rust Borrowing Testing Quick Reference
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_basic() {
assert_eq!(add(2, 3), 5);
}
#[test]
#[should_panic(expected = "overflow")]
fn test_panic() {
dangerous_operation();
}
#[test]
fn test_result() -> Result<(), String> {
let val = parse("42")?;
assert_eq!(val, 42);
Ok(())
}
}Unlock Unlimited QA Audits for $15.99/mo
Free: 5 audits/day. Pro $15.99/mo: 50/day + 250 pages. Pro Max $99/mo: unlimited audits, 10K pages, API access.
See PlansFrequently Asked Questions
How should I use this Rust Borrowing cheat sheet?
Bookmark it for quick syntax lookups during development. Focus on memorizing the essential section first. Reference specific patterns when you encounter them in code reviews or new projects. Over time, the most common patterns become second nature.
Is this Rust Borrowing cheat sheet current for 2026?
Yes. All examples use the latest stable Rust syntax and idioms. We update this reference with each major Rust release to ensure accuracy. Check the last-modified date to confirm currency.
Can I use these Rust Borrowing code snippets in production?
Yes. All snippets demonstrate idiomatic, production-quality Rust patterns. Adapt them to your specific context, add appropriate error handling, and test thoroughly before deploying. They serve as starting points, not copy-paste solutions.
What Rust version do these Rust Borrowing examples require?
Examples target the latest stable Rust version. Most work with Rust 1.70+. Specific features are noted.
Where can I practice Rust Borrowing concepts?
Use the Rust Playground (play.rust-lang.org) and rustlings exercises. Build small projects that exercise Rust Borrowing patterns. Contributing to open-source Rust projects provides real-world practice.
Related Articles
Unlock Unlimited QA Audits for $15.99/mo
Free: 5 audits/day. Pro $15.99/mo: 50/day + 250 pages. Pro Max $99/mo: unlimited audits, 10K pages, API access.
See PlansBliniBot is an AI assistant that automates repetitive browser tasks and workflows. Try it free โ
Is your site built to last?
Run a free QA audit and get your Site Health Score in seconds.
Check Your Site FreeNo signup required