rust-error-handling
maintained by Dicklesworthstone
star
100
account_tree
22
verified_user
MIT License
id: rust-error-handling name: Rust Error Handling description: >- Rust-specific error handling patterns, building on the base error handling skill. Demonstrates the 'extends' composition feature. tags: [error-handling, rust, example] extends: error-handling-base
Rust Error Handling
Rust-specific error handling patterns that extend the base error handling skill.
Rules
- Use
thiserrorfor defining library error types - Use
anyhowfor application-level error handling - Implement
std::error::Errortrait for custom error types - Use the
?operator for ergonomic error propagation - Prefer
Result<T, E>over panicking for recoverable errors - Use
unwrap()only in tests or when failure is impossible
Examples
// Define library errors with thiserror
use thiserror::Error;
#[derive(Error, Debug)]
pub enum ConfigError {
#[error("failed to read config file: {0}")]
Io(#[from] std::io::Error),
#[error("invalid config format: {0}")]
Parse(#[from] toml::de::Error),
#[error("missing required field: {field}")]
MissingField { field: String },
}
// Application-level error handling with anyhow
use anyhow::{Context, Result};
fn load_config(path: &str) -> 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 TOML")?;
Ok(config)
}
Checklist
- Custom error types use
thiserrorderive - Error context is added with
anyhow::Context - No
unwrap()calls in production code paths -
Resultis used instead ofpanic!for recoverable errors
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
100
GitHub Forks
22
Created
Jan 2026
Last Updated
8个月前
tools
tools architecture patterns
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!