結構體的基本定義方式和使用方式:
struct user
fn main() ;
}
上述的結構體是不可變的,如果想要在執行的時候改變結構體的值,需要宣告為可變的結構體:
struct user
fn main() ;
user2.username = string::from("foo1");
}
如果我們想用預設值的方式制定結構,可以利用函式expression
的方式執行,**如下:
struct user
fn build_user(name_: string, email_: string) -> user
}fn main() , {}, {}, {}", user1.username, user1.email, user1.sign_in_count, user1.active);
// 可變的結構
let name2 = string::from("foo2");
let email2 = string::from("[email protected]");
let mut user2 = build_user(name2, email2);
user2.email = string::from("foo22.email.com");
println!("user1: {}, {}, {}, {}", user2.username, user2.email, user2.sign_in_count, user2.active);
}
如果上述函式中,傳入的引數和結構提內部結構的名字一樣,則可以省略對應的名稱,**例項:
struct user
fn build_user(name: string, email: string) -> user
}fn main() {} {}", user1.name, user1.email, user1.age);
}
如果乙個結構體例項想要使用之前例項的一些值,可以使用下面的方式:
fn build_user(name: string, email: string) -> user
}fn main() {} {}", user1.name, user1.email, user1.age);
let user2 = user ;
println!("user2: {} {} {}", user2.name, user2.email, user2.age);
}
結構體的作用域可以是無名的,類似於tuple
;不過,和tuple
不同,使用=
的時候,ownership會轉移的,**例項:
struct color(i32, i32, i32);
fn main() {} {}", black1.0, black1.1, black1.2);
}
直接給出**例項:
struct rect
impl rect
fn can_hole(&self, other: rect) -> bool
}fn main() ;
let rect2 = rect;
println!("rect1 area = {}", rect1.area());
println!("rect2 can hod rect1 ? {}", rect2.can_hole(rect1));
}
上述的impl
可以有多個塊。rust中,方法統一使用.
方式。這區別於在c++中使用->
的方式。 Rust學習 結構體
討論元組和結構體,比較 對比 如何定義和例項化結構體 如何定義關聯函式 一 結構體 使用struct 關鍵字宣告 struct user 例項可變可以使用點號修改結構體某個字段。rust不允許只將乙個不可變的結構體中某個字段標記為可變。元組結構體 1.給元組命名 2.使元組成為與其他元組不同的型別 ...
rust對結構體排序
use std cmp ordering use rand rng 匯入外部的包.記得修改toml檔案 保證age是可比較的 pub struct person t std cmp partialord 注意泛型t的位置 impl t person t where t std cmp partial...
Rust結構體關聯函式
除了 方法,rust塊還允許我們定義不用接收 self 作為引數的函式。由於這類函式與結構體相互關聯,所以它們也被稱為關聯函式 associated function 我們將其命名為函式而不是方法,是因為它們不會作用域某個具體的結構體例項。比如,曾經接觸過的string from就是關聯函式的一種。...