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模块实现绘制图形的过程,并展示最终结果。 …...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
