今天Rust 官方仓库里报告了一个神奇的Bug,该 Bug 似乎动摇了 Rust 的世界法则,该 Bug 的表现如下:
struct Foo {
x: i32,
}
fn main() {
let mut foo = Foo { x: 42 };
let x = &mut foo.x;
*x = 13;
let y = foo;
println!("{}", y.x); // -> 42; expected result: 13
}
正常情况下,最后的 y.x 应该输出 “13”,但是现在还是 “42”。这个结果意味着,代码第7行的可变引用并没有起到作用。
是不是很神奇?这个 Bug 让人感觉 Rust 世界的基本法则都崩塌了。
https://mp.weixin.qq.com/s/Qr3x-NbhOTlUtYyzlPQ4iQ
servo是一个使用Rust开发的浏览器,servo-unity这个插件可以在unity构建的在AR/VR世界中展示一个浏览器窗口,在虚拟世界中拥有类似现实中的浏览器体验。本文介绍了这个插件能够实现的功能,以及它的工作原理、架构设计和一些挑战。
https://github.com/MozillaReality/servo-unity
https://blog.mozvr.com/a-browser-plugin-for-unity/
http://jamesmcm.github.io/blog/2020/07/25/intro-dod/#en
Rust的文档已经很全面了,但是很多非英语母语的人理解起来可能比较困难,easy rust用比较容易理解的表述方式组织了Rust文档。
能降低文档理解难度,确实能让一部分人受益,如果你想通过这个文档学习,最好以官方文档为主,将这个文档作为参考,否则可能会走上偏路。
https://github.com/Dhghomon/easy_rust
在Rust项目中,如果你要对私有方法做测试,你该怎么办呢?临时将方法改为public?别再这样做了。你可以不创建tests文件夹,而是添加test模块,然后将方法改为pub(crate)。
#[cfg(test)]
mod tests;
From 日报小组 格朗, Lanpeng
社区学习交流平台订阅: