之前看到了 TockOS(Rust实现的实时操作系统)团队在2015年写过的论文:https://www.tockos.org/assets/papers/tock-plos2015.pdf在论文里面该团队总结了 Rust 开发嵌入式的一些不足,以及他们总结出来 Rust 需要改进的地方。然而,这其实是TockOS 犯下的一个乌龙错误。我来帮大家梳理一下整个乌龙事件的过程,并且帮助大家对嵌入式开发
(目录) Rust是一种系统级的编程语言,具有许多优点和一些缺点。下面是对Rust的优缺点进行的简要分析,以及一个简单的案例: 优点: 内存安全:Rust在编译时通过所有权和借用规则来保证内存安全,可以有效避免空指针、数据竞争和内存泄漏等一些常见的安全问题。 并发性:Rust具有许多内置的并发性特性,如通道(channel)和原子类型(atomic types),使得编写高效且安全的并发代
原创 2024-03-19 09:58:14
183阅读
1点赞
视频地址头条地址:https://www.ixigua.com/i6765442674582356483 B站地址:https://www.bilibili.com/video/av78062009?p=1 github地址​​github地址​​介绍Option类型代表了一个可选的值,每个Option要么是一个Some中包含一个值,要么是一个None。Option的定义如下:pub enum O
视频地址头条地址:https://www.ixigua.com/i6765442674582356483B站地址:https://www.bili
原创 2022-11-07 11:48:37
81阅读
原标题:后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust这是Java,Go和Rust之间的比较。这不是基准测试,更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进行有意义的解读。为了尝试将苹果与苹果进行比较(也许是?),我在此比较中使用每种语言编写了一个Web服务。Web服务非常简
从前面的章节,我们可以看到,C与Rust/Rust与C的交互,核心就是指针的操作。两边的代码使用的是同一个程序栈,栈上的指针能放心地传递,而不用担心被错误释放的问题(栈上内存被调用规则自动管理,C和Rust中都是如此)。两边的代码可能使用不同的堆分配器,因此,堆上的指针的传递需要严格注意,需要各自管理各自的资源,谁创建谁释放。指针传递过程中,需要分析所有权问题。有了这种基本思维模型后,我们用 Ru
原创 2021-05-09 09:42:04
1328阅读
本章,我们继续来玩耍跨Rust 和 C FFI边界的指针。设计本节,我们设计这样一个示例:示例 1Rust
原创 2022-06-29 11:53:41
88阅读
本节主要介绍 Rust 导出共享库时,如何通过指针在 Rust 和 C 之间传递结构体。上一节的示例是结构体
原创 2022-06-29 12:00:07
111阅读
设计本节,我们设计这样一个示例:示例 1Rust 导出一个 so 库main 函数在 C 这边,链接 Rust 的 so 库C 中分配栈内存,交由 Rust 端填充Rust 端打印C 端打印示例 2同样的示例,C 中分配堆内存,交由 Rust 端填充,并且两边分别打印。下面我们直接看示例1的代码。示例 1 代码Rust 端。// src/lib.rsuse std::os::raw::c_int;
原创 2021-05-08 23:00:47
455阅读
这次,我们来关注一下Rust语言的基本特性到C的映射。我们已经了解了,Rust语言是多泛式(混合泛式)的语言,它可以做命令式(过程式)编程,也可以做面向对象编程,也可以做函数式编程。把Rust简单地归类为某种泛式的编程语言,都不太合适。Rust就是Rust。C语言是比较传统的过程式编程语言,因此,从Rust到C的转换,就会有一些无法直接对标的东西。于是,做这种映射工作就需要一些额外的规范或约定。本
原创 2021-05-09 09:27:48
860阅读
1点赞
这一篇我们来探讨Rust导出共享库时如何传递字符串,主要涉及字符串作为函数参数和函数返回值的处理细节。我们首先回顾关于字符串的基础知识,了解其在Rust和C中的区别,然后设计具体的示例进行实践,并整理出传递字符串的FFI编程范式。基础知识在 C 语言中,字符串可看作是由字符组成的一维的字节数组。但在内存中具体如何保存每个字符,这依赖于特定的字符编码。字符串常量默认是以 NUL 字符结尾,通常用转义
原创 2021-05-09 09:37:39
546阅读
1点赞
从前面的章节,我们可以看到,C与Rust/Rust与C的交互,核心就是指针的操作。两边的代码使用的是同一个程
原创 2022-06-27 09:54:59
242阅读
这节我们主要关注 Rust 导出共享库时的错误处理。主要涉及到:Option 和 Result 的处理pan
原创 2022-06-27 10:15:27
125阅读
本节主要介绍 Rust 导出共享库时,如何通过指针在 Rust 和 C 之间传递结构体。上一节的示例是结构体的内存在 C 端分配,本节介绍内存在 Rust 这边分配,由 C 填充和使用。设计本节的示例:Rust 中导出共享库,包含三个函数:student_new,Rust 端分配内存并用默认值初始化,由 C 端填充和更新;student_alice,Rust 端分配内存并初始化,由 C 端使用;s
原创 2021-05-08 22:56:10
730阅读
这节我们主要关注 Rust 导出共享库时的错误处理。主要涉及到:Option 和 Result 的处理panic 的处理错误对于软件来说是不可避免的,错误处理是保证程序健壮性的前提,编程语言一般都会有一些机制来处理出现错误的情况,大致分为两种:抛出异常和作为值返回。Rust 中没有异常,而是将错误作为值返回,并且通过将错误分成两个主要类别可恢复错误(Result<T, E>)和不可恢复
原创 2021-05-09 09:24:02
633阅读
这次,我们来关注一下Rust语言的基本特性到C的映射。我们已经了解了,Rust语言是多泛式(混合泛式)的语言
原创 2022-06-27 09:59:04
123阅读
这一篇我们来探讨Rust导出共享库时如何传递字符串,主要涉及字符串作为函数参数和函数返回值的处理细节。我们首
原创 2022-06-27 10:07:41
50阅读
Mac rust环境 rust安装: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rust更新: rustup update rust卸载: rustup self uninstall rust检查: rustc --
原创 2021-07-30 11:33:43
194阅读
1. 异步编程简介通常我们将消息通信分成同步和异步两种:同步就是消息的发送方要等待消息返回才能继续处理其它事情异步就是消息的发送方不需要等待消息返回就可以处理其它事情很显然异步允许我们同时做更多事情,往往也能获得更高的性能。异步编程,是一种被越来越多编程语言支持的并发编程模型。1.1 常见的并发编程模型并发编程相对于常规、顺序式编程不够成熟或“标准化”。结果是,我们表达并发的方式不一样,取决于语言
转载 2024-05-28 19:37:41
158阅读
视频地址头条地址:https://www.ixigua.com/i6765442674582356483B站地址:https://www.bilibili.com/video/av78062009?p=1网易云课堂地址:https://study.163.com/course/introduction.htm?courseId=1209596906#/courseDetail?tab=1g..
  • 1
  • 2
  • 3
  • 4
  • 5