rust 闭包之什么是闭包?
在 rust 语言中,闭包是可以捕获周围作用域中变量的匿名函数。闭包的语法和其他语言的 lambda 表达式类似,它有能力捕获上下文中的变量,这使得它非常适合用作回调函数或临时的内联函数。 闭包通常使用一对垂直线 || 来定义,这些线内是闭包的参数,后面跟着闭包体。闭包可以捕获变量的方式有三种: 通过引用捕获(不可变借用),使用 Fn 特征。 ...
在 rust 语言中,闭包是可以捕获周围作用域中变量的匿名函数。闭包的语法和其他语言的 lambda 表达式类似,它有能力捕获上下文中的变量,这使得它非常适合用作回调函数或临时的内联函数。 闭包通常使用一对垂直线 || 来定义,这些线内是闭包的参数,后面跟着闭包体。闭包可以捕获变量的方式有三种: 通过引用捕获(不可变借用),使用 Fn 特征。 ...
嵌入式开发过程中,在 Linux 环境下通过串口读写数据是比较常见的场景,今天分享一下我平时使用的串口读写静态接口,不同于之前用rust实现的那个,这次用 c/c++ 实现。 代码 serial.cpp /* * @Author: 熊义 JassimXiong@gmail.com * @Date: 2024-01-23 08:01:18 * @LastEditors: xiong...
在嵌入式开发中经常使用到串口,今天准备演示一下如何使用 rust 来编写访问串口,下面以某公司的电池控制为例 一起来感受一下 rust 惊人的开发效率吧!我们使用 serialport 来实现,话不多说,上干货! 创建项目 cargo new serial_demo 添加依赖 在 Cargo.toml 文件里指定 serialport 的版本 [dependencies] ser...
在 cmake 中, INTERFACE 关键字用于定义接口库(Interface Libraries),这是一种不直接编译成二进制文件,而是用来传递使用要求(如编译选项、定义、包含目录等)给其他目标(如可执行文件或库)的特殊目标。 例一 假设你有一个接口库,你想为链接到它的目标添加一些编译器定义: cmake add_library(my_interface_lib INTERFAC...
在 cmake 中, IMPORTED 目标是指那些在项目外部预先构建好的库或可执行文件。通过将这些库或可执行文件作为导入的目标引入,可以在项目中使用它们,就像使用项目内构建的目标一样。这样做的好处是可以方便地重用已有的二进制文件,而无需从源代码重新构建它们,这对于依赖于第三方库的项目尤其有用。 举例 目录结构如下 ├── your_lib │ ├── include │ │ ...
std::shared_mutex 是 c++17 引入的一个同步机制类,它允许多个线程同时读取共享数据,但在写入数据时要求独占访问权。这种读写锁的设计旨在提高在多线程环境下对共享数据进行读取操作时的效率,因为它减少了锁的竞争,允许更高的并发度。当某个线程需要写入时,它会等待所有读操作完成后才进行,确保数据一致性和线程安全。 示例 #include <any> #includ...
每次畅游 github 的时候,总感觉不太尽兴,总感觉差点什么,下面给你支个阅读代码的小妙招,希望可以增加你乐趣。 下图是我们打开 github 仓库阅读源码时的界面。 用起来极其的不方便,我们可以采用 vscode 在线编辑器来阅读源码,绝对是不一样的体验。直接在上图的界面 按下键盘的 . 按键就自动切换到 vscode 在线编辑器了(或者把 https://github.xxxxx 改...
在 C 语言的世界里,裸指针是可以随意使用的,但是在 C++ 中,裸指针是不能随意使用的,因为它有可能导致内存泄漏。但是有时候确实需要绕不开裸指针,该怎么办?下面介绍一种使用 c++ 的方式来优雅的管理裸指针的方法。 示例 #include <memory> int main() { char *p = nullptr; std::shared_ptr<...
在嵌入式 Linux 系统中,经常需要将网络接口配置为静态 IP 地址,以确保设备在网络中具有固定的 IP 地址,便于管理和访问。本文将介绍如何通过编辑 /etc/network/interfaces 文件来配置静态 IP 地址。 了解interfaces文件 /etc/network/interfaces 文件是许多基于 Debian 的 Linux 发行版(包括 Ubuntu )用来...
想象如下这个场景,一个 linux 设备上有两个网卡,网卡一和网卡二分别处于两个不同的网段,并与其他设备相连,如何让连接 网卡一的设备和连接网卡二的设备网络互通? 下面介绍如何实现这个需求。 启用网络转发 vi /etc/sysctl.conf net.ipv4.ip_forward=1 使配置生效 sysctl -p 使用iptables配置规则 iptables -F ipta...