2311rust,1.31版本更新
1.31.0
稳定版
Rust1.31
可能是最激动人心
的版本!
使用Cargo
创建一个新项目:
cargo new foo
以下是Cargo.toml
的内容:
[package]
name = "foo"
version = "0.1.0"
authors = ["名字"]
edition = "2018"
//版本.
[dependencies]
在[package]:edition
下添加了一个新键.注意,已设置为2018
年.如果键不存在,则设置它为2015
默认值.
用Rust2018
,可解锁一些Rust2015
中禁止的新功能
.
注意,每个包都可2015
或2018
模式,它们可无缝地协同工作.2018
项目可用2015
依赖项,2015
项目可用2018
依赖项.
确保
不会分裂生态系统
,且所有这些新事物
都是选入
的,从而确保兼容.此外,迁移Rust2015
代码到Rust2018
时,可通过cargo fix
自动更改.
借用
检查器更聪明,现在接受
一些以前拒绝
的有效代码.
请看该例:
fn main() {let mut x = 5;let y = &x;let z = &mut x;
}
如果确实使用了y
,如:
fn main() {let mut x = 5;let y = &x;let z = &mut x;println!("y: {}", y);
}
在Rust2018
中,该错误更好了:
error[E0502]
:因为已按不变
借用,无法按可变
借用"x"
并显示借用冲突
的位置.
简化模块系统
1,几乎不再需要extern crate
.
2,可用use
而不是#[macro_use]
属性导入
宏.
3,绝对路径以crate
名开头,而crate
关键字表示当前crate
.
4,foo.rs
和foo/
子目录可共存
;在子目录
中放置子模块
时不再需要mod.rs
.
省略生命期规则
为impl
块和函数定义
添加了一些额外省略规则
.代码如下:
impl<'a> Reader for BufReader<'a> {//方法在此
}
现在可这样写:
impl Reader for BufReader<'_> {//方法在此
}
'_
生命期仍显示BufReader
接受参数,但不再需要为它创建名字.
仍要在结构中定义生命期
.但是,不再需要像以前那么多的样板
:
//`2015`
struct Ref<'a, T: 'a> {field: &'a T
}
//`2018`
struct Ref<'a, T> {field: &'a T
}
'a
是推导出来的.
常FN
在Rust
中定义函数有几种方法:带有fn
的普通函数
,带不安全fn
的不安全(unsafe fn)
函数,带extern fn
的外部函数.
再添加1个限定函数
的新方法:const fn
.它像这样:
const fn foo(x: i32) -> i32 {x + 1
}
可像普通函数
一样调用const fn
,但也可在常环境
中使用.如果是,则在编译时
而不是运行时
求值.如:
const SIX: i32 = foo(5);
这在编译时执行foo
,并设置SIX
为6
.
const fn
必须要有确定性输出
,你可以:
1,整数的算术
和比较
符号
2,除&&
和||
之外的所有布尔
符号
3,构造数组,结构,枚举和元组
4,调用其他常fn
5,数组和切片
上的索引式
6,字段访问结构和元组
7,从常
中读取(但不是静态
,甚至不引用静态)
8,引用&和*
9,转换,但转换整数
的原始指针
除外
新工具
在2018
版中,为所有用户准备了新一代工具:Clippy,Rustfmt
和IDE
支持.
Rust
的linter
,clippy
现在可在稳定的Rust
上使用.
rustup component add clippy
//安装
cargo clippy
//运行.
Clippy
现在是1.0
,它有与rustc
相同的lint
稳定性保证.可添加新的lint
,且可修改lint
以添加更多功能,但可能永远不会删除(仅弃用)lint
.
Rustfmt
用来格式化Rust
代码.自动
格式化代码可让你使用官方的Rust
风格.
rustup component add rustfmt
//安装
cargo fmt
//使用.
检查工具
在Rust1.30
中,稳定了如#[rustfmt::skip]
等"工具属性".在Rust1.31
中,稳定了一些检查工具,
比如为lint
提供了名字空间
,以便知道来源的:
#[allow(clippy::bool_comparison)]
如果以前用过Clippy
的lints
,可这样迁移:
//旧
#![cfg_attr(feature = "cargo-clippy", allow(bool_comparison))]
//新功能
#![allow(clippy::bool_comparison)]
不再需要cfg_attr
了!
库稳定
添加了一堆From
实现:
1,u8
现在实现From<NonZeroU8>
,对其他
数值类型及其NonZero
等效项也同样.
2,Option<&T>
实现From<&Option<T>>
,也实现了&mut
此外,这些功能已稳定下来:
1,slice::align_to
及其可变
版
2,slice::chunks_exact
,及可变
版和所有组合
中的r
版本(如slice::rchunks_exact_mut
)
货物
Cargo
现在使用HTTP/2
并行下载包.
此外,现在不必extern crate
,
extern crate foo as baz;
这样,重命名仓库很麻烦.因此,可在Cargo.toml
中这样,如下:
[dependencies]
baz = { version = "0.1", package = "foo" }
//依赖.
[dependencies.baz]
version = "0.1"
package = "foo"
现在,可在代码中通过baz
使用foo
包.
相关文章:
2311rust,1.31版本更新
1.31.0稳定版 Rust1.31可能是最激动人心的版本! 使用Cargo创建一个新项目: cargo new foo以下是Cargo.toml的内容: [package] name "foo" version "0.1.0" authors ["名字"] edition "2018" //版本. [dependencies]在[package]…...

文心一言-情感关怀之旅
如何让LLM更有温度。 应用介绍...

下厨房网站月度最佳栏目菜谱数据获取及分析PLus
目录 概要 源数据获取 写Python代码爬取数据 Scala介绍与数据处理 1.Sacla介绍 2.Scala数据处理流程 数据可视化 最终大屏效果 小结 概要 本文的主题是获取下厨房网站月度最佳栏目近十年数据,最终进行数据清洗、处理后生成所需的数据库表,最终进…...

buildadmin+tp8表格操作(5)自定义组装搜索的查询
有时候我们会自定义组装一些数据,发送给后端,让后端来进行筛选,这里有一个示例 const onComSearchIdEq () > {// 展开公共搜索baTable.table.showComSearch true/*** 公共搜索表单赋值* 范围搜索有两个输入框,输入框绑定变量…...

企业级固态硬盘如何稳定运行?永铭固液混合铝电解电容来帮忙
企业级 固态硬盘 永铭固液混合铝电解电容 企业级固态硬盘(SSD)主要应用于互联网、云服务、金融和电信等客户的数据中心,企业级SSD具备更快传输速度、更大单盘容量、更高使用寿命以及更高的可靠性要求。 企业级固态硬盘的运行要求—固液混合电…...
【MISRA C 2012】Rule 4.2 不应该使用三连符
1. 规则1.1 原文1.2 分类 2. 关键描述3. 代码实例 1. 规则 1.1 原文 Rule 4.2 Trigraphs should not be used Category Advisory Analysis Decidable, Single Translation Unit Applies to C90, C99 1.2 分类 规则4.2:不应该使用三连符 Advisory建议类规范。 2…...

spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()
1.先说场景,在对mysql数据库表数据插入或者更新时都得记录时间和用户id 传统实现有点繁琐,这里还可以封装一下公共方法。 2.解决方法: 2.1:使用aop切面编程(记录一下,有时间再攻克)。 2.2&…...

如何构建风险矩阵?3大注意事项
风险矩阵法(RMA)是确定威胁优先级别的最有效工具之一,可以帮助项目团队识别和评估项目中的风险,帮助项目团队对风险进行排序,清晰地展示风险的可能性和严重性,为项目团队制定风险管理策略提供依据。 如果没…...

SpringSecurity5|12.实现RememberMe 及 实现原理分析
security/day08 这个功能大家还熟悉么?我们在登录网站的时候,除了让你输入用户名和密码,还会有个勾选框: 记住我!!!不是让大家记住我哈。 值得一提的是,Spring Security 也提供了这个…...

持续集成交付CICD:Jenkins Sharedlibrary 共享库
目录 一、理论 1.共享库 2.共享库配置 3.使用共享库 4.共享库扩展 二、实验 1.连接共享库 2.使用共享库 三、问题 1.路径报错 2.readJSON 报错 一、理论 1.共享库 (1)概念 1)共享库这并不是一个全新的概念,其实在编…...

Linux--网络编程
一、网络编程概述1.进程间通信: 1)进程间通信的方式有**:管道,消息队列,共享内存,信号,信号量这么集中 2)特点:依赖于linux内核,基本是通过内核来实现应用层…...
数据结构 并查集
作用 快速的处理以下问题:【近乎O(1)的时间完成】 1.将两个集合合并 2.询问两个元素是否在一个集合中 用树的形式维护集合 基本原理 每一个集合用一棵树表示 每一个集合的编号就是根结点的编号,对于每一个结点,都存储其父结点…...
算法通关村第十六关黄金挑战——求滑动窗口中的最大值(滑动窗口与堆方法、双端队列法和直接比较法)
大家好,我是怒码少年小码。 今天这篇就讲一道题目,不难😎,但是一定要学会自己思考。 滑动窗口最大值 LeetCode 239:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。…...

常见树种(贵州省):009楠木、樟木、桂木种类
摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、楠木 …...

全志H616开发版
开发板介绍: 二、开发板刷机 SDFormatter TF卡的格式化工具、Win32Diskimager 刷机工具 刷机镜像为:Orangepizero2_2.2.0_ubuntu_bionic_desktop_linux4.9.170.img 使用MobaXterm_Personal_20.3连接使用 网络配置:nmcli dev wifi 命令接入网…...

【Spring boot】RedisTemplate中String、Hash、List设置过期时间
文章目录 前言Redis中String设置时间的方法Redis中Hash和List设置时间的方法Redis中Hash的put、putAll、putIfAbsent区别 前言 时间类型:TimeUnit import java.util.concurrent.TimeUnit;TimeUnit.SECONDS:秒 TimeUnit.MINUTES:分 TimeUnit.HOURS&…...

Nosql之redis概述及基本操作
关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…...

使ros1和ros2的bag一直互通
很多文章都是先source ros1 然后source ros2,再play bag source /opt/ros/noetic/setup.bash source /opt/ros/foxy/setup.bash ros2 bag play -s rosbag_v2 kitti_raw00.bag 但实测会出问题: 为使ros1和ros2的bag一直互通 sudo apt update sudo apt install ros-foxy-ro…...
【正点原子 linux 驱动编程】
在此声明,正用点编的说明书真的拉,丝毫不具备兼容性。。比如linux的第一个实验,其中包含的 unregister_chrdev_region 函数,fileoperation 结构体等均来自 <linux/fs.h> 文件,搞不懂,他们方ide.h&…...

使用Python的turtle模块绘制玫瑰花图案(含详细Python代码与注释)
1.1引言 turtle模块是Python的标准库之一,它提供了一个绘图板,让我们可以在屏幕上绘制各种图形。通过使用turtle,我们可以创建花朵、叶子、复杂的图案等等。本博客将介绍如何使用turtle模块实现绘制图形的过程,并展示最终结果。 …...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...