【Rust日报】2020-10-26 Box 即将支持自定义的 allocators

2024-06-22 23:58

本文主要是介绍【Rust日报】2020-10-26 Box 即将支持自定义的 allocators,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Box 即将支持自定义的 allocators

下面的 pull request 合并之后, Box 将会支持自定义的 allocators.

Box 的定义将会从 Box<T> 变成 Box<T, A = Global>.

https://github.com/rust-lang/rust/pull/77187

Rust 的 Hyper 会让 Curl 变的更安全

curl 是使用 C 语言编写的流行工具, 已安装在全世界 600 多万的设备上. 前段时间, curl 开始尝试增加一个新的 backend, 该 backend 是 Rust 编写的 HTTP 库, Hyper. 但是这并不意味着 curl 会用 Rust 重写. 除此之外, ISRG 的工程师也在尝试使用 Rusttls 作为一个 TLS 的 backend.

https://www.infoq.com/news/2020/10/memory-safe-curl-rust/

使用 OIBIT 实现 specialization 功能

名词解释:

  • OIBIT, 全称 opt-in built-in traits, 他的另外一个名字我们比较熟悉 auto traits.

  • specialization, 是 nightly Rust 提供的一个 feature. 允许我们在 traits 实现有重叠的时候标记一个 default 的实现.

阅读完本文,你将了解到:

  1. auto traits 的特性.

  2. specialization 特性是什么, 解决什么问题.

  3. 如何使用 auto traits 来模拟实现 specialization 这个特性.

https://pwychowaniec.com/en/posts/imitating-specialization-with-oibits/

move/copy/drop 语义和 zeroing data 的一个小陷阱.

Rust 的 value 被 drop 之后,默认并不会变成零值的. 但是,在有一些高度安全的设备和行业中, 我们是不希望把一些敏感的信息在内存中停留时间超过他本该停留的时间, 由于上面特性, 会导致即使变量 drop 了, 数据仍然是在内存中的, 直到该内存重新被覆盖.

crate zeroize 可以帮助我们来做到安全的设置数据为零值, 而且可以防止编译优化.

本文主要介绍了 stack 变量和 heap 变量在使用 zeorize 的时候一个小陷阱.

https://benma.github.io/2020/10/16/rust-zeroize-move.html

Ungrammar : 描述 concrete syntax tree 的一种新形式

Ungrammer 例子如下

Module =Attr* Visibility?'mod' Name(ItemList | ';')

他和 EBNF 很像, 区别在于, Ungrammer 描述的是 concrete syntax tree, 是一系列数据或者一系列 trees.

https://rust-analyzer.github.io/blog/2020/10/24/introducing-ungrammar.html

--

From 日报小组 BobQin,FBI小白

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

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

这篇关于【Rust日报】2020-10-26 Box 即将支持自定义的 allocators的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Rust 智能指针的使用详解

《Rust智能指针的使用详解》Rust智能指针是内存管理核心工具,本文就来详细的介绍一下Rust智能指针(Box、Rc、RefCell、Arc、Mutex、RwLock、Weak)的原理与使用场景,... 目录一、www.chinasem.cnRust 智能指针详解1、Box<T>:堆内存分配2、Rc<T>:

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp