我正在使用此代码删除redis中的redis键:
let del_result = del_redis_key(&del_key).await;
match del_result {
Ok(success) => {
info!("increment delete success...")
}
Err(failed) => {
let failed_data = serde_json::to_string(&failed.as_result()).unwrap();
info!("increment delete failed...,{}",failed_data);
}
};
当删除redis key失败时,我想注销错误消息,但当我试图记录错误(log = "0.4"
)时,编译时显示错误:
error[E0599]: no method named `as_result` found for enum `mobc_error::Error` in the current scope
--> src/biz/music/songs_controller.rs:66:61
|
66 | let failed_data = serde_json::to_string(&failed.as_result()).unwrap();
| ^^^^^^^^^ method not found in `mobc_error::Error`
|
我应该怎么做才能注销错误信息?顺便说一句,这是删除redis键功能看起来像:
pub async fn del_redis_key(key: &str,) -> Result<()> {
let config_redis_string = getConfig("redisConnectionStr");
let REDIS_CON_STRING: &str = config_redis_string.as_str();
let redis_client = redis::Client::open(REDIS_CON_STRING).expect("can create redis client");
let mut redis_conn = get_con(redis_client);
let mut redis_conn_unwrap = redis_conn.unwrap();
let del_result = redis_conn_unwrap.del(key).map_err(RedisCMDError)?;
FromRedisValue::from_redis_value(&del_result).map_err(|e| RedisTypeError(e).into())
}
1条答案
按热度按时间yacmzcpb1#
如果你的另一个post中的
Error
枚举是如何定义mobc_error::Error
的,它看起来不像@Kendas指出的那样有as_result
方法。然而,我注意到enum的每个变体都用thiserror的#[error(“...”)]消息注解。这意味着thiserror已经为enum生成了Display实现,并且可以显示与具体变体相关的错误消息。如果是这样的话,我认为您可以通过以下方式简化代码。给予一下。