这个特性从1.12.0开始实现:
impl<T> From<T> for Option<T> {
fn from(val: T) -> Option<T> {
Some(val)
}
}
Run Code Online (Sandbox Code Playgroud)
作为一个论点,这是多么惯用?考虑这个例子:
fn do_things(parameters: &Foo, optional_argument: impl Into<Option<Duration>>) {
let optional_argument = optional_argument.into();
// use it...
}
Run Code Online (Sandbox Code Playgroud)
如果你看到文档,它(或多或少)清楚(如果你知道,这个特性已经实现).但是如果你看到代码,你可能会感到困惑:
do_things(params, Duration::from_millis(100));
Run Code Online (Sandbox Code Playgroud)
这样可以使用还是应该避免?