Error recovery — handle errors gracefully.
Pattern matching:
1fn read_config() -> Result<Config, ConfigError> {2 match std::fs::read_to_string("config.toml") {3 Ok(content) => toml::from_str(&content).map_err(ConfigError::Parse),4 Err(e) => Err(ConfigError::Io(e)),5 }6}
unwrap_or:
1let config = read_config().unwrap_or_default();
map_err:
1let config = read_config()2 .map_err(|e| format!("Failed: {}", e))?;
and_then:
1let value = parse_number("42")2 .and_then(|n| divide(n, 2));
Key: Use Result methods for recovery.