【Rust日报】2020-08-28 Rust 1.46稳定版发布

2024-06-23 00:08

本文主要是介绍【Rust日报】2020-08-28 Rust 1.46稳定版发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rust 1.46稳定版发布

const fn提升

这个版本主要是对 const fn 的提升: https://github.com/rust-lang/rust/pull/72437/

现在已经支持:

  1. if, if let, and match

  2. while, while let, and loop

  3. the && and || operators

不过 if true 和while true 的问题还是没解决?

fn main() {let x;if true { x = 1;  }println!("{}", x);   // error : use of possibly-uninitialized `x`
}

博客中介绍了这个库 const-sha1 : https://github.com/rylev/const-sha1,该库允许你在编译期计算 sha1。

稳定了#[track_caller]属性

#[track_caller]是一个很有用的属性,使用这个属性标记了的函数中发生panic之后,异常堆栈中可以很详细的得知panic的地点(比如文件、行数、列数)。以前的版本调用Option和Result的unwrap()函数如果发生panic,错误堆栈里不会显示具体panic的地点,直到1.42版Option和Result的unwrap()函数使用#[track_caller]标记之后解决了这个问题。现在#[track_caller]稳定之后,开发者可以给任何可能发生panic的函数采用#[track_caller]标记了。

#[track_caller]
pub fn unwrap(self) -> T {match self {Some(val) => val,None => panic!("called `Option::unwrap()` on a `None` value"),}
}

官方博客:https://blog.rust-lang.org/2020/08/27/Rust-1.46.0.html

Rust Search Extension 0.11版发布

主要新功能如下:

  • 全新的域名:从旧的https://rust-search-extension.now.sh/改为http://rust.extension.sh/

  • 标准库索引更新到1.46

  • 支持使用前缀/来搜索Nightly文档

  • 增加:mirror命令,方便查找所有Rust源

链接:https://rust.extension.sh/changelog/

Linux内核开发者继续在评估如何使用rust来编写内核

7月份的时候有消息提到Linux内核那边在评估使用Rust来编写内核的可能性,这周的线上举行的Linux Plumbers Conference会议上有被更进一步的讨论到,并且以后还会有更多这样的讨论。

不过需要明确的是,这些Rust Linux 内核计划并不涉及用 Rust 重写内核的大部分内容(至少在可预见的未来是这样...) 。对于 Rust 的使用范围,会议上讨论到如果考虑到内存安全、并发性和其他 Rust 受到开发人员欢迎的领域可以优先考虑使用Rust,其他方面C将仍然是内核的主导语言。

除了弄清楚内核中 Rust 支持的限制,还要弄清楚 Kbuild/Kconfig 的构建集成,是否使用 Rust 的 Cargo 作为构建器,以及其他一些指导原则。

目前还没有确定的结果,但是这个话题在本周的 LPC 上仍然在讨论,当然在未来几周或几个月内核邮件列表上也会讨论。

会议的PPT:https://linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf

新闻链接:https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Rust-Path-LPC2020

学一点Rust内存模型会发生什么呢(2)

这是CrLF0710在知乎连载的一系列讨论Rust内存模型的专栏,讲得浅显易懂,推荐一看。

链接:https://zhuanlan.zhihu.com/p/201220495

Conflict-free Replicated Data Type (CRDT)的Rust实现

作者参考了这篇论文用Rust实现了CRDT算法。

CRDT是Conflict-free Replicated Data Type的简称,也称为a passive synchronisation,即 免冲突的可复制的数据类型,这种数据类型可以用于数据跨网络复制并且可以自动解决冲突达到一致,非常适合使用AP架构的系统在各个partition之间复制数据时使用;

链接:https://github.com/maidsafe/crdt_tree

参考资料:https://segmentfault.com/a/1190000019109149

Contributing to the Intellij-Rust plugin: writing an intention from scratch

作者在自己博客连载他给Intellij-Rust插件贡献的经历,这是第二篇文章。

链接:https://kobzol.github.io/rust/intellij/2020/08/25/contributing-2-subst-assoc-type-int.html

-- From 日报小组 Folyd

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

这篇关于【Rust日报】2020-08-28 Rust 1.46稳定版发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085792

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际