1
爲什麼在結構之外創建方法?爲什麼我必須在Rust中的結構之外聲明方法?
在像C#這樣的語言中,您可以在結構中添加方法。我知道在像C和C++這樣的語言中,你有頭文件,所以它是有道理的,但據我所知我無法在Rust中創建頭文件。
爲什麼在結構之外創建方法?爲什麼我必須在Rust中的結構之外聲明方法?
在像C#這樣的語言中,您可以在結構中添加方法。我知道在像C和C++這樣的語言中,你有頭文件,所以它是有道理的,但據我所知我無法在Rust中創建頭文件。
在大多數語言中,「方法」只是一些語法糖。你實際上沒有一個對象並且調用它的方法,你有一個函數引用了那個對象,然後用它做了一些事情。與常規函數不同,對象的引用通過使用點符號隱式傳遞。
struct Foo {
//...
}
impl Foo {
fn do_something(self: &Self) { //"self: &Self" is a more verbose notation for "&self"
//...
}
}
所以調用它像這樣
my_foo.do_something();
在本質上是一樣的
Foo::do_something(&my_foo);
我認爲這是除鏽開發者做出了一個決定,使之更清楚的是,結構是沒有別的不只是一組數據。
這也是允許trait執行已有類型的東西。
這使您可以爲您未定義的類型提供用戶定義特徵的實現。這意味着結構上的「方法」集合甚至可以在定義該結構的文件之外增長。 – Alec