我是Rust的新手。我正在使用箱子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(())
}
答案 0 :(得分:5)
错误被提出,但你忽略了它。
非致命错误通常通过返回Result
来传播,因此调用者可以处理错误。恐慌主要用于不可恢复的错误,并将中止当前线程。在这种情况下,redis库使用RedisResult
类型,这是Result<T, RedisError>
的别名。
如果要处理错误,则应通过匹配结果类型来执行此操作。尝试将主要功能更改为以下内容:
fn main() {
if let Err(e) = read_meta_keys_redis("myset".to_string()) {
println!("{}", e.description());
}
}