仅导入一个类型的单个方法的语法是什么?

时间:2019-03-03 03:17:30

标签: rust

我怎么只能拔出Duration而不是*?只能抽出seconds吗?

use chrono::*; 

// Returns a Utc DateTime one billion seconds after start.
pub fn after(start: DateTime<Utc>) -> DateTime<Utc> {
    start + Duration::seconds(1000000000)
}

1 个答案:

答案 0 :(得分:4)

无法仅导入类型的方法。请注意,Duration::seconds不是方法,而是associated function。您也不能直接导入它们。

如果您真的想要这样的东西,我会看到两个选择:

  1. 新的委派功能

    fn seconds(x: i64) -> chrono::Duration {
        chrono::Duration::seconds(x)
    }
    

    这简单明了。

  2. 静态函数指针

    可以Duration::seconds绑定到静态函数指针:

    static seconds: fn(i64) -> chrono::Duration = chrono::Duration::seconds;
    

    这将创建警告,因为静态变量应使用大写名称。我不会做这样的事情。


请重新阅读The Rust Programming Language的标题为The Module System to Control Scope and Privacy的章节。在您进入glob operator的语法之前,您必须阅读许多部分。这些部分回答了您的第一个问题:

use chrono::Duration; 

您输入要导入的items的名称。可导入的项目包括:

  • 一个模块
  • 一个功能
  • 类型别名
  • 结构
  • 枚举
  • 工会
  • 一个常数
  • 静态
  • 特质