Rust学习笔记3-Rust核心概念之所有权
概述
这篇文件介绍了 Rust 中最核心,也是最特别的一个概念:所有权(ownership),想学好 Rust 就必须充分的理解所有权。所有权让 Rust 在无需垃圾回收机制就可以保证内存安全,而且在其他编程中从未有过所有权的概念,因此从其他编程语言转来学 Rust 时会感觉难以理解。
什么是所有权
所有权是 Rust 的核心特性,Rust 中使用所有权系统来管理内存使用,它让 Rust 无需 GC (垃圾回收)就可以保证内存安全。所有权机制不像 java、C# 使用垃圾回收器管理内存,也不像 C/C++ 语言一样需要程序员显式的申请与释放内存。
所有权系统让 Rust 在编译时就可以完成内存使用的检查,因而程序在运行时就不会产生任何额外开销,这样既保证了内存安全,又提升了运行速度。真是妙啊!
Rust学习笔记2-Rust基础语法
认识cron表达式
Rust学习笔记1-初识Rust
概述
Rust 是一门系统编程语言,在 Stack Overflow 的年度开发者调查中,多年获得 “最喜爱的编程语言” 奖项;Rust 已被 Google、亚马逊、微软、华为、百度、阿里等大厂使用。本文介绍了 Rust 语言的基础特性、优缺点、适用场景,介绍了Rust的使用,包括安装Rust、创建基础体验代码以及代码编译执行,介绍了Rust的开发工具及配置方法。此外,还介绍了一些优秀的 Rust 开源项目和 Rust 学习项目与资料。
关于Rust
官网: https://www.rust-lang.org/
Rust 是一门赋予每个人构建可靠且高效软件能力的语言。
Rust 语言是 2009 年由 Graydon Hoare 设计,由 Mozilla 实验室资助和完善,现已成为 Mozilla 官方项目。Rust 最大的特点是安全可靠、运行速度快,可作为 C/C++ 的替代语言,相比 C/C++,Rust 和它们具有相同的运行速度,却可以避免 C/C++ 中很多常见的 bug,比如悬垂指针问题、内存泄漏问题。Rust 语言的应用场景包括:系统级编程、嵌入式开发、并发编程、高性能WEB服务、跨平台开发、数据处理和机器学习等。
IT工作者职业规划指南
WebAssembly-函数调用
概述
这篇文章介绍了在 JavaScript 中通过 WebAssembly 调用 C 语言编写的函数,以及在 C 代码中调用 JavaScript 函数。
web 使用 wasm 流程
在 web 项目中使用 WebAssembly 时,需要先编写 C 语言代码,然后使用 emscripten 编译成 .wasm 和 .js 文件,最后在 html 文件中引入 js 文件,就可以调用在 C 中定义的函数。在 wasm 中是无法操作 dom 的,需要结合 js 使用。
graph LR;
C(C代码) ---> WASM ---> HTML
JS ---> HTML
C -.-> JS
注意:使用 emscripten 自动生成的胶水 js 文件是对 wasm 的实例化和调用函数的封装,方便使用,这个 js 文件中对各种运行环境(node、shell、web、worker)做了支持,实际使用时可以根据自己的业务需求,排除不需要的代码以缩小 js 文件代码量,或自己编写封装成 js 文件。
WebAssembly-初探
概述
WebAssembly 已经成为继 html、css、js 之后, Web 平台开发的第四种语言,这篇文章介绍了 WebAssembly 的概念,特点以及使用场景,提供了一个将 C 代码编译成 wasm 并在浏览器访问的简单示例。
认识 WebAssembly
官网: WebAssembly https://webassembly.org/
中文网:WebAssembly 中文网 https://www.wasm.com.cn/
W3C 标准:
WebAssembly Core Specification: https://www.w3.org/TR/wasm-core-1/
WebAssembly JavaScript Interface: https://www.w3.org/TR/wasm-js-api-1/
WebAssembly Web API: https://www.w3.org/TR/wasm-web-api-1/
WebAssembly (简称 wasm),中文含义为网页汇编,是一种基于栈的二进制指令格式的虚拟机标准,它的设计目标包括:高可移植性、高安全性、高效率(包括载入效率和运行效率)、尽可能小的程序体积。WebAssembly 能够在主流的浏览器中运行,它的出现是为了解决前端项目 JavaScript 运行低效的问题。
浏览器支持情况参考:Roadmap - WebAssembly 。

