rust struct 初始化的语法糖 - struct update syntax
rust语法提供了..操作符来实现struct更新的语法糖,参见Struct Update syntax。
废话少说,直接定义一个学生的struct:
#[derive(Default, Debug)]
struct Student {
age: u32,
name: String,
grade: u8
}
接下来看下怎么用struct update syntax来创建学生
fn main() {
let xiaohong = Student{
name: String::from("litte hong"),
age: 6,
grade: 1
};
let xiaoming = Student{
name: String::from("xiaoming"),
..xiaohong
};
println!("{:#?}", xiaoming );
}
上面的代码先实例化了一个xiaohong的struct,struct的每个字段都赋值了;创建第二个studentxiaonming的时候,刚好小红和小明是同班同学,我们可以利用..来实例化xiaoming这个struct, 就不需要为每个字段都一一赋值了。
接下来介绍一个不用实现创建xiaohong, 也能使用struct update syntax来创建第二个学生的技巧;
定义一个帮忙展开struct默认值的辅助函数
#[inline]
pub fn default<T: Default>() -> T {
std::default::Default::default()
}
然后创建我们的学生:
let stu = Student{
name: String::from("xiaoming"),
..default()
};
这样子,除了name是我们赋值外, 其他struct的字段都初始化为该字段类型的默认值,比如struct的name字段是String就被初始化为"", grade字段的默认值就是0。
rust struct 初始化的语法糖 - struct update syntax的更多相关文章
- C#语法糖之第二篇: 参数默认值和命名参数 对象初始化器与集合初始化器
今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完 ...
- struct初始化
C语言中struct初始化 • 普通结构体的初始化 假设我们有如下的一段代码,其中已有Student结构体,要求实例化一个Student对象并将其初始化. #include <stdio.h&g ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
- C# 6.0新特性---语法糖
转载:http://www.cnblogs.com/TianFang/p/3928172.html 所谓语法糖就是在编译器里写做文章,达到简化代码书写的目的,要慎重使用,省略过多不易理解. NULL检 ...
- C# 中居然也有切片语法糖,太厉害了
一:背景 1. 讲故事 昨天在 github 上准备找找 C# 9 又有哪些新语法糖可以试用,不觉在一个文档上看到一个很奇怪的写法: foreach (var item in myArray[0..5 ...
- 基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结
随着Vue3和TypeScript的大浪潮不断袭来,越来越多的Vue项目采用了TypeScript的语法来编写代码,而Vue3的JS中的Setup语法糖也越来越广泛的使用,给我们这些以前用弱类型的JS ...
- 探索C#之6.0语法糖剖析
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...
- 看看C# 6.0中那些语法糖都干了些什么(上篇)
今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL? 一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好 ...
- C#语法糖,让编程更具乐趣
一.什么是语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法 ...
- C#十种语法糖
语法糖 指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会.需要声明的是"语法糖" ...
随机推荐
- minio 搭建最的对象存储服务器
前言 手里有一个闲置服务器,不能浪费,于是有想把它作为文件静态资源服务器的想法. 本来是想随便起一个 http 服务就可以作为静态资源服务来运行,比如apche.node的http-server.ng ...
- nginx二级域名代理
二级域名带ssl证书代理 在nginx配置文件,增加代理配置服务 server { listen 443 ssl; #SSL协议访问端口号为443.此处如未添加ssl,可能会造成Nginx无法启动. ...
- 前端开发系列006-基础篇之JavaScript数组基础
本文将介绍JavaScript语言中的数组,全文内容包括但不限于数组的简单介绍.数组的创建.数组中元素的访问.数组的类型以及数组相关的核心方法等内容,需要指出的是ES6 + 的数组相关特性并没有被纳入 ...
- Educational Codeforces Round 96 ABCDE 题解(详解)
A. Number of Apartments 题意:用3.5.7凑数,若能凑出给出方案,不能则输出-1. 思路:观察发现除了1 2 4凑不到以外其他都凑得到.那么关于方案的话,既然其他数都凑得到,我 ...
- C++ 四种cast 的使用场景
简介 static_cast() : 表示编译级别的强制类型转换, 且不能发现运行是的错误. 类似C的(int) 之类的强制转圈, 不能去除const属性, volatile 属性. 还有一个unal ...
- css box-sizing的例子
转载自 http://www.cnblogs.com/zhaoran/archive/2013/05/24/3097482.html css3 box-sizing属性 box-sizing属性可以为 ...
- software-center ubuntu处在不稳定的状态,最好重装
sudo dpkg --remove --force-remove-reinstreq software-center sudo apt-get install software-center 搞得我 ...
- 数据迁移新技能,MongoDB轻松同步至ClickHouse
在当今数据驱动的世界中,企业的成功依赖于对数据的高效管理和精准分析.数据迁移是实现这些目标的关键环节,而选择合适的工具可以让这项工作变得更加轻松和高效.ETLCloud 是一款创新的 ETL(提取.转 ...
- 恢复被Windows自动禁用的WIFI适配器
副标题:适配器Intel(R)WiFi6 AX201 160MHz 被Windows禁止使用 副标题:华硕飞行堡垒WIFI适配器恢复使用 相信不少朋友都遇到过突然间电脑上的WIFI无法使用,打开一查看 ...
- CloudQuery 首次开放API,v1.4.1将开放「部门导入」和「用户导入」
「 API 具有功能丰富.发展迅速且公共可用的特点,极大地推动了以 API 为中心的业务增长.原因有很多,比如 API 随处可用的特性.高效的开发和部署平台,以及摆脱资金密集型需求的金融模型.」 -- ...