rust

Write safe, performant Rust code.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rust" with this command: npx skills add htlin222/dotfiles/htlin222-dotfiles-rust

Rust Development

Write safe, performant Rust code.

When to Use

  • Writing Rust code

  • Ownership and lifetime issues

  • Trait implementations

  • Async Rust

  • FFI and unsafe code

Ownership Patterns

Borrowing

// Immutable borrow fn print_length(s: &str) { println!("Length: {}", s.len()); }

// Mutable borrow fn append_greeting(s: &mut String) { s.push_str(", world!"); }

// Ownership transfer fn consume(s: String) -> String { format!("Consumed: {}", s) }

Lifetimes

// Explicit lifetime annotation fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } }

// Struct with lifetime struct Parser<'a> { input: &'a str, position: usize, }

Error Handling

use thiserror::Error;

#[derive(Error, Debug)] pub enum AppError { #[error("IO error: {0}")] Io(#[from] std::io::Error),

#[error("Parse error at line {line}")]
Parse { line: usize },

#[error("Not found: {0}")]
NotFound(String),

}

// Using Result fn read_config(path: &Path) -> Result<Config, AppError> { let content = std::fs::read_to_string(path)?; parse_config(&content).map_err(|e| AppError::Parse { line: e.line }) }

Traits

// Define trait trait Summary { fn summarize(&self) -> String;

// Default implementation
fn preview(&#x26;self) -> String {
    format!("{}...", &#x26;self.summarize()[..50])
}

}

// Implement for type impl Summary for Article { fn summarize(&self) -> String { format!("{} by {}", self.title, self.author) } }

// Generic with trait bounds fn notify<T: Summary + Display>(item: &T) { println!("Breaking: {}", item.summarize()); }

Async

use tokio;

#[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let response = fetch_data().await?; process(response).await }

async fn fetch_data() -> Result<Data, Error> { let client = reqwest::Client::new(); let resp = client.get(URL).send().await?.json().await?; Ok(resp) }

Testing

#[cfg(test)] mod tests { use super::*;

#[test]
fn test_parse_valid() {
    let result = parse("valid input");
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), expected);
}

#[test]
#[should_panic(expected = "empty input")]
fn test_parse_empty() {
    parse("");
}

}

Examples

Input: "Fix lifetime error" Action: Analyze borrow checker message, adjust lifetimes or ownership

Input: "Make this async" Action: Add async/await, use tokio runtime, handle async errors

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

devops

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review