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模块实现绘制图形的过程,并展示最终结果。 …...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
