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

问题描述 投票:1回答:1

我怎么能只拿出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)
}
rust
1个回答
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的名称。可进口商品包括:

  • 一个模块
  • 一个功能
  • 一个类型别名
  • 结构
  • 枚举
  • 工会
  • 一个常数
  • 静止的
  • 尊重
© www.soinside.com 2019 - 2024. All rights reserved.