访问Redis时出现无声错误

访问Redis时出现无声错误,redis,rust,Redis,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:

我是个生锈的新手。我正在使用板条箱
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(())
}
extern板条箱redis;
使用redis::*;
使用std::string::string;
使用std::collections::HashSet;
fn main(){
读取meta键redis(“myset.to_string());
}
fn read\u meta\u keys\u redis(key:String)->redis::RedisResult{
println!(“22{}”,键);
让client=try!(redis::client::open(“redis://127.0.0.1:6379/2"));
让con=try!(client.get_connection());
让mems:HashSet=try!(con.smembers(key));
用于mems中的x。iter(){
println!(“op-->{}”,x);
}
好(())
}
简短回答 已引发错误,但您将忽略它

长安瑟 非致命错误通常通过返回
结果来传播,因此调用方可以处理错误。panic主要用于不可恢复的错误,并将中止当前线程。在这种情况下,redis库使用
RedisResult
类型,它是
Result
的别名

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

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

另请参见:

您是否检查了由
read\u meta\u keys\u redis
返回的
RedisResult
的值?这是交叉发布到的。我假设rust会像java一样出现异常跟踪。显然我错了。谢谢。我能把错误找回来。但最初的目标仍未实现。我得到了一个错误无效的数据库号码我的本地redis客户端说127.0.0.1:6379[2]>smembers myset 1)“你好”2)“你好吗”127.0.0.1:6379[2]>也许你可以就此提出一个新问题。我不熟悉redis;)我来自Java背景,所以假设异常会在执行跟踪中冒泡。感谢您纠正meNo问题;)。。。如果你对答案满意,你可以把它标记为答案,这样人们就可以知道问题已经解决了。