先从安装运行开始,搞出开发环境。
(相关资料图)
安装
Unix:直接运行
安装完成后,就可以创建项目了。
当运行完,就会创建一个名为first的项目文件夹。
默认main.rs里就是经典的 hello world。
接着在Cargo.toml的依赖项里加入reqwest和html2md
main.rs 修改如下:
这里主要使用了reqwest库用来网络请求,html2md 从名字就能看得出 解析html成markdown格式。
运行 cargo run
会经过一段漫长的编译,开始运行,先请求rust官网,然后解析成markdown写入文件。
可以看到 在rust里项目管理工具 是cargo,类似 Node里的npm, Golang里的go。
rust语法偏C/C++风格
函数用{}
表达式结束用;
访问结构成员字段,或函数用 .
访问命名空间用::
不想在代码里 使用std::fs() 可以直接use std::fs,这样就可以在代码里直接使用fs()函数了。
入口函数是main()
强类型语言,但编译器也支持类型推导。
rust 还有一些特点:
rust变量默认是不可变的,如果要修改变量的值,需要显式使用mut关键字。
除了let/static/const/fn 等少数语句外,rust绝大多数代码都是表达式。所以if/while/for /loop都会返回一个值,函数里的最后一个表达式就是返回值。
支持面向接口,泛型。Go好像在1.18才支持泛型。
丰富的数据类型和强大的标准库。(貌似任何一个说自己语言的好的,是不是都可以这么说?)
丰富的控制流 比如 模式匹配(pattern match)
不过个人感觉刚上手有点不是太适应的地方。
fn 虽然简单但是不如写全function
如果代码里使用某些命名空间,头部不能自动导入 use。这一点go做的相对自动一些。
感觉既然是强类型,就不要松开类型推导这个口子。不然有点混乱,
总体感觉就是 既要还要。
明天接着学 Rust的基本语法和数据结构。