Rust 编程学习笔记 rust环境搭建

先从安装运行开始,搞出开发环境。

安装

Unix:直接运行

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

安装完成后,就可以创建项目了。

cargo new first

当运行完,就会创建一个名为first的项目文件夹。

默认main.rs里就是经典的 hello world。

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

接着在Cargo.toml的依赖项里加入reqwest和html2md

[dependencies]
reqwest = { version = "0.11", features = ["blocking"] }
html2md = "0.2"

main.rs修改如下:

use std::fs;
fn main() {
    let url = "https://www.rust-lang.org/";
    let output = "rust.md";
    println!("Fetching url: {}", url);
    let body = reqwest::blocking::get(url).unwrap().text().unwrap();
    println!("Converting html to markdown...");
    let md = html2md::parse_html(&body);
    fs::write(output, md.as_bytes()).unwrap();
    println!("Converted markdown has been saved in {}.", output);
}

这里主要使用了reqwest库用来网络请求,html2md 从名字就能看得出 解析html成markdown格式。

运行

cargo run

会经过一段漫长的编译,开始运行,先请求rust官网,然后解析成markdown写入文件。

可以看到 在rust里项目管理工具 是cargo,类似 Node里的npm, Golang里的go。

rust语法风格

偏C/C++

  1. 函数用{}

  1. 表达式结束用;

  1. 访问结构成员字段,或函数用 .

  1. 访问命名空间用::

  1. 不想在代码里 使用std::fs() 可以直接use std::fs,这样就可以在代码里直接使用fs()函数了。

  1. 入口函数是main()

  1. 强类型语言,但编译器也支持类型推导。

rust 还有一些特点:

  • rust变量默认是不可变的,如果要修改变量的值,需要显式的使用mut关键字。

  • 除了let/static/const/fn 等少数语句外,rust绝大多数代码都是表达式。 所以if/while/for /loop都会返回一个值,函数里的最后一个表达式就是返回值。

  • 支持面向接口,泛型。 Go好像在1.18才支持泛型。

  • 丰富的数据类型和强大的标准库。 (貌似任何一个说自己语言的好的,是不是都可以这么说?)

  • 丰富的控制流 比如 模式匹配(pattern match)

不过个人感觉刚上手有点不是太适应的地方。
  1. fn 虽然简单但是不如写全function

  1. 如果代码里使用某些命名空间,头部不能自动导入 use。 这一点go做的相对自动一些。

  1. 感觉既然是强类型,就不要松开类型推导这个口子。不然有点混乱,

总体感觉就是 既要还要。

明天接着学 Rust的基本语法和数据结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值