zoukankan      html  css  js  c++  java
  • study Rust-6【使用结构体组织相关联的数据】

    struc(structure)

    定义并且实例化结构体:

    struct User {
        username: String,
        email: String,
        sign_in_count: u64,
        active: bool,
    }
    

     User的结构定义。这种形式,写过程序的很熟悉。

    看一下程序中如何定义:

    let user1 = User {
        email: String::from("someone@example.com"),
        username: String::from("someusername123"),
        active: true,
        sign_in_count: 1,
    };
    //下面是相关处理
    user1.email = String::from(
    "anotheremail@example.com");

    下面的例子显示了一个 build_user 函数,它返回一个带有给定的 email 和用户名的 User 结构体实例。active 字段的值为 true,并且 sign_in_count 的值为 1

    fn build_user(email: String, username: String) -> User {
        User {
            email: email,
            username: username,
            active: true,
            sign_in_count: 1,
        }
    }
    //是否感到到麻烦,邮箱和用户名需要对应才能初始化,不要出差错。是否有方法更简单赋值,有:

    fn build_user(email: String, username: String) -> User {
        User {
            email,//注意没有定义类型,名字相同
            username,//注意没有定义类型,名字相同
            active: true,
            sign_in_count: 1,
        }
    }
    
    

     

    使用结构体更新语句从其他实例创建实例:

    let user2 = User {
        email: String::from("another@example.com"),
        username: String::from("anotherusername567"),
        ..user1 //这个二个点代表懒人剩下取user1的值照抄。
    };

    使用没有命名字段的元组结构体来创建不同的类型

    struct Color(i32, i32, i32);
    struct Point(i32, i32, i32);
    
    let black = Color(0, 0, 0);
    let origin = Point(0, 0, 0);
    

     没有任何字段的类单元结构体

    关于struct的生命周期

  • 相关阅读:
    如何建一个SAM
    3.Telegraf自定义脚本模块
    2.Influxdb函数
    1.自动化运维监控
    7.mysql8.0版本MGR搭建
    6.mysql存储过程
    5.innodb B+tree索引
    4.mysql profile的使用方法
    3.mysql小表驱动大表的4种表连接算法
    2.mysql explain命令详解
  • 原文地址:https://www.cnblogs.com/usegear/p/14971777.html
Copyright © 2011-2022 走看看