【Rust日报】 2019-05-16:在Rust中创建C/C++ API
时间:2022-06-25
本文章向大家介绍【Rust日报】 2019-05-16:在Rust中创建C/C++ API,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
「官宣」Rust四周年
#Rust
从2015年5月15日Rust 1.0版发布至今,取得了如下成绩:
- 连续四年StackOverflow的“最受喜爱的编程语言” (日报君感慨:近一年半看了很多社区内的各种动态,大家形容Rust用的最多的一个词是:Amazing,如果非要翻译成中文,我觉得「赞叹」比较好。)
- 稳定了嵌入式Rust
- rustc成为第一个专注于支持WASM的编译器
- Rust 2018 edition发布
- Crates.io通过了10亿次下载,拥有超过25,000个crate
- 现在全世界有超过100个聚会,分布在42个国家
- 6场新的大会在世界各地涌现(RustRush,RustCon Asia,Oxidize,Rust LATAM,Colorado Gold Rust,RustLab Italy)
这个清单如果继续写下去会很长,Rust已经在众多领域陆续开花了。Rust社区感谢有你!
Read More
为什么越来越多的知名项目用Rust来开发?
#Rust
社区@Mike写的一篇文章,侧重分享了为什么Rust适合区块链开发。
「中文」Rust Async: 标准库futures api解析
#async
Read More
「系列」Rust for OOP系列介绍
#learning
这位博主打算写一系列主题是Rust for OOP的文章,主要是针对有一定OOP语言开发经验的人来学习。可以先关注下。
Read More
在Rust中创建C/C++ API
#CPP
这篇文章介绍了一些可以帮助自动生成C/C++ API的优秀工具。比如:
- bindgen, 可以根据给定的头文件自动创建Rust绑定代码。对C语言比较友好,但是对C++来说,用途有限。因为C++的继承处理比较麻烦。
- cbindgen,可以方便地为Rust项目生成C API。它还支持以C++风格输出数据类型和模板等。
- cpp,这是一个Rust crate,可以帮忙编写C++ API。它提供了一个
cpp!
宏,可以在其中嵌入c++代码。它可以方便和cbindgen搭配使用。
作者还总结了一些在Rust中创建C/C++API的准则:核心逻辑和FFI层之间应该明确分离,最好把FFI代码置于一个单独的crate中,这样做的好处是设计Rust API不会受到FFI的太多影响。
Read More
meta: 用于解析人类可读性文本的DSL解析库
#dsl #parsing
可用于语言设计,自定义格式和数据驱动开发。该库提供了一种叫做「meta语言」的规则,用来告诉程序如何阅读要解析的文档。这些文档都是人类可读格式的。
最小化示例:
use piston_meta::*;
fn main() {
let text = r#"hi James!"#;
let rules = r#"
1 say_hi = ["hi" .w? {"James":"james" "Peter":"peter"} "!"]
2 document = say_hi
"#;
// Parse rules with meta language and convert to rules for parsing text.
let rules = syntax_errstr(rules).unwrap();
let mut data = vec![];
parse_errstr(&rules, text, &mut data);
json::print(&data);
}
输出:"james":true
meta
rplidar.rs : 思岚科技RPLIDAR产品的Rust SDK
#rOS
Rust比较适合机器人领域
rplidar.rs
see: 静态文件服务器
#staticFile
- 【干货荟萃】机器学习&深度学习知识资料大全集(二)(论文/教程/代码/书籍/数据/课程等)
- 逆天通用水印扩展篇~新增剪贴板系列的功能和手动配置,卸除原基础不常用的功能
- 【专知-Java Deeplearning4j深度学习教程06】用卷积神经网络CNN进行图像分类
- 万恶的剪贴板==》为存储而生
- AdaBoost算法(R语言)
- CTF---Web入门第六题 因缺思汀的绕过
- 小案例(六):预测小偷行为(python)
- 小案例(五):销量预测(python)
- SQL:插入指定标识列的数据时候的小错误
- 逻辑回归与梯度下降详解
- 决策树(R语言)
- ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
- CTF---Web入门第十三题 拐弯抹角
- 小案例(四):销售额下滑(python)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 常用功能加载宏——调用微信截图
- 常用功能加载宏——一维表转二维表
- OpenCV与图像处理(八)
- 类模块
- Netty入门篇
- 面试官:谈谈类加载器吧,你有没有看过类加载器的源码?
- 数据维度爆炸怎么办?详解5大常用的特征选择方法
- 给卷积神经网络动动刀:加法网络探究
- 用Python网络爬虫来看看最近电影院都有哪些上映的电影
- 使用 Azure Blob Stoage 实现一个静态文件服务器
- java学习--反射详解
- Redis中的管道Pipeline操作
- 查看YARN任务日志的几种方式
- 简易数字频率计(verilog HDL设计)(2020维护版本)
- C++核心准则CP.111:如果真的需要好双重检查锁,使用惯用模式