我试图找到一个很好的方法来转换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) 我正在尝试将我的 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