访问Redis时出现无提示错误

时间:2015-06-27 03:51:57

标签: redis rust

我是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(())
}

1 个答案:

答案 0 :(得分:5)

简短回答

错误被提出,但你忽略了它。

Long anser

非致命错误通常通过返回Result来传播,因此调用者可以处理错误。恐慌主要用于不可恢复的错误,并将中止当前线程。在这种情况下,redis库使用RedisResult类型,这是Result<T, RedisError>的别名。

如果要处理错误,则应通过匹配结果类型来执行此操作。尝试将主要功能更改为以下内容:

fn main() {
    if let Err(e) = read_meta_keys_redis("myset".to_string()) {
        println!("{}", e.description());
    }
}

另请参阅:Error Handling (The Rust Book)