当前位置: 首页 > news >正文

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中禁止的新功能.
注意,每个包都可20152018模式,它们可无缝地协同工作.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.rsfoo/子目录可共存;在子目录中放置子模块时不再需要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,并设置SIX6.
const fn必须要有确定性输出,你可以:
1,整数的算术比较符号
2,除&&||之外的所有布尔符号
3,构造数组,结构,枚举和元组
4,调用其他常fn
5,数组和切片上的索引式
6,字段访问结构和元组
7,从中读取(但不是静态,甚至不引用静态)
8,引用&和*
9,转换,但转换整数原始指针除外

新工具

2018版中,为所有用户准备了新一代工具:Clippy,RustfmtIDE支持.

Rustlinter,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)]

如果以前用过Clippylints,可这样迁移:

//旧
#![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数据处理流程 数据可视化 最终大屏效果 小结 概要 本文的主题是获取下厨房网站月度最佳栏目近十年数据&#xff0c;最终进行数据清洗、处理后生成所需的数据库表&#xff0c;最终进…...

buildadmin+tp8表格操作(5)自定义组装搜索的查询

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

企业级固态硬盘如何稳定运行?永铭固液混合铝电解电容来帮忙

企业级 固态硬盘 永铭固液混合铝电解电容 企业级固态硬盘&#xff08;SSD&#xff09;主要应用于互联网、云服务、金融和电信等客户的数据中心&#xff0c;企业级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&#xff1a;不应该使用三连符 Advisory建议类规范。 2…...

spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()

1.先说场景&#xff0c;在对mysql数据库表数据插入或者更新时都得记录时间和用户id 传统实现有点繁琐&#xff0c;这里还可以封装一下公共方法。 2.解决方法&#xff1a; 2.1&#xff1a;使用aop切面编程&#xff08;记录一下&#xff0c;有时间再攻克&#xff09;。 2.2&…...

如何构建风险矩阵?3大注意事项

风险矩阵法&#xff08;RMA&#xff09;是确定威胁优先级别的最有效工具之一&#xff0c;可以帮助项目团队识别和评估项目中的风险&#xff0c;帮助项目团队对风险进行排序&#xff0c;清晰地展示风险的可能性和严重性&#xff0c;为项目团队制定风险管理策略提供依据。 如果没…...

SpringSecurity5|12.实现RememberMe 及 实现原理分析

security/day08 这个功能大家还熟悉么&#xff1f;我们在登录网站的时候&#xff0c;除了让你输入用户名和密码&#xff0c;还会有个勾选框&#xff1a; 记住我&#xff01;&#xff01;&#xff01;不是让大家记住我哈。 值得一提的是&#xff0c;Spring Security 也提供了这个…...

持续集成交付CICD:Jenkins Sharedlibrary 共享库

目录 一、理论 1.共享库 2.共享库配置 3.使用共享库 4.共享库扩展 二、实验 1.连接共享库 2.使用共享库 三、问题 1.路径报错 2.readJSON 报错 一、理论 1.共享库 &#xff08;1&#xff09;概念 1&#xff09;共享库这并不是一个全新的概念&#xff0c;其实在编…...

Linux--网络编程

一、网络编程概述1.进程间通信&#xff1a; 1&#xff09;进程间通信的方式有**&#xff1a;管道&#xff0c;消息队列&#xff0c;共享内存&#xff0c;信号&#xff0c;信号量这么集中 2&#xff09;特点&#xff1a;依赖于linux内核&#xff0c;基本是通过内核来实现应用层…...

数据结构 并查集

作用 快速的处理以下问题&#xff1a;【近乎O(1)的时间完成】 1.将两个集合合并 2.询问两个元素是否在一个集合中 用树的形式维护集合 基本原理 每一个集合用一棵树表示 每一个集合的编号就是根结点的编号&#xff0c;对于每一个结点&#xff0c;都存储其父结点&#xf…...

算法通关村第十六关黄金挑战——求滑动窗口中的最大值(滑动窗口与堆方法、双端队列法和直接比较法)

大家好&#xff0c;我是怒码少年小码。 今天这篇就讲一道题目&#xff0c;不难&#x1f60e;&#xff0c;但是一定要学会自己思考。 滑动窗口最大值 LeetCode 239&#xff1a;给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。…...

常见树种(贵州省):009楠木、樟木、桂木种类

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、楠木 …...

全志H616开发版

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

【Spring boot】RedisTemplate中String、Hash、List设置过期时间

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

Nosql之redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言&#xff0c;用于执行对关系型…...

使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 驱动编程】

在此声明&#xff0c;正用点编的说明书真的拉&#xff0c;丝毫不具备兼容性。。比如linux的第一个实验&#xff0c;其中包含的 unregister_chrdev_region 函数&#xff0c;fileoperation 结构体等均来自 <linux/fs.h> 文件&#xff0c;搞不懂&#xff0c;他们方ide.h&…...

使用Python的turtle模块绘制玫瑰花图案(含详细Python代码与注释)

1.1引言 turtle模块是Python的标准库之一&#xff0c;它提供了一个绘图板&#xff0c;让我们可以在屏幕上绘制各种图形。通过使用turtle&#xff0c;我们可以创建花朵、叶子、复杂的图案等等。本博客将介绍如何使用turtle模块实现绘制图形的过程&#xff0c;并展示最终结果。 …...

机器学习在非洲传染病预测与监测中的实战应用

1. 项目概述&#xff1a;当AI遇见非洲传染病防控在公共卫生领域&#xff0c;时间就是生命&#xff0c;资源就是防线。对于非洲大陆而言&#xff0c;这句话的分量尤为沉重。这里常年承受着全球最沉重的传染病负担&#xff0c;从水源性传播的霍乱、致命性极高的埃博拉&#xff0c…...

中文技能图谱:开发者如何构建系统化学习路径与能力模型

1. 项目概述&#xff1a;一份中文技能图谱的诞生作为一名在技术社区和开源领域摸爬滚打了十多年的老博主&#xff0c;我见过太多“Awesome List”&#xff08;优质资源列表&#xff09;。它们通常是某个技术栈、框架或工具的精选合集&#xff0c;是开发者快速上手的利器。但当我…...

Python开发者必备:Awesome清单高效选型与实战指南

1. 项目概述&#xff1a;一份Python开发者的“藏宝图”如果你是一名Python开发者&#xff0c;无论是刚入门的新手&#xff0c;还是摸爬滚打多年的老手&#xff0c;我相信你都曾有过这样的时刻&#xff1a;面对一个具体的开发需求&#xff0c;比如想找一个好用的Web框架、一个高…...

终极指南:Awoo Installer - 快速安装Switch游戏的完整教程

终极指南&#xff1a;Awoo Installer - 快速安装Switch游戏的完整教程 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一款专为Ni…...

WelsonJS:基于Windows原生WSH的现代JavaScript桌面应用开发框架

1. 项目概述&#xff1a;WelsonJS&#xff0c;一个被低估的Windows原生JavaScript框架如果你是一名Windows平台的开发者&#xff0c;或者经常需要处理一些自动化、脚本任务&#xff0c;你可能对Node.js、Electron甚至PowerShell都很熟悉。但今天我想聊一个有点“复古”却又极其…...

ghpm:GitHub仓库包管理器,一键安装管理开源工具

1. 项目概述&#xff1a;一个为GitHub仓库量身打造的包管理器如果你和我一样&#xff0c;日常开发中重度依赖GitHub&#xff0c;那你肯定遇到过这样的场景&#xff1a;看到一个非常棒的仓库&#xff0c;想把它当成一个“包”或者“工具”安装到本地&#xff0c;或者集成到自己的…...

【硬件实战】串口通信排障指南:从RS-232到RS-422的链路诊断与修复

1. 串口通信故障排查的起点&#xff1a;物理层检查 当你面对一台死活不通信的设备时&#xff0c;先别急着怀疑人生。我经历过太多次这种场景&#xff1a;项目deadline就在眼前&#xff0c;现场客户盯着你调试&#xff0c;结果串口死活不出数据。这时候最忌讳的就是一上来就改波…...

别再手动K帧了!Maya路径动画保姆级教程,5分钟让模型丝滑走位

Maya路径动画终极指南&#xff1a;告别手动K帧&#xff0c;实现模型智能运动 在三维动画制作中&#xff0c;让角色或物体沿着预设路径运动是一个常见需求。无论是制作蛇形移动的生物、赛车漂移轨迹&#xff0c;还是摄像机漫游动画&#xff0c;路径动画都能大幅提升工作效率。传…...

从Eclipse转战IDEA?这份无缝迁移指南和习惯养成清单请收好

从Eclipse到IDEA&#xff1a;开发者高效迁移实战手册 第一次打开IntelliJ IDEA的Eclipse转岗开发者&#xff0c;往往会被它精致的界面和丰富的功能所震撼&#xff0c;但随之而来的是各种不适应——"我的项目结构怎么不见了&#xff1f;""这个快捷键怎么和Eclips…...

BooruDatasetTagManager:AI训练数据标注的终极解决方案,让标注效率提升10倍

BooruDatasetTagManager&#xff1a;AI训练数据标注的终极解决方案&#xff0c;让标注效率提升10倍 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 你是否曾经为数千张AI训练图像的繁琐标注工作感到头痛…...