Skip to main content

rust

Rust programming language best practices and patterns

Informações da origem

Repositório
NeuralBlitz/Agent-Gateway
Última atividade na origem
9 de abril de 2026 às 10:58
Idioma detectado do SKILL.md
inglês
Estrelas
1
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
rust
description
Rust programming language best practices and patterns
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"programming"}
## What I do - Write idiomatic Rust code following the Rust book and effective Rust guidelines - Handle errors with Result and Option types properly - Use borrowing and lifetimes correctly - Write unit and integration tests - Use traits for polymorphism - Implement proper error handling with thiserror and anyhow - Use iterators efficiently - Follow cargo workflow ## When to use me When writing or reviewing Rust code. Rust requires careful attention to ownership and borrowing. ## Error Handling ```rust use anyhow::{Context, Result}; use thiserror::Error; #[derive(Error, Debug)] pub enum MyError { #[error("Invalid input: {0}")] InvalidInput(String), #[error("Resource not found: {resource}")] NotFound { resource: String }, #[error(transparent)] IoError(#[from] std::io::Error), } fn read_config(path: &Path) -> Result<Config> { let content = std::fs::read_to_string(path) .with_context(|| format!("Failed to read config from {:?}", path))?; let config: Config = toml::from_str(&content) .context("Failed to parse config file")?; Ok(config) } ``` ## Traits and Generics ```rust pub trait Processor { type Input; type Output; fn process(&self, input: Self::Input) -> Self::Output; fn name(&self) -> &'static str; } impl<T, U> Processor for Fn(T) -> U where T: Send + 'static, U: Send + 'static, { type Input = T; type Output = U; fn process(&self, input: T) -> U { self(input) } fn name(&self) -> &'static str { "closure_processor" } } ``` ## Ownership and Borrowing ```rust struct Processor { name: String, threshold: f64, } impl Processor { // &self borrows immutably, can have multiple fn process(&self, value: f64) -> bool { value > self.threshold } // &mut self borrows mutably, only one at a time fn set_threshold(&mut self, threshold: f64) { self.threshold = threshold; } // self takes ownership, destroys on drop fn into_name(self) -> String { self.name } } ``` ## Iterators ```rust fn process_items(items: &[i32]) -> Vec<i32> { items .iter() .filter(|&&x| x > 0) .map(|&x| x * 2) .take(10) .collect() } ``` ## Testing ```rust #[cfg(test)] mod tests { use super::*; #[test] fn test_process_positive_values() { let processor = Processor::new(10.0); assert!(processor.process(15.0)); assert!(!processor.process(5.0)); } #[test] fn test_process_edge_cases() -> Result<()> { let processor = Processor::new(0.0); ensure!(processor.process(1.0), "Positive values should pass"); Ok(()) } } ```
Ver no GitHub