扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

说到树莓派编程语言,大部分首先都会想到的是 Python C 和 C++...

2025/11/17
1172
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

若我们今日发起一项投票,Python、C和C++很可能会位列树莓派编程语言排行榜前列。但最近,我偶然发现了另一种语言。尽管它不那么广为人知,但潜力巨大,尤其是当你在项目中追求速度与性能时。

Rust融合了C/C++的速度、现代语言的安全性以及日益增长的物联网支持,成为树莓派项目的强大选择。

在本教程中,我们将从安装Rust开始,一路探索到编写首个“Hello World”程序。更进一步,我们还将编写一个小程序,让树莓派上的LED灯闪烁起来。

为何在树莓派上使用Rust?

初用树莓派时,我首先接触的语言(有趣的)是C++。几乎每个人都是从Python开始的,但那时,我正在进行的项目是以C++为基础的。那是一个循迹机器人。

https://raspberrytips.com/best-raspberry-pi-robots-kits/

项目完成后,我转而使用Python。它最终成了我的最爱,因为Python资源丰富、库众多,且语法易用、可读性强。你可以查看我们关于树莓派Python与C++对比的文章,了解哪种语言更适合你的项目。

几年后,我偶然接触到了Rust。我说“偶然”是因为,尽管我有扎实的软件开发背景,但在此之前从未使用过或编写过一行Rust代码。

我决定在一个之前用Python做过的与网络安全相关的小项目上使用Rust,我发现Rust赋予了我们C和C++般的速度。

你看,Python是解释型语言,这意味着运行时需要解释器来逐行解释代码,因此执行速度较慢。而Rust是编译型语言,在执行前直接转换为机器码。因此,Rust一旦编译完成,运行速度就快得多。

与其他树莓派语言的对比

语言 优势 劣势 最佳用途
Python 易于学习,社区庞大,树莓派教程众多。 适合初学者,快速原型设计,自动化脚本 适合初学者,快速原型设计,自动化脚本。
C/C++ 高性能,直接硬件访问,广泛用于嵌入式系统 手动内存管理,学习曲线陡峭。 适合初学者,快速原型设计,和自动化脚本。
Rust 性能接近C/C++,内存安全,现代工具(cargo)。 编译时间长,生态系统比Python小。 可靠的物联网应用,安全高效的树莓派项目。

在树莓派上设置Rust

现在你已经对Rust有了很好的了解,我将带你完成在树莓派上安装和设置Rust的过程。这是一个简单的过程,只需几分钟。

但首先,让我回顾一下本教程所需的一些物品。

要求

要继续学习,请确保你已具备:

更新的树莓派操作系统:在终端中运行以下命令以保持软件包更新是一个好方法:

sudo apt updatesudo apt upgrade

无论如何,如果你还没有安装操作系统,可以查看我们关于如何在树莓派上安装(或重新安装)树莓派操作系统的文章。

https://raspberrytips.com/install-raspberry-pi-os/

稳定的互联网连接:由于我们将安装多个软件包,你需要一个良好且活跃的互联网连接,无论是通过WiFi还是以太网

访问终端:可以直接在树莓派终端上访问,也可以通过SSH访问。

cURL(客户端URL):你需要这个工具来下载Rust安装脚本。你可以使用以下命令检查是否已安装:

curl --version

如果未安装,请使用以下命令安装:

sudo apt install curl

在树莓派上安装Rust

安装Rust最简单的方法是使用rustup。它是安装和管理Rust编程语言的官方推荐工具。https://rustup.rs/

打开终端并运行以下命令:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

这将下载并安装Rust以及Cargo(Rust的软件包管理器和构建工具)。在安装过程中,你会看到一个提示,要求选择你想要的“安装选项”。它们包括:

继续标准安装(默认-只需按回车键)。

自定义安装。

取消安装。

只需输入“1”并按回车键继续。

如果你的互联网连接良好,安装只需几分钟。完成后,我们需要做的第一件事是确保终端知道在哪里找到Rust。通常,rustup会处理这一点,但为了确保无误,请运行以下命令:

source $HOME/.cargo/env

验证Rust安装

安装Rust后,下一步是在开始编写代码前验证安装。你可以使用以下命令轻松完成:

rustc --version

在树莓派上编写首个Rust程序

至此,我们已经一切就绪。Rust已经安装在树莓派上,现在我们可以深入到精彩的部分——编写我们的首个Rust程序。

使用Cargo创建新项目

我将使用Rust内置的软件包管理器和构建系统Cargo,它使项目设置和管理变得超级简单。Download now

打开终端并运行以下命令:

cargo new hello_rustcd hello_rust

这两个命令做了两件简单的事情。第一个命令创建了一个全新的Rust项目,名为hello_rust。Cargo立即设置了我们需要的一切,无需寻找文件或构建工具。

第二个命令帮助你导航到新创建的hello_rust目录。

如果你遇到“Command ‘cargo’ not found”错误,这意味着Crago未随rustup成功安装。不过,你可以使用以下命令继续安装:

sudo apt install cargo

了解项目结构

当你查看项目结构(hello_rust文件夹)时,你会发现两个主要部分:

Cargo.toml:这是项目的配置文件。它就像一张“配方卡”,我们在上面列出项目名称、版本以及我们想要使用的任何依赖项(额外的库)。如果你之前使用过JavaScript框架,如ReactJS,它有点类似于“package.json”文件。

src/main.rs:这是实际的Rust源代码文件。默认情况下,Cargo会在这里为我们放置一个简单的“Hello, world!”程序。

以下是我文件夹的截图:

现在,如果你进入src文件夹并打开main.rs文件,你会看到一些默认代码,如下所示。

fn main() {    println!("Hello, world!");}

打印“Hello, Raspberry Pi!”

那只是一行简单的代码。为了体验Rust编程语言的魅力,让我们做点稍微复杂的事情,这需要几行代码。

我们将创建一个Rust程序,提示用户输入他们的名字(比如Joe),然后打印一条消息,如“Welcome Joe – this is Raspberrytips.com”。

use std::io;fn main() {    println!("What is your name?");    // Create a new mutable String to store input    let mut name = String::new();    // Read input from the terminal    // This prompts users to enter their name in the terminal    io::stdin()        .read_line(&mut name)        .expect("Failed to read line");    // Trim whitespace (like newline) from the input    let name = name.trim();    // Print the personalized message    println!("Welcome {} - this is Raspberrytips.com", name);}

现在,让我快速概述一下这个程序的功能:

我们导入std::io:这将使你能够在程序中实现读取输入或输出(I/O)的功能。这使我们能够从终端读取用户的名字。

接下来,我们使用以下行提示用户输入他们的名字:println!(“What is your name?”);。

我们使用read_line()来获取用户输入的内容。

用户输入名字后,会按回车键。这会在我们的代码中引入一个不需要的换行符(n)。我们使用.trim()来移除这个换行符。

最后,我们使用{}来插入他们的名字,打印欢迎消息。

运行程序

现在,让我们运行这个程序,看看结果如何。要运行Rust程序,你只需导航到项目文件夹并输入以下命令:

cargo run

Cargo将编译代码并运行它。如果一切正常,你会看到一个提示,要求你输入名字。

输入你的名字并按回车键。程序将显示包含你名字的欢迎消息。

那真的很有趣。这让我想起了几年前学习C语言的时光。那是我学的第一种编程语言,我们可以编写一些像这样需要用户输入的有趣程序。

将Rust与树莓派GPIO结合使用

至此,我相信我们已经对Rust有了很好的掌握。我们学会了如何在树莓派上安装它,甚至编写了一个提示用户输入的简单程序。

在本节中,我们将编写一个Rust程序,让连接到树莓派GPIO引脚之一的LED灯闪烁。

要求

这是一个动手项目,需要一些物品。以下是项目所需的一些物品:

LED灯:我使用的是(8mm,3.5V,30mA)的LED灯。

电阻:这将取决于你使用的LED灯。但需要注意的是,“电阻值越高,LED灯越暗”。

面包板:如果你擅长焊接并能完美地将LED灯和电阻焊接到GPIO引脚上,这是可选的(但我不推荐)。

跳线

LED灯闪烁代码

要编写让LED灯闪烁的代码,首先,我们需要使用Cargo创建一个新的Rust项目。你还记得我们在上一节中是怎么做的吗:

cargo new blink_led

然后导航到blink_led文件夹并编辑main.rs文件。

接下来,使用你喜欢的代码编辑器打开main.rs文件,并粘贴以下代码。在我这里,我使用的是nano编辑器。

use std::error::Error;use std::thread;use std::time::Duration;use rppal::gpio::Gpio;use rppal::system::DeviceInfo;// Gpio uses BCM pin numbering. BCM GPIO 23 is tied to physical pin 16.const GPIO_LED: u8 = 23;fn main() -> Result<(), Box<dyn Error>> {    println!("Blinking an LED on a {}.", DeviceInfo::new()?.model());    let mut pin = Gpio::new()?.get(GPIO_LED)?.into_output();    loop {        // Turn LED on        pin.set_high();        thread::sleep(Duration::from_millis(1000));        // Turn LED off        pin.set_low();        thread::sleep(Duration::from_millis(1000));    }}

运行程序

要运行程序,我们将像上一节中那样使用cargo:

cargo run

以下是我得到的结果。

……

从上面的视频中,你可以看到我们成功地用Rust让LED灯闪烁了起来。这清楚地表明,Rust也可以用于处理复杂的硬件项目。

我希望我已经为你提供了在树莓派上开始使用Rust的清晰指南。如果你是初学者,你可以先从事不需要太多硬件调整的项目。一旦你掌握了这门语言,你就可以进一步探索GPIO引脚了。

常见问题解答

Rust 中的交叉编译是什么?

交叉编译指的是在一台机器上构建你的 Rust 程序,但目标却是另一台不同机器或架构。

例如,你不直接在树莓派上进行编译(这在大型项目中可能会很慢),而是在性能更强的台式机或笔记本电脑上编译代码,然后将生成的二进制文件复制到树莓派上。

树莓派上关于 Rust 的资源多吗?

遗憾的是,与 Python 不同,树莓派上 Rust 资源的可用性并不广泛,也不成熟。不过,随着 Rust 在树莓派社区中继续受到欢迎,几年之后情况可能会完全不同。

如果你想查看具体产品内容,可以通过原文进行了解:

https://raspberrytips.com/rust-programming-raspberry-pi/

 

官方网站:https://edatec.cn/zh/cm0

淘宝店铺:https://edatec.taobao.com/

相关推荐