作者补修:可以忽略2022.7.8的警告,鉴于这篇文章发布于2021年,其实对你的成长并没有任何作用。
‘## 警告(2022.7.8):本文撰写于2021年7月16日,目前推荐和WebAssembly一起上手的是Go语言,Go对Wasm的支持和生态较Rust来说更加完善,所以你可以不用往下看关于Rust语言和WebAssembly一起使用的内容了。
1.缘起 我常用企鹅物流数据统计(哎呀都是老刀客塔了),然后企鹅物流数据统计新出了一个功能是OCR上传数据,然后上面标识着”您所有提供的图片均仅会通过使用 WebAssembly 技术于您的浏览器本地进行识别、不会向服务器上传,因此不产生额外流量开销。“然后又不知道WebAssembly是何方神圣,于是去某站查了一下,发现比较那个什么…….
2.介绍 WebAssembly是用各种语言写(包括Rust)的然后预编译的一个二进制文件,文件的后缀是.wasm。在2019年10月加入HTML,CSS,JS三兄弟行列中。目前基本主流浏览器均可支持WebAssembly。WebAssembly的话效率比JavaScript要更高一些。即便这样,WebAssembly也不会替代JavaScript。因为它们是互存关系。但是WebAssembly也有一些缺点,例如:预编译文件太大导致加载不出来,企鹅物流数据统计的这个wasm文件竟有2.1MB之大,对于网络波动很大的是很大的疼点。但是目前3G的速度都可以达到500KB/s,加载JS差不多500ms,但是WASM就要4s了。其次,WebAssembly不兼容IE(当然它兼容IE干嘛,IE都快死了)
3.入门土 好了废话不多说,我们开始入门土。
3.1 准备环境 首先我们要准备好Rust运行环境。先去https://www.rust-lang.org/zh-CN/tools/install把rusetup-init.exe(Windows)(MAC OS和Linux应该是rusetup.sh)下载下来然后运行……
下面只介绍Windows的安装方法(WDNMD手上没有Mac Book)
运行rusetup.exe就行了,然后都根据Default(上面打了括号的)来
如果它让你安装GNU Cpp依赖,那打y就行了~
然后打开你的无格式文本编辑器,我们以VSCode为例来开发我们的第一个WebAssembly程序。
首先我们先检查一下Rust是否安装成功,可以在你的Terminal里面输入以下命令,如果是图片上的那样,那恭喜你,安装成功!
rustc --version cargo --version 如果它显示“'rustc' 不是内部或外部命令,也不是可运行的程序或批处理文件。”或“'cargo' 不是内部或外部命令,也不是可运行的程序或批处理文件。”的话,那你要看看是不是有什么问题了~
然后我们再安装好VSCode里面调试Rust文件的依赖(当然你习惯用GDB了也可以跳过这一步)
要安装的两个扩展是Rust和Native Debug,点击最下面那个进入扩展商店然后搜索安装扩展就可以了~
3.2 写个Hello World试试看? Rust的包管理器Cargo已经给我们提供了一个Hello World模板,我们可以用上。在你的Terminal中输入
cargo new greeting cd ./greeting cargo build cargo run 如果输出Hello World,那么说明你成功了!
如果碰到这种问题的话:
F:\\greeting>cargo run --verbose Compiling greeting v0.1.0 (F:\\greeting) Running `rustc --crate-name greeting --edition=2018 src\\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=62453b21762aa214 --out-dir F:\\greeting\\target\\debug\\deps -C incremental=F:\\greeting\\target\\debug\\incremental -L dependency=F:\\greeting\\target\\debug\\deps` error: linker `link.exe` not found | = note: 系统找不到指定的文件。 (os error 2) note: the msvc targets depend on the msvc linker but `link.exe` was not found note: please ensure that VS 2013, VS 2015, VS 2017 or VS 2019 was installed with the Visual C++ option error: aborting due to previous error error: could not compile `greeting` Caused by: process didn\'t exit successfully: `rustc --crate-name greeting --edition=2018 src\\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=62453b21762aa214 --out-dir F:\\greeting\\target\\debug\\deps -C incremental=F:\\greeting\\target\\debug\\incremental -L dependency=F:\\greeting\\target\\debug\\deps` (exit code: 1) 我们只需要安装Visual C++ Build Tools 2015(当然你也可以用2019)即可,微软官方(Visual C++ Build Tools 2015)下载地址:https://download.microsoft.com/download/5/f/7/5f7acaeb-8363-451f-942568a90f98b238/visualcppbuildtools\_full.exe(当然你可以先试试2015然后再试试2019,我这边2015是废了的)
...