【Rust日报】 2019-04-01

2024-06-23 01:38
文章标签 rust 01 日报 04 2019

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

Rust算法俱乐部

#algo

台湾同胞搞的Rust学习算法的教程

rust-algo.club


cnx:用Rust实现的X11状态栏

#x11

cnx


rustsim 报告 #5

#rustsim

简要:

  • alga 0.9 和 nalgebra 0.18开始支持复数
  • 并且与#[no-std]保持兼容
  • nalgebra开始在几何代数上添加对三角函数和卷积的支持等等。

Read More


Rust 2.0要开始筹备了,主要目标有:

  • 为了更健康的crate生态,准备提供一个审查工具,帮助用户剔除掉一些依赖包
  • 语言简化。 考虑删除过程宏功能,准备汲取Zig语言的编译器动态反射来替代当前的过程宏。另外,还要放弃ref和mut修饰符,用于简化用户的开发体验。
  • 为了进一步增加安全性,将会添加: 依赖类型和有状态视图的支持。依赖类型有助于提升代码安全性,有状态视图有助于减少unsafe代码的使用。
  • 编译器改进。考虑让rust编译器比gcc编译的更快。

欢迎你的反馈。

img

祝大家愚人节快乐。

Read More


使用Rust的条件编译来实现Mock功能

#mock

写单元测试的时候经常需要mock一些场景,比如访问外部服务。但是传统的mock服务是在测试代码中创建一些模拟的对象。Rust中的一些mock框架也是类似的做法,参加「mock框架比较」。但是最大的问题是无法mock出代码中使用的外部结构。Rust中没有继承的概念,所以无法mock出标准库或者外部包中使用的结构类型。有一种解决办法是用trait或泛型,但是这种方法可能会使代码更复杂。而另一种方法则是利用条件编译,这也是本文作者想要介绍的。

#[cfg(test)]
use fake_clock::FakeClock as Instant;
#[cfg(not(test))]
use std::time::Instant;

在测试的时候使用fake_clock的mokc对象,而非测试的情况则使用Instant。

但这样也有一些缺点:

  • 所有测试用例共享一个mock,但是如果每个测试用例需要不同的mock行为,则需要想想其他策略
  • 更加需要集成测试。

在使用该文作者编写的http mock库mockito就可以使用条件编译:

#[cfg(test)]
use mockito;#[cfg(not(test))]
let url = "https://api.twitter.com";#[cfg(test)]
let url = &mockito::server_url();
  • Read More
  • mockito
  • Rust社区mock库比较

amiquip: 纯Rust实现的RabbitMQ客户端

#RabbitMQ

amiquip


RFC 2672: Re-export Cow from prelude

#rfc

diesel作者发起的这个RFC感觉比较接地气。

从标准库中重新导出std::borrow::Cow,以鼓励其可以得到更广泛的使用。

RFC 2672


一个Elixir/Javascript程序员准备切换到Rust的思考

#elixir #js

他发帖主要是想寻求一个快速学习的方法,如果有同样需求的初学者,可以看看讨论区的回复。

Reddit 讨论


yarte 0.2 现在支持actix-web 1.0.0-alpha

#yarte #actix

yarte号称最快的模板引擎,之前和Askama模板的作者有过Lisense相关的争议。

  • Read More
  • yarte

HugoToJSON: 用于生成Hugo文档的关键内容的json

#hugo

主要用来给Hugo静态站点提供搜索,目前该库请求review。

HugoToJSON


「愚人节之歌」 用Rust重写

有人在Reddit发布了一首歌的歌词:「用Rust重写」

Reddit 讨论贴

但好像没什么人参与讨论。。。


介绍Seqlocks

#STM #seqlocks

seqlocks(顺序锁)对读写锁的一种优化。使用顺序锁,读执行单元绝不会被写执行单元阻塞,也就是说,读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作时仍然可以继续读,而不必等待写执行单元完成操作,写操作也不需要等待所有读执行单元完成读操作才去进行写操作。用于受保护的资源很小,简单且经常访问,适用于写操作很少但必须很快的场景。Linux内核处理中断的函数使用了seqlock。

该文作者也是实验性软件事务内存库swym的作者,swym是对seqlock的一种实现,基于Transactional Locking II 论文。

  • Read More
  • swym
  • Transactional Locking II 论文

Rust中的惯用monad

#monad

「长文预警」本文作者描述了一种在Rust中表达Monad的新方法,用于证明在Rust中实现Monad的可行性。作者说这是他见过的最简单的设计。

Read More


日报订阅地址:

  • Telgram Channel
  • 阿里云语雀订阅
  • Stemmit
  • Rust.cc论坛
  • GitHub

这篇关于【Rust日报】 2019-04-01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s