rust-error-handling
Rust-specific error handling patterns, building on the base error handling skill. Demonstrates the 'extends' composition feature.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
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
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-28
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!