//Rust 里 struct 语句仅用来定义,不能声明实例,结尾不需要 ; 符号,而且每个字段定义之后用 , 分隔#[derive(Debug)]
struct Site {domain: String,name: String,nation: String,found: u32
}fn main() {let runoob = Site {domain: String::from("www.runoob.com"),name: String::from("RUNOOB"),nation: String::from("China"),found: 2013};println!("{:?}",runoob);//必须使用key: value 语法来实现定义// let runoob2 = Site {//     String::from("www.runoob.com"),//     name: String::from("RUNOOB"),//     nation: String::from("China"),//     found: 2013// };//但是,如果正在实例化的结构体有字段名称和现存变量名称一样的,可以简化书写let domain = String::from("www.runoob.com");let runoob2 = Site {domain,name: String::from("RUNOOB"),nation: String::from("China"),found: 2013};//你想要新建一个结构体的实例,其中大部分属性需要被设置成与现存的一个结构体属性一样,仅需更改其中的一两个字段的值,可以使用结构体更新语法://注意:..runoob 后面不可以有逗号。这种语法不允许一成不变的复制另一个结构体实例,意思就是说至少重新设定一个字段的值才能引用其他实例的值let runoob3 = Site {nation: String::from("Chinese"),.. runoob2};println!("{:?}",runoob3);//元组结构体//元组结构体是一种形式是元组的结构体。与元组的区别是它有名字和固定的类型格式。它存在的意义是为了处理那些需要定义类型(经常使用)又不想太复杂的简单数据#[derive(Debug)]struct Color(u8, u8, u8);struct Point(f64, f64);let black = Color(0, 0, 0);let origin = Point(0.0, 0.0);println!("{:?}",black);println!("{}-{}",origin.0,origin.1);let rect1 = Rectangle { width: 30, height: 50 };println!("rect1's area is {}", rect1.area());let rect2 = Rectangle { width: 40, height: 20 };println!("{}", rect1.wider(&rect2));let rect3 = Rectangle::reate(23,32);println!("rect3 is {:?}", rect3);}#[derive(Debug)]
struct Rectangle {width: u32,height: u32,
}//结构体方法
impl Rectangle {fn area(&self) -> u32{self.width * self.height}fn wider(&self, rect: &Rectangle) -> bool {self.width > rect.width}
}//结构体函数(类似C++构造函数)
impl Rectangle {fn reate(width:u32, height:u32) -> Rectangle{Rectangle{width,height}}
}//单元结构体,结构体可以值作为一种象征而无需任何成员:
struct UnitStruct;

14.结构体struct.rs相关推荐

  1. linux sock结构体,struct socket结构体详解

    在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题.  由这个图可知,内核中的进程可以通过使用struct ...

  2. 内核中用于数据接收的结构体struct msghdr

    我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用send ...

  3. 内核中用于数据接收的结构体struct msghdr以及iovec介绍

    我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用send ...

  4. [ C语言 ]指针---结构体(struct)---分支语句(1)---初识C语言末尾

    文章目录 前言 一,指针 二,结构体(struct) 三,分支语句(选择结构) 总结​​​​ 前言 本篇文章主要记录指针末尾,结构体,和分支语句(选择结构) --------------------- ...

  5. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法

    C语言结构体(struct)常见使用方法 C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合) ...

  6. linux 结构体 struct addrinfo 简介

    目录 定义 相关方法 1. getaddrinfo(const char, const char, const struct addrinfo, struct addrinfo*) 2. freead ...

  7. 结构体struct timeval 和 struct timespec的定义

    结构体struct timeval 和 struct timespec的定义均在头文件<sys/time.h>中,具体定义如下: struct timeval {long tv_sec; ...

  8. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)

    转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但 ...

  9. C/C++结构体struct 与结构体数组和枚举型enum的结合使用

    C/C++结构体struct 与结构体数组和枚举型enum的结合使用 #include "stdafx.h" #include <string> #include &l ...

最新文章

  1. 搬运机器人举杯贺所需的条件_机器人调试工程师的工作是怎样的
  2. spring-boot 添加http自动转向https
  3. 如何查看python安装路径
  4. JS异步加载,JQ事件不被执行解决方法
  5. php 无法识别oci8,php 连接oracle 无法 启用oci8 解决办法 (摘自oracle官网)
  6. python不同颜色的代码_python日志通过不同的等级打印不同的颜色(示例代码)
  7. ubuntu16.04中将自己的ubuntu做成镜像
  8. 回溯____蓝桥 棋盘
  9. 8. PHP7 安装
  10. 一键分享java英文_bShare RESTful分享API
  11. Image Histogram
  12. 歌词big big no_编程的第二个十年:Big Iron
  13. ugui scrollview 3d特效 裁减
  14. 钛磨产品行业调研报告 - 市场现状分析与发展前景预测
  15. 台式计算机清灰,电脑清理灰尘,教您怎样清理台式电脑灰尘
  16. python 多进程编程 之 加速kmeans算法
  17. 互联网大牛们的电脑桌面
  18. 职场必备的五款有格调的办公软件 让你从此呼风唤雨
  19. 怎样确保国际会议论文能被EI/ISTP等检索
  20. matlab数字音效处理器,基于某matlab的数字音效处理器——数字信号处理课设报告材料...

热门文章

  1. vue修饰符和条件指令
  2. 百万数据报表导出:使用SXSSFWorkbook完成百万数据报表打印
  3. RaDirect交换器-搭建环境
  4. 扩展java.lang.Thread类
  5. 书生阅读器打开gd文件出错_CAJ论文怎么打开?
  6. python知识点汇总百度文库_PYTHON知识点汇总.doc
  7. 测试音质好坏的软件,音响音质的好坏简单的两招测出
  8. win10下安装ubuntu,双系统,免U盘
  9. jmeter接口自动化部署jenkins教程
  10. hasOwnProperty