Welcome to the #4 edition of Rust in Blockchain, the hypest newsletter about the hypest combination of featured Berlin Blockchain week, one of the biggest blockchain events of the year, and a number of Rust We held Rust in Blockchain events in Berlin as well as in Hangzhou, the videos for which (in Chinese) Rust in Blockchain has a new logo, and there are stickers! Parity Ethereum v2.5.9 was released v2.5.8 was released Solana PR: Clippy work towards Rust 1.38 by @
Rust语言开发 基础语法 变量默认不可变,需用 mut 显式声明可变性: let x = 5; // 不可变 let mut y = 10; // 可变 所有权系统是核心特性,确保内存安全: let 使用 cargo clippy 进行代码检查,遵循 Rust 惯用模式。 ("Found {} primes", primes.len()); } 优化点: 使用 rayon 库实现数据并行 无数据竞争的线程安全保证 进阶开发建议 性能关键路径 选择 Vec 而非链表(Rust 条件编译处理平台差异: #[cfg(target_os = "linux")] fn platform_specific() {} FFI交互范例 #[no_mangle] pub extern "C" fn rust_add
Ownership Ownership是Rust语言所特有的,用于运行时内存管理的一套规则。这是Rust语言的核心特点。 首先在stack内存中栈顶分配了一块32个bit(4字节)大小的空间,直接存放了5,然后继续在栈顶分配了32bit的空间,依然存放了5,也就是说,两块紧挨着的内存空间,分别代表着x和y,都存放着5,这个很容易理解 which does not implement the `Copy` trait 3 | let s2 = s1; | -- value moved here 4 这点在Rust编程中一定要小心。 ownership) error[E0499]: cannot borrow `s` as mutable more than once at a time --> src/main.rs:5:14 | 4
# 为什么学 Rust Rus 是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。 2022年的前端圈中,像 Rust、Go 这种的偏底层的编程语言在整个前端工具链中使用得越来越多,为了不让自己落后,所以用这个系列的博客来记录自己学习 Rust 的整个过程。 下面是我找到的一些关于 Rust 资料的中文网站: https://www.rust-lang.org/zh-CN/ (opens new window) https://rustwiki.org/ (opens new window) Rust 程序设计 (opens new window) # 安装 Rust 参照官网的安装教程,我这里使用 WSL 安装 Rust 的开发环境,直接使用如下的命令即可
4年来,它优雅的解决高并发和高安全性系统问题的能力,受到了越来越多开发者的喜爱。并且连续4年,在Stack Overflow开发者「最受喜爱编程语言」评选中获得第一名。 ? 是一套使用Rust开发的许可链开发框架。使用exonum,可以方便的搭建联盟链。 结束语 作为一个刚刚4岁的语言(今天2019年5月15日,是Rust语言正式发布4周年生日),Rust语言正在IT工业各个领域快速发展,而由于区块链本身的特质,区块链领域是较早接纳Rust的领域之一。 id=6807cc27-0e6c-4bc9-baa3-8b0c68ae9529 相信,随着Rust语言的 async/await 特性在今年的稳定,使用Rust进行区块链开发会变成更加轻松方便。 选择使用Rust作为第一开发语言的区块链项目也会越来越多,我们会迎来一波的Rust语言学习高潮。 谨以本文作为Rust 4周年的生日礼物,祝Rust生日快乐!
安装Rust 通常情况下,我们安装Rust是通过Rustup这个工具来进行的,它是一个 Rust 安装程序和版本管理工具。 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 更新Rust 现在的Rust更新非常频繁,可以通过在终端执行如下命令来更新你的 Rust。 source ~/.bashrc 卸载 卸载 Rust 和 rustup,在终端执行以下命令即可卸载: rustup self uninstall 编辑器 那么用什么写Rust代码呢? 只需要搭配插件rust-analyzer即可。 至此,整个Rust的开发环境就搭建完毕了。
、C++、Rust,相对来说,使用 Rust 开发在开发效率和便捷性、包体积大小等方面还是有很大优势的,因此,笔者也建议使用 Rust 来作为 WebAssembly 的开发语言。 帮助大家建立 Rust 开发 WebAssembly 的心智模型:由于使用 Rust 入门开发 WebAssembly 已经足够简单,官方实际上把很多内容进行了封装,比如 Rust 和 JS 交互的部分等 本文的目标读者: 对前端有一定经验,并且对 WebAssembly 感兴趣的同学 有 Rust 的开发经验,或对使用 Rust 开发 WebAssembly 感兴趣的同学 已经使用了 Rust 开发 WebAssembly Rust+WebAssembly 的能力 在开始开发之前,我们可以先大致了解下 Rust+webassembly 能干些什么: 可以使用 Rust std,可以使用 Rust 的大多数第三方库(部分涉及多线程的 self.index as u32 } } #[wasm_bindgen] pub fn get_version() -> Duck { Duck { index: 4
https://github.com/theseus-rs/postgresql-embedded 类似的还有这个项目:https://crates.io/crates/pg-embed 在Rust中使用编译驱动开发 讲了TDD,讲了具体的事例来说明如何高效地利用Rust编译器来帮助开发。 https://www.youtube.com/watch? v=Kdpfhj3VM04&t=2s 用Rust实现 mini-lsm LSM(Log Structured Merge Tree) 是数据库中的重要概念。 skyzh.github.io/mini-lsm/00-preface.html https://github.com/redixhumayun/mini-lsm 示例:如何在TypeScript中使用Rust 可参考:https://github.com/thiagodejesus/rust-wasm --
接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. , if it hasn't been explicitly defined if std::env::var_os("RUST_LOG").is_none() { std::env ::set_var("RUST_LOG", "example_sse=debug,tower_http=debug") } tracing_subscriber::fmt::init() processing request latency=0 ms status=302 已经正确处理,并发生了302重定向,但是浏览器里会报错connection_reset(不知道是不是axum的bug) 4. ::set_var("RUST_LOG", "example_sse=debug,tower_http=debug") } tracing_subscriber::fmt::init()
Rust 官网就有一个专门的页面介绍 Rust 生态在 wasm 开发的优势,并且提供了一个电子书《Rust and WebAssembly》,介绍了如何使用 Rust 开发 wasm 模块。 参照电子书的教程,我使用 Rust 开发了一个 wasm 模块和一个简单的前端页面,用于演示康威生命游戏。 项目地址:duyixian1234/wasm-game-of-life 演示页面: Life Game 整个开发过程的体验十分顺畅,具体的开发过程就不赘述了,感兴趣的同学参考电子书一步一步来就可以了。 短暂的接触之后,我发现 Rust 生态在很多方面都对 wasm 开发提供了卓越的支持: 比起 C/C++,Rust 语言拥有丰富的表达能力和零成本的抽象,在安全性上也有更好的保障。 使用 Rust 工具链编译出来的 wasm 模块可以直接作为 ES 模块导入到 JavaScript 中,并提供了完善的 TypeScript 类型定义,对于前端开发者来说非常友好。
@[TOC](Rust 学习心得<4>:async/await 如何工作) 2019年底Rust正式支持 async/await语法,完成了Rust协程的最后一块拼图,从而异步代码可以用一种类似于Go的简洁方式来书写 参考 Futures Explained in 200 Lines of Rust
本文是对 使用 Rust 开发一个微型游戏【已完结】[1]的学习与记录. cargo new flappy 在Cargo.toml的[dependencies]下方增加: bracket-lib = ; main_loop(context, State::new()) } 参考资料 [1] 使用 Rust 开发一个微型游戏【已完结】: https://www.bilibili.com/
当下(2022)Rust 在移动端的开发体验如何 没有 Java/Kotlin 代码,不使用 AndroidStudio 和 Gradle, 秒级编译并打包 Apk 运行 Rust 编译静态库打包到 XCFramework Firefox Application Services 飞书客户端非 UI 部分使用 Rust 跨平台实现 个人开发者在移动端的尝试 Rust 的案例 Rust & cross-platform mobile : A Simple, Updated Guide 更多的案例收录,可以参看这篇Rust 移动开发与跨平台模式探究。 用 Rust 做开发,和系统 API 无关的业务逻辑,在桌面环境完成并测试,最后到对应的客户端验证。效率比起所有逻辑都在手机上验证高多了。 开发效率 Rust 的学习曲线陡峭,编译器对借用,生命周期的检查。导致新手在初期开发效率低下。
Rust版coreutils现在可以用来跑Debian啦 现在可以用Rust版的Coreutils (cp, chmod, ls, rm, tail, install..) 来运行Debian啦。 Rust在游戏开发中的进展,2021年2月 详情请见:https://rust-gamedev.github.io/posts/newsletter-019/ Rust在系统开发中的进展,2021年2 月 详情请见:https://rust-osdev.com/this-month/2021-02/ Meetup - Rust游戏开发 这个月的Rust游戏开发meetup将举行于 16:00 GMT。 来学学怎么用Rust类型系统完成一些看似不可能的任务吧。 项目地址:https://crates.io/crates/ipipe 阅读更多:https://www.reddit.com/r/rust/comments/m0rh4p/im_making_a_crossplatform_namedpipe_api_in_rust
超棒的 Rust 浏览器搜索扩展 该扩展可以让你直接在地址栏即时搜索 Rust 文档,crates.io 上相关的库,Rust 内建方法甚至 Rust 官方书籍等等。 Rust-IPFS 正在寻找 Rust 开发者 Parity 在 rust-libp2p 中所做的出色工作的基础上,已经开始进行全职的 Rust-IPFS 实现工作。 Equilbrium 在协议实验室的支持下带头推动了新的社区和实现,并且正在寻找更多的 Rust 开发人员来帮助构建 InterPlanetary File System 的 Rust 实现。 All Hands 回顾 【来自 Rust 官博的消息】原定于 3 月 16 日至 20 日在希腊塞萨洛尼基举行的 Rust All Hands 活动在 1 月被取消。 阅读更多请看:https://blog.rust-lang.org/inside-rust/2020/03/18/all-hands-retrospective.html ripgrep 12 更新 ripgrep
这些结构体的组合使用,使得Cargo能够记录编译过程中各个阶段的时间,并以易读的格式输出到终端,方便开发者了解编译过程中的性能瓶颈。通过这些计时信息,开发者可以更好地优化编译速度和资源利用。 Cargo的源代码中扮演着几个重要的角色,包括: 确定Rust标准库的版本:此文件用于确定将由Cargo编译器使用的Rust标准库版本。 Rust程序的链接问题。 这些报告和诊断信息可以帮助开发人员了解在迁移到未来版本时可能会遇到的兼容性问题,并提供解决方法。 这样,Cargo就能够实现高效的增量编译和自动化构建过程,提高了项目的开发效率和可靠性。
File: rust/library/core/src/asserting.rs 在Rust源代码中,rust/library/core/src/asserting.rs是一个用于断言的模块,它提供了一些工具来帮助开发者编写和处理断言 这些函数对于处理字节序列和字符串等情况非常有用,可以大大简化开发者的工作并提升程序的运行效率。 在开发者编写自己的代码时,可以直接使用这些宏来快速生成对应的整数类型,并获得相应的功能和方法。通过这种方式,可以简化整数类型相关的代码实现,提高开发效率。 这个文件实现了一种名为Dragon4的策略,用于高效地将浮点数转换为十进制字符串。 Dragon4算法是一种基于整数算术的转换策略,它可以通过二进制浮点数的位表示来近似计算其十进制表示。 使用基于整数运算的Dragon4算法,按照精度和舍入位置生成候选的十进制表示。 选择最接近原始浮点数的候选表示,并进行舍入。
文章的总结思考部分给出了答案,所以总结来说就是: 他们花了一年时间用 godot-rust 来实现了第一款上架 steam 的独立游戏 BITGUN[4] , 然后他们沉迷于用 Rust 实现游戏引擎 这是一些[视频](https://video.hardlimit.com/w/7usCE3v2RrWK6nuoSr4NHJ[15])。代码有大约 45,000 行的安全 Rust。 darthdeus/comfy [3] 《Unrelaxing Quacks》: https://store.steampowered.com/app/2331980/Unrelaxing_Quacks/ [4] [7] 暴雪《守望先锋》就使用了 ECS 架构: https://johnyoung404.github.io/2019/06/27/ECS%E6%9E%B6%E6%9E%84%E7%AE%80%E4% https://www.reddit.com/user/JoshTriplett/ [15] 视频: https://video.hardlimit.com/w/7usCE3v2RrWK6nuoSr4NHJ
Emacs 配置 Rust 开发环境 喜欢使用 Emacs 的小伙伴如果想开发 Rust, 可以参考这篇文章进行详细的设置. ? 原文链接: https://robert.kra.hn/posts/2021-02-07_rust-with-emacs/ HighwayHasher: HighwayHash的 Rust 高效实现 HighwayHasher Rust 知识精炼 该文是作者将自己的所学的 Rust 知识整理到这里. 原文链接: https://www.greyblake.com/blog/2021-02-07-rust-knowledge-refinement/ 使用 Rust 构造一个 OpenStreetMap tantivy 是一个搜索引擎库, 类似 lucene, 但是用 rust 写的.
日志,A logger, maybe Gamedev #4: 全栈Rust编程的好处 Gamedev #4: Benefits of full-stack Rust https://www.jakobmeier.ch /blogging/Paddlers_4.html 如何在服务器端和客户端之间高效的做数据同步一直以来都是一个巨大的挑战。 这篇博文分享一下博主在这个领域编程的宝贵经验,用rust语言做同时服务器端和客户端的endpoint开发。 博主的经验分享是基于一个长期开发的基于浏览器玩的在线多用户游戏Paddlers。 语言开发的安全的TypeScript/JavaScript Runtime Deno 1.0 - A Secure TypeScript/JavaScript Runtime Built In Rust 最近几年,像Rust和GO语言这样的编程语言已经可以 让用户编译各种非常精妙的原生机器码变得越来越简单,这些编程语言对计算机基础设施的开发至关重要。