我是Rust的新手。我正在使用板条箱,redis = "0.3.1"但该程序只是退出而没有引起恐慌。我要做的唯一不同就是数据库不同。
redis = "0.3.1"
extern crate redis; use redis::*; use std::string::String; use std::collections::HashSet; fn main() { read_meta_keys_redis("myset".to_string()); } fn read_meta_keys_redis(key: String) -> redis::RedisResult<()> { println!("22{}", key); let client = try!(redis::Client::open("redis://127.0.0.1:6379/2")); let con = try!(client.get_connection()); let mems: HashSet<i32> = try!(con.smembers(key)); for x in mems.iter() { println!("op-->{}", x); } Ok(()) }
引发了错误,但是您忽略了它。
非致命错误通常通过返回来传播Result,因此调用方可以处理该错误。紧急情况通常用于发生不可恢复的错误,并将中止当前线程。在这种情况下,redis库使用该RedisResult类型,它是的别名Result<T, RedisError>。
Result
RedisResult
Result<T, RedisError>
如果要处理错误,则应通过匹配结果类型来进行。尝试将您的主要功能更改为以下内容:
fn main() { if let Err(e) = read_meta_keys_redis("myset".to_string()) { println!("{}", e.description()); } }
另请参阅:错误处理(The Rust Book)