为什么要学习rust
我个人的观点,rust将要被加进到aosp的内核里,意味着以后想要更好的进行逆向工作你需要学习rust,万一哪天native也支持rust可玩性将大大增加了,当然倒霉的就是逆向人员了\捂脸
Hello World
1 | fn main() { |
我们看看这段代码结构。
fn用于定义一个函数,println!是不是可以理解为函数调用呢?错!println加上!实际上是说调用了一个宏,宏的名字叫做println,;是否是必要的呢?*;并不是必要的,加不加都可以,但是加上可以更好的表达,当前的表达式已经结束了。*与C/Cpp一样,main函数是必须存在的,用于让系统在运行程序时在main函数里执行具体的程序逻辑。
如何运行一个rust程序
rustc xx.rc
编译好代码后生成可执行文件,在windows生成.exe, 而linux生成.sh可执行文件,按各个系统的启动方式启动编译好的文件即可。
rust cargo
Cargo 是rust工具链中内置的构建系统及包管理器。它可以处理众多诸如构建代码、下载编译依赖库等琐碎但重要的任务,所以绝大部分用户都采取Cargo来管理rust项目。
cargo创建项目
cargo new project_name
即可创建一个cargo项目。
项目结构
Cargo采用TOML作为标准配置格式。package是一个区域标签,表明接下来的语句会被用于配置当前的程序包。dependencies同样是一个区域标签,它表明随后的区域会被用来声明项目的依赖。在Rust中,代码的集合被称作create
。
src目录用于保存项目的源代码,而根目录用于存放诸如README、许可声明、配置文件等与源代码无关的文件。
使用Cargo构建和运行项目
cargo build
命令用来编译整个项目.会在/target/debug
目录下生成一个可执行文件cargo run
命令用于运行上一步生成的可执行文件。
cargo check
命令用于快速检查当前代码是否可以通过编译,而不需要花费额外时间去真正生成可执行程序。
当正式发版时可通过cargo build --release
生成优化模式下的可执行程序,其生成的可执行文件在/target/release
目录下,这种优化模式会以更长的编译时间来优化代码,使得代码能拥有更好的运行时性能。