小编ast*_*ver的帖子

如何将Option <Result <T,Error >>转换为Option <T>而不解包它?

我试图找到一个很好的方法来转换Option<String>Option<i8>.

例如,

use std::str::FromStr;

fn main() {
    let some_option: Option<String> = Some("too".to_owned()); 
    let new_option: Option<i8> = some_option.map(|x| i8::from_str(x.as_str())); 
}
Run Code Online (Sandbox Code Playgroud)

我以为我可以使用涡轮鱼来明确地转换类型,如下所示:

use std::str::FromStr;

fn main() {
    let some_option: Option<String> = Some("too".to_owned()); 
    let new_option: Option<i8> = some_option.map::<Option<i8>>(|x| i8::from_str(x.as_str())); 
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器指出这不是正确的参数量,所以我认为这可能有效,但它不会:

use std::str::FromStr;

fn main() {
    let some_option: Option<String> = Some("too".to_owned()); 
    let new_option: Option<i8> = some_option.map::<Option<i8>,i8::from_str>(); 
}
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
2
解决办法
1163
查看次数

当没有类型参数或归属时,如何暗示值的类型?

我正在尝试将我的 struct 转换为 a HashMap,但是在 impl 块中时我无法这样做。由于 crate约束,我只能&self用作resolve函数的参数。

use std::collections::HashMap;

pub enum Value {
    Int(i64),
    Object(HashMap<String, Value>),
}

pub struct WeatherSettings {
    forecast_days: i64,
}

impl WeatherSettings {
    fn resolve(&self) -> Value {
        let json_object: HashMap<String, Value> = *self.into();
        Value::Object(json_object)
    }
}

impl From<WeatherSettings> for HashMap<String, Value> {
    fn from(weather: WeatherSettings) -> HashMap<String, Value> {
        let mut json_object = HashMap::new();
        json_object.insert("forecast_days".to_owned(),
                           Value::Int(weather.forecast_days));
        return json_object;
    }
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)

更直接,我得到错误:

use std::collections::HashMap;

pub …
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
946
查看次数

标签 统计

rust ×2