代码之家  ›  专栏  ›  技术社区  ›  Tim Diekmann suresh madaparthi

在参数位置对选项<T>`使用'impl<T>From<T>是否惯用?

  •  5
  • Tim Diekmann suresh madaparthi  · 技术社区  · 7 年前

    这个特点是 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));
    

    这是可以使用的还是应该避免?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Kornel    6 年前

    这种模式并不常见,但相当容易理解。如果在您的库的使用环境中方便的话,它应该是可以的。

    do_stuff do_stuff_with_timeout

    推荐文章