Error Trait
std::error::Error trait เป็น foundation สำหรับสร้าง custom error types ใน Rust
1. std::error::Error
Section titled “1. std::error::Error”การ implement Error trait ขั้นพื้นฐานต้อง implement Display และ Debug ด้วย
use std::error::Error;use std::fmt;
#[derive(Debug)]struct ValidationError { field: String, message: String,}
// ============================================// Display - user-friendly message// ============================================
impl fmt::Display for ValidationError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Validation error on '{}': {}", self.field, self.message) }}
// ============================================// Error trait - standard error behavior// ============================================
impl Error for ValidationError {}
fn validate_name(name: &str) -> Result<(), ValidationError> { if name.is_empty() { return Err(ValidationError { field: "name".to_string(), message: "cannot be empty".to_string(), }); } if name.len() < 2 { return Err(ValidationError { field: "name".to_string(), message: "must be at least 2 characters".to_string(), }); } Ok(())}
fn main() { for name in &["", "A", "Alice"] { match validate_name(name) { Ok(()) => println!("'{}' is valid!", name), Err(e) => println!("Error: {}", e), } }}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google