rust筆記5結構體

2021-09-26 11:13:20 字數 1952 閱讀 9063

結構體的基本定義方式和使用方式:

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就是關聯函式的一種。...