草庐IT

rust-tokio

全部标签

Rust采用率不断提高,2022年度Rust调查报告出炉!

8月7日,Rust发布了2022年度Rust调查报告结果!Rust连续第六年对Rust编程语言进行了调查,项目维护者、贡献者和那些普遍对Rust的未来感兴趣的人参与了调查。本年度Rust状况调查于12月5日开始接受提交,一直持续到2022年12月22日。Rust团队希望找到一个更便捷、更可持续的流程,以便更快地得出结果,并为社区提供更多可行的见解。经过半年多的时间,终于发布了此次调查的结果!1、参与SummerISHERE2022年,总共有9433名“Rustaceans”完成了此次调查,完成率高达82%,而去年的完成率为76%。参与度的增加表明人们对Rust及其不断变化的用户群的兴趣日益浓厚

浅析 Parcel 的 Rust 打包算法 Demo

Parcel是一个类似于Webpack、Rollup的构建工具,相较于这一类构建工具,Parcel主打的卖点是零配置并开箱即用,虽然某种程度上这种零配置的方式会使得项目定制化变得很困难,但Parcel尽量提供了一套自身的构建最佳实践,以后有机会去单独介绍一下Parcel的整体构造,这里不展开讲解了。Parcel在2.8.0的更新中提到使用了一个新的打包算法,相比较于之前速度提升了2.7倍,并且体积还减小了2.5倍。同时还有其他的比较夸张的性能提升,例如6倍的热更新速度,增量构建的再次构建性能提升了10倍。同时作者强调该算法是由来自Atlassian的团队贡献的,他们为此花了大约一年的时间使得其

Rust 编写的 P2P 蠕虫:P2PInfect

近日研究人员发现了一个新型P2P蠕虫,将其命名为P2PInfect。该蠕虫采用Rust语言编写,以Redis服务为攻击目标。研究人员在超过三十万个对外暴露的Redis中发现了934个可能受到该蠕虫影响的实例。P2PInfect利用Lua沙盒逃逸漏洞CVE-2022-0543进行攻击,该漏洞CVSS评分为10分。P2PInfect可能是攻击者利用该漏洞攻击最典型的一个例子。研究人员认为,P2PInfect只是攻击者进行潜在攻击的第一阶段。尽管样本有命名为miner的,但并未发现实际的挖矿行为。P2P蠕虫研究人员在2023年7月11日发现了第一个P2PInfect样本。命名为P2PInfect是由

Rust 编程小技巧摘选(5)

目录Rust编程小技巧(5) 使用vec的push方法使用String的append方法使用push_str拼接字符串使用Result的and_then方法使用Option的map方法使用match和enums来匹配不同类型使用Option的or方法组合多个Option使用Result的map方法转换成功值使用AsRef和Borrow Rust编程小技巧(5) 使用vec的push方法要将元素添加到Rust中的Vec中,可以使用push方法。这比手动增加索引并重新分配内存要更高效。letmutvec=vec![1,2,3];   vec.push(4);   println!("{:?}",v

算法leetcode|67. 二进制求和(rust重拳出击)

文章目录67.二进制求和:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:67.二进制求和:给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。样例1:输入: a="11",b="1" 输出: "100"样例2:输入: a="1010",b="1011" 输出: "10101"提示:14a和b仅由字符'0'或'1'组成字符串如果不是"0",就不含前导零分析:面对这道算法题目,二当家的再次陷入了沉思。直接用API将字符串按照2进制转成整型,相加,然后再按照2进制转成字符串,打完收功,但是这种方式有可能会导致整形溢出。按照字符的方式逆向逐个处理,模拟

Rust 编程小技巧摘选(4)

Rust编程小技巧(4) 使用std::fs模块Rust的std::fs模块提供了许多方便的函数,可以用于读写文件和目录。使用std::fs可以避免使用不安全的C函数,提高代码的可读性和可维护性。usestd::fs::File;usestd::io::prelude::*;fnmain()->std::io::Result{  letmutfile=File::create("output.txt")?;  file.write_all(b"Hello,world!")?;  Ok(())}使用lazy_static宏lazy_static宏可以用于定义全局静态变量,该变量的值只会在首次使用

Elixir 和 Rust 是一个很好的组合

一、​问题我们需要执行CPU密集型或系统级编程任务,而hex.pm中没有好的解决方案,在这个例子中,我们假设没有好的方法可以使用Elixir进行图像处理。通常情况下,有一个名为image的高质量Rust库声称它就是解决方案!但是糟糕,我们的整个应用程序已经用Elixir编写了,我们真的不知道如何很好地使用Rust。Elixir如何转向Rust代码以实现高性能操作?二、解决方案输入rustler,这个库旨在使使用Rust及其包生态系统变得简单。让我们开始吧!按照入门指南,首先将rustler添加到我们的mix.exs文件中:{:rustler,"~>0.27.0"}一旦我们运行mixdeps.g

Elixir 和 Rust 是一个很好的组合

一、​问题我们需要执行CPU密集型或系统级编程任务,而hex.pm中没有好的解决方案,在这个例子中,我们假设没有好的方法可以使用Elixir进行图像处理。通常情况下,有一个名为image的高质量Rust库声称它就是解决方案!但是糟糕,我们的整个应用程序已经用Elixir编写了,我们真的不知道如何很好地使用Rust。Elixir如何转向Rust代码以实现高性能操作?二、解决方案输入rustler,这个库旨在使使用Rust及其包生态系统变得简单。让我们开始吧!按照入门指南,首先将rustler添加到我们的mix.exs文件中:{:rustler,"~>0.27.0"}一旦我们运行mixdeps.g

Rust中的高吞吐量流处理

作者|Noz编译|王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序。最后,作者介绍了如何通过测量空闲和阻塞时间来优化流处理程序的性能,并将这些内容同步至Twitter和blog。图片此外,作者还提供了一些其它方面的优化建议,例如:在实际系统中,应考虑将线程固定至CPU内核上或使用一种版本的绿色线程减少上下文切换。在处理流时,通常需要为结果分配内存。内存分配是昂贵的,所以,在以后的文章中,作者将会介绍一些优化内存分配的好方法。首先,分别介绍下在同步和异步Rust中的流特质。一、同步和异步Rus

算法leetcode|66. 加一(rust重拳出击)

文章目录66.加一:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:66.加一:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。样例1:输入: digits=[1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字123。样例2:输入: digits=[4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字4321。样例3:输入: digits=[0] 输出: [1]提示:10分析:面对这道