Rust in Action笔记 第二章 rust语言基础

  1. 可以用rustc来编译单个.rs后缀的文件,用法类似gcc,要求该文件必须有main函数,编译后就是一个二进制文件;大多数情况rust项目用cargo来管理,cargo run的作用是调用rustc来编译.rs文件的同时增加了很多参数,把生成的二进制文件放在./target文件夹中,最后运行生成的二进制文件;
  2. 2.2节讲了如何声明变量,这部分比较基础;
  3. 2.3节讲了数字的一些语法,用的较多的可能是结构化输出数字的{}中的一些用法,例如{:>5b}表示向右对齐,宽度为5,输出二进制,详细用例见rust_by_example, print
  4. 数字直接有多种类型,不同类型不能直接比较,可以通过.into()或者.try_into()方法来要求编译器做出相应转换;浮点数的比较由于计算机二进制表达限制的原因可能会产生错误,因此f32/f64等类型仅仅实现了std::cmp::PartialEq特征,而其他的数字类型还实现了std::cmp::Eq特征,在实际应用中应尽量避免浮点数的比较,或者采用a-b < e这种模式来确保误差在可允许的范围内;
  5. 2.4节讲了控制流的一些常用关键字,如for, while, loop等;if else match的使用,match的pattern匹配功能,有关match的常见用法也可以见rust_by_example, match
  6. 2.7节通过实现一个Mandelbrot set,也就是画一个图像来复习前面的结构化输出、match匹配等的功能,
  7. 2.8节讲了稍微复杂一点的函数声明,包括带有生命周期的函数,注意生命周期压制效应,<'a:'b, 'b>表示’a的生命周期不短于’b的生命周期,具体例子可见rust_by_example, lifetime_coercion;也讲了带模板参数T的函数声明;
  8. 2.9节通过一个简化版的grep项目grep-lite复习了for循环的方法,捎带讲了rust语言中不同的字符串类型的区别以及用途,包括char, [u8], Vec<u8>, std::ffi::OSString, std::path::Path,重点讲了String和str,&str的区别;
  9. 2.10节讲了array与vector两种数组的区别,也引入了切片(slices)的概念,通常数组切片([T])或者切片引用(&[T])都被称为切片,数组(array)和切片的签名有着明显的区别,数组([T; n]),切片([T]),进一步说明数组是在栈上的数据结构,它的大小在编译时已经确定;
  10. 2.11节讲了如何引入第三方代码库,可以通过cargo add {some_crate},也可以在cargo.toml里添加对应的库,这里添加库可以更加灵活,比如制定库的版本或者部分feature等等,具体看cargo reference
  11. 2.11节还介绍了在项目根目录下使用cargo doc来创建项目文档,生成的文档位于./target/doc/{project_name}/index;同时简单介绍了rustup这个工具,cargo管理项目,rustup管理rust工具链并允许用户使用不同的Rust编译器版本,输入rustup doc可以在本地浏览器中打开离线版的rust使用文档,关于rustup的使用指南可以看rustup-guide
  12. 2.12节介绍了一个有用的第三方库clap用于处理命令行输入的参数,从此可以定制某些参数,以及库的使用说明,clap的文档在docs.rs/clap里;书中的clap版本是2,目前已经到了^4版本,所以有些api应该是弃用了,需要重新看文档学习;
  13. 2.13节介绍了文件IO的方法,标准库里的std::fs::File以及std::io::BufReader是常用的文件IO库,还有从标准输入获取输入的方法std::io::stdin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值