在参数位置使用Option <t>的`impl <t> From <t>来习惯吗?

时间:2018-08-16 22:59:48

标签: rust

此特征是implemented since 1.12.0

impl<T> From<T> for Option<T> {
    fn from(val: T) -> Option<T> {
        Some(val)
    }
}

这是多么习惯吗?考虑以下示例:

fn do_things(parameters: &Foo, optional_argument: impl Into<Option<Duration>>) {
    let optional_argument = optional_argument.into();
    // use it...
}

如果您看到了说明文件,则(或多或少)很清楚(如果您知道,此特征已实现)。但是,如果看到代码,您可能会感到困惑:

do_things(params, Duration::from_millis(100));

使用起来很好还是应该避免?

1 个答案:

答案 0 :(得分:1)

这种模式并不常见,但相当容易理解。如果方便使用您的图书馆,应该可以。

我认为拥有do_stuffdo_stuff_with_timeout函数更为常见。