Rust语言初探:WebAssembly 入门

news/2025/3/14 5:41:04/

Rust语言初探:WebAssembly 入门

前言

在我的印象中,Rust 一直是比较底层的语言,例如在操作系统底层、高性能中间件等底层场景才会看到它的身影。

然而,随着技术的发展,Rust 也开始在前端场景如 WebAssembly 中崭露头角,并且在后端领域也出现了 Rust 语言的框架。

这种多场景的适用性让我决定深入学习 Rust 的基本操作,而 WebAssembly 就是一个很好的起点。

Rust 简介(特点)

Rust 是一种系统编程语言,它注重安全、速度和并发性。

Rust 的一些核心特点包括:

  1. 内存安全Rust 通过所有权系统来保证内存安全,无需垃圾回收。

  2. 类型安全Rust 的强类型系统有助于在编译时捕捉错误。

  3. 并发性Rust 支持多线程和异步编程,提供了安全的并发编程模型。

  4. 性能Rust 编译成机器码,执行速度接近 CC++

  5. 跨平台Rust 可以在多种操作系统和架构上运行。

Rust 主要使用场景

Rust 的使用场景非常广泛,包括但不限于:

  1. 系统编程:操作系统、设备驱动等。

  2. 网络编程:构建高性能的网络服务和应用。

  3. 游戏开发:游戏引擎和游戏逻辑。

  4. 嵌入式系统:物联网设备和嵌入式设备编程。

  5. WebAssembly:前端应用和浏览器插件。

  6. 区块链技术:智能合约和加密货币开发。

如何编写 WebAssembly

编写 WebAssembly 代码的基本步骤如下:

  1. 安装 Rust:首先需要安装 Rust 编译器和 CargoRust 的包管理器和构建工具)。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

最终安装结果如下:

  1. 创建项目:使用 cargo new --lib my_wasm_project 创建一个新的 Rust 库项目。
cargo new --lib my_wasm_project
cd my_wasm_project
  1. 添加依赖:在 Cargo.toml 文件中添加 wasm-bindgen 依赖。
[package]
name = "my_wasm_project"
version = "0.1.0"
edition = "2021"[dependencies]
wasm-bindgen = "0.2"[lib]
crate-type = ["cdylib"]
  1. 编写代码:在 src/lib.rs 文件中编写 Rust 代码。例如,可以编写一个简单的函数来计算两个数的和,并使用 wasm-bindgen 使其可以在 JavaScript 中调用。
rust">   use wasm_bindgen::prelude::*;#[wasm_bindgen]pub fn add(a: i32, b: i32) -> i32 {a + b}
  1. 构建 Wasm:使用 wasm-pack build --target web 命令构建 Wasm 模块。
## 添加 wasm-pack 
cargo install wasm-pack
## 构建
wasm-pack build --target web

可以得到如下结果:

  1. 集成到前端:将生成的 .wasm 文件集成到前端项目中,使用 JavaScript 调用 Wasm 模块中的函数。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Rust Wasm Example</title><script type="module">import init, { add } from './pkg/my_wasm_project.js';async function run() {await init();console.log(add(2, 3));}run();</script></head><body><h1>Rust Wasm Example</h1></body>
</html>

运行效果

在浏览器中运行上述代码,可以在控制台中看到输出结果:

总结

Rust 作为一种现代的系统编程语言,其在 WebAssembly 领域的应用展示了它在前端开发中的潜力。

通过学习 RustWebAssembly,开发者可以构建更安全、更高效的前端应用。

随着 Rust 生态的不断成熟,我们可以预见它将在更多的领域发挥重要作用。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。


http://www.ppmy.cn/news/1524468.html

相关文章

了解开源消息代理RabbitMQ

1.RabbitMQ 是什么&#xff1f; RabbitMQ是一个消息代理:它接受并转发消息。你可以把它想象成邮局:当你把要寄的邮件放进邮箱时&#xff0c;你可以确定邮递员最终会把邮件送到收件人那里。在这个比喻中&#xff0c;RabbitMQ是一个邮筒、一个邮局和一个邮递员。RabbitMQ和邮局之…

《Spring实战》读书笔记-第5章 构建Spring Web应用程序

5.1 Spring MVC起步 Spring MVC框架主要包括请求调度Servlet、处理器映射&#xff08;handler mapping&#xff09;、控制器以及视图解析器&#xff08;view resolver&#xff09;这些组件。 跟踪Spring MVC的请求 Web请求从离开浏览器开始到获取响应返回&#xff0c;它会经历…

html+css+js网页设计 旅游 龙门石窟8个页面

htmlcssjs网页设计 旅游 龙门石窟8个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

无刷直流电动机及其控制

目录 无刷直流电动机的基本方程 无刷直流电动机的控制方法 控制器方案设计 TMS320F2812最小系统设计&#xff1a; 控制器软件设计 系统应用软件总体结构 控制器系统控制策略 基本结构 无刷直流电动机的基本方程 为简化分析&#xff0c;以一台三相两极永磁电动机为例&…

《Java并发编程的艺术》读后笔记-part2

1.volatile的应用 在多线程并发编程中synchronized和volatile都扮演着重要角色。与synchronized不同的是&#xff0c;volatile是轻量级的synchronized&#xff0c;它在多处理器开发中保证了共享变量的“可见性”。 可见性&#xff1a;当一个线程修改一个共享变量时&#xff0c…

如何根据企业的实际需求设计 cmdb系统

以下是根据企业实际需求设计配置管理数据库&#xff08;CMDB&#xff09;系统的步骤&#xff1a; 一、明确需求和目标 业务需求分析 与企业各部门沟通&#xff0c;了解他们对 IT 资源信息的需求。例如&#xff0c;运维团队可能需要准确的服务器配置信息以快速解决故障&#xff…

[数据集][目标检测]电动车入梯进电梯电单车入梯检测数据集VOC+YOLO格式7106张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7106 标注数量(xml文件个数)&#xff1a;7106 标注数量(txt文件个数)&#xff1a;7106 标注…

ArcGIS Pro SDK (十三)地图创作 5 图层样式

ArcGIS Pro SDK (十三)地图创作 5 图层样式 文章目录 ArcGIS Pro SDK (十三)地图创作 5 图层样式1 风格管理1.1 如何按名称获取项目中的样式1.2 如何创建新样式1.3 如何向项目添加样式1.4 如何从项目中删除样式1.5 如何将样式项添加到样式1.6 如何从样式中删除样式项1.7 如…