前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Rust Programming Language》- EX - Cheatsheet

《Rust Programming Language》- EX - Cheatsheet

作者头像
szhshp
发布2023-03-09 19:06:42
2960
发布2023-03-09 19:06:42
举报

Structs

Classic Structs

代码语言:javascript
复制
struct ColorClassicStruct {
    red: i32,
    green: i32,
    blue: i32,
}


let green = ColorClassicStruct {
    red: 0,
    green: 255,
    blue: 0,
};

assert_eq!(green.red, 0);
assert_eq!(green.green, 255);
assert_eq!(green.blue, 0);

Tuples

代码语言:javascript
复制
struct ColorTupleStruct(i32, i32, i32);


let green = ColorTupleStruct(0, 255, 0);

assert_eq!(green.0, 0);
assert_eq!(green.1, 255);
assert_eq!(green.2, 0);

Unit-Like Struct

Unit-like Struct: No fields, no data stored, behave similarly to ()

代码语言:javascript
复制
struct UnitLikeStruct;


let unit_like_struct = UnitLikeStruct;
let message = format!("{:?}s are fun!", unit_like_struct);

Patterns of methods arguments

  • fn get_char(data: String) takes the String by value, allowing you to modify the string data, but it will make a full copy of the string data, which can be expensive for large strings.
  • fn get_char(data: &String) takes a reference to a String, allowing you to access the string data, but not modify it.
  • fn get_char(mut data: &String) Wrong syntax - you cannot take a mutable reference to an immutable reference.
  • fn get_char(mut data: String) takes a mutable String, allowing you to modify the string data, but it will also make a full copy of the string data.

Syntax

Ownership

Mutable

fn get_char(data: &String)

Caller

No

fn get_char(mut data: &String)

N/A

N/A

fn get_char(data: String)

Transferred to Function

No

fn get_char(mut data: String)

Transferred to Function

Yes

Enum

代码语言:javascript
复制
enum Message {
    Quit,
    Move(Point),
    Echo(String),
    ChangeColor((u8, u8, u8)),
}

fn triggerSpecificEvent(message: Message) {
    // TODO: create a match expression to process the different message variants
    match message {
        Message::ChangeColor((a, b, c)) => change_color((a, b, c)),
        Message::Echo(s) => echo(s),
        Message::Move(p) => move_position(p),
        Message::Quit => quit(),
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Structs
    • Classic Structs
      • Tuples
        • Unit-Like Struct
        • Patterns of methods arguments
        • Enum
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档