datalogic-rs - JSONLogic 的Rust实现
JSONLogic 是一种使用 JSON 编写可移植逻辑规则的标准。该库采用基于 AST 的评估系统,并具有两阶段执行模型:首先通过 from_value
将表达式解析为预编译的 AST,然后使用 apply
函数执行它们。
什么是 JSONLogic?
JSONLogic 允许你将逻辑表达式编写为 JSON 对象,这些对象可以轻松地存储并在不同系统之间传输。例如:
{
"max": {"var": "data"}
}
特性
- 完整实现了 JSONLogic 规范
- 基于 AST 的评估,实现高效执行
- 使用 serde 进行零拷贝反序列化
- 全面的测试覆盖,包括所有官方测试用例
- 纯 Rust 实现,依赖极少
- 支持自定义操作
为什么要有另一个实现?
虽然其他语言已经有几个 JSONLogic 的实现,但我希望创建一个健壮、类型安全的实现,利用 Rust 的强大保证和性能特性。
使用示例
use datalogic_rs::*;
use serde_json::json;
fn main() {
// 解析并编译表达式
let logic = json!({ "max": {"var": "data"} });
let rule = Rule::from_value(&logic).unwrap();
// 应用于数据
let data = json!({ "data": [1, 2, 3] });
let result = JsonLogic::apply(&rule, &data).unwrap();
println!("Result: {}", result);
}
https://github.com/json-logic/datalogic-rs
无恐慌(Panic) Rust:系统编程中的一种好技术
这篇文章探讨了在Rust编程语言中如何避免使用“恐慌”(panic),以及这种方法在系统编程中的应用和意义。作者强调了恐慌与错误处理之间的区别,指出恐慌是不可恢复的错误处理机制,可能会导致程序停止,而错误处理(通过返回Result)则允许程序继续运行并处理错误。文章提倡在系统库中采用“无恐慌”策略,理由是系统编程对可靠性和安全性的高要求。具体方法包括使用属性宏如no_panic,确保函数不会触发恐慌,并通过正式验证和广泛测试来确保代码的可靠性。文章还可能提供了如何在实际编程中避免恐慌的实例,比如通过改进错误处理策略或使用安全的抽象来替代可能不安全的操作。此外,社交媒体上的讨论表明,这种“无恐慌”方法在Rust社区中引起了广泛关注,成为系统级编程的潜在最佳实践。总的来说,这种策略不但增强了程序的安全性和可靠性,还可能在某些情况下提高性能,因为它减少了编译器和运行时对可能恐慌场景的处理。
https://blog.reverberate.org/2025/02/03/no-panic-rust.html
Rust如何改变机器人技术
**采访对象:**Carter Schultz,AMP Robotics的机器人架构师
背景: Carter Schultz在高中时通过参加机器人竞赛团队开始了他的机器人职业生涯,这使他从编程过渡到机械工程。大学期间,他在SpaceX工作过,负责火箭操作自动化,之后加入了AMP Robotics。
AMP Robotics简介: AMP Robotics由Matanya Horowitz成立,致力于使用AI技术进行回收分类。公司初期通过与一家附近的回收工厂合作,收集数据来构建AI模型。他们的目标是通过技术手段大幅提升回收行业的效率。
Carter的工作: 作为机器人架构师,Carter的工作包括为项目奠定技术基础,确保跨学科的项目协调成功。他对AMP目前的技术栈主要是C++感到不满,转而推动使用Rust语言,尤其是为新建的回收设施控制系统采用Rust。Rust提供了更高的安全性和可靠性,减少了常见的编程错误。
Rust在机器人中的应用: Carter详细描述了Rust如何在AMP项目中取代C++,尤其是在一个大型绿地项目上,他们用Rust编写了一个控制系统。他相信Rust能逐渐替代C++,因为它能提供更高效、安全的代码,尤其是在机器人系统的复杂性中。
ROS与Rust的关系: 他讨论了机器人操作系统(ROS)的发展,特别是ROS 2的变化及其对Rust的支持。Carter提出,如果Rust驱动程序和库足够成熟,未来可能不再需要ROS提供的微服务架构,因为Rust能以更低的开销实现相同的功能。
对机器人工程师的建议: 对于想要进入机器人领域的软件工程师,Carter建议学习ROS,亲手构建机器人项目,即使是简单的项目也能提供宝贵的经验。他强调动手实践和展示个人作品的重要性。
链接和职位: 他分享了在RustConf 2023上关于Rust在实际中的应用的演讲链接,以及关于RosLibRust的讨论。同时,鼓励有兴趣的人在Filtra上寻找Rust相关的职位。
结论: Carter对Rust在机器人领域的潜力充满信心,强调其在提高编程效率和系统可靠性方面的优势。他希望未来更多的基础设施和驱动程序能用Rust编写,以推动机器人技术的整体发展。
https://filtra.io/rust/interviews/amp-feb-24
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论