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的生命周期

  • 相关阅读:
    4.JDBC技术
    3.MySQL数据库
    2.Oracle数据库
    (转载)Linux 套接字编程中的 5 个隐患
    一个Sqrt函数引发的血案
    二叉搜索树BinarySearchTree(C实现)
    vector,list.queue,array.....
    boost::Circular Buffer
    boost::operators
    Disjoint Sets
  • 原文地址:https://www.cnblogs.com/usegear/p/14971777.html
Copyright © 2011-2022 走看看