Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 您何时使用::以及何时使用。锈迹斑斑?_Rust - Fatal编程技术网

Rust 您何时使用::以及何时使用。锈迹斑斑?

Rust 您何时使用::以及何时使用。锈迹斑斑?,rust,Rust,在玩铁锈游戏时,我遇到了: 什么时候使用:,如第一行,什么时候使用,,如第二行?用语法调用的方法被调用(或仅仅是方法),而用:语法调用的方法被调用。主要区别在于实例方法采用某种形式的self作为参数,而相关函数则不采用 您可以将的实现作为关联函数进行检查: pub fn today()->日期{ Local::now().date() } 与之相比: fn ymd(&self,年:i32,月:u32,日:u32)->日期{ self.ymd_opt(年、月、日).unwrap() } 然而,

在玩铁锈游戏时,我遇到了:


什么时候使用
,如第一行,什么时候使用
,如第二行?

语法调用的方法被调用(或仅仅是方法),而用
语法调用的方法被调用。主要区别在于实例方法采用某种形式的
self
作为参数,而相关函数则不采用

您可以将的实现作为关联函数进行检查:

pub fn today()->日期{
Local::now().date()
}
与之相比:

fn ymd(&self,年:i32,月:u32,日:u32)->日期{
self.ymd_opt(年、月、日).unwrap()
}
然而,这里需要注意的是,
Local.ymd
实际上是作为
Timezone
特性的一部分实现的,该特性是
Local


这里需要注意的另一点是,
Local
是一个没有字段的结构。这意味着它可以像
Local{}
那样创建,甚至可以仅仅是
Local

我认为您应该强调最后一点。这就是语法令人惊讶的地方:
Local.foo
vs
Local::bar
extern crate chrono; // 0.4.6
use chrono::TimeZone;

fn main() {
    println!("{}", chrono::Local::today());
    println!("{}", chrono::Local.ymd(2019, 1, 1));
}