我有这个功能:
fn io_convert_int<F, T>(from: F) -> io::Result<T>
where
T: TryFrom<F>,
<T as TryFrom<F>>::Error: std::error::Error + Send + Sync + 'static,
{
from.try_into().map_err(|e| io::Error::new(InvalidInput, e))
}
我想调用它,只指定返回类型,并让T
被推断出来。我知道我能做
io_convert_int::<_, SomeT>(some_f)
但是当我不想依赖于函数的类型参数的排列时,这可能是一个问题(类型参数通常非常复杂或容易改变)。我想做的是
io_convert_int(some_f)?::<SomeT>
我该怎么做?我能想到的唯一其他方法是有一个预期返回类型的变量,如
let to: SomeT = io_convert_int(some_f)?;
这样做的缺点是必须拆分表达式,而我并不总是可以这样做。
1条答案
按热度按时间vsnjm48y1#
曾经有type ascripiton,但后来变成了de-rfc'd。
目前我认为你的额外变量是最好的方法,尽管你可以使用
std::convert::identity
来内联Assert类型: