目录
前言
这是rust学习的入门第一课,对于rust不做过多介绍,网上介绍的很多,是一门很值得学习的语言,不管第一语言是什么,以我个人为例,第一语言是Java,随着工作不断接触过Scala(大数据领域),Python等语言,学习Rust对于编程生涯都是极有帮助的,它会让你更加理解内存的变化,从另一种角度去理解垃圾回收,话不多说,让我们开始看看这门看似不火,实则趣味十足的编程语言吧
有什么建议也可以提给我,我和大家一样,一起学习,一起进步~!
安装
安装地址:入门 - Rust 程序设计语言 (rust-lang.org)
这是Rust的安装地址,按照地址上的说明可以顺利的安装Rustup,Rustup是我们要接触的第一个工具,这个工具帮助我们管理rust的版本,有点类似于Java世界中的SDKMan,或者是mac中homebrew。
学习工具的方法在这里只有2个:
1.上手使用,使用命令去学习,比如下图,安装rustup后,使用rustup -h可以看到rustup的使用指南,自己试一试每一个命令,非常推荐这种方式,记住每一个用法很难,掌握这种方式去解决问题才是正解。
比如rustup update,该命令可以升级rust版本,体验新特性
2.近几年大语言模型很火,可以问问GPT,或者像文心一言,通义千问等大模型
使用rustup show可以看到安装的rust版本,stable是稳定版,关于rust的版本说明,感兴趣可以自行百度,一般都使用稳定版,1.18.0是版本号,rustc类似javac
stable-aarch64-apple-darwin (default)
rustc 1.81.0 (eeb90cda1 2024-09-04)
编译运行第一个rust程序
(1)新建一个文件hi_rust.rs,rs是rust程序的文件名扩展。
文件内容如下:一段非常简单的helloworld程序
rust
fn main(){
println!("hello rust");
}
代码分析:
fn是function的缩写,表示定义一个main函数;和java一样使用{}表示函数体,println!表示一个宏,使用起来像函数,但是比函数功能要强大很多,宏的调用使用!,所以不用奇怪,有!的就是宏,没有的就是函数,关于宏,我们后面再详细说
其实在vscode中点开println!的源码(如下),大概也可以看懂对输入参数做打印输出的功能
rust
#[macro_export]
#[stable(feature = "rust1", since = "1.0.0")]
#[cfg_attr(not(test), rustc_diagnostic_item = "println_macro")]
#[allow_internal_unstable(print_internals, format_args_nl)]
macro_rules! println {
() => {
$crate::print!("\n")
};
($($arg:tt)*) => {{
$crate::io::_print($crate::format_args_nl!($($arg)*));
}};
}
和java一样,我们也需要使用rustc来编译rust源文件,编译之后会得到一个可执行文件
(2)编译命令:rustc hi_rust.rs
(3)当前目录下会多出来一个可执行文件,执行:./hi_rust
如果是windows平台上,编译后是.exe的可执行文件,可以双击执行
更高级的工具Cargo
到此为止,手动rustc,手动执行的方式学到这里就可以了,就好像java的学习,javac也只是第一课学一下,后面都是接触更高级的工具,像maven,gradle这种。在Rust的世界中,也有一个这样的工具,叫做Cargo,Cargo会帮助我们下载依赖,编译代码,Cargo也是我们接触的第二个工具,第一个是Rustup,在我们安装rustup的时候,Cargo也帮助我们安装好了,同样的,使用cargo -h是最好的学习cargo的方式。
我们使用Cargo工具来实现一个hello_world程序
(1)使用cargo init hello_world来创建一个项目
打开hello_world项目,这里使用vscode打开,vscode需要下载的插件为rust-analyzer。可以看到cargo init的项目有src目录,就是源代码的目录,git也创建好了,Cargo.toml文件就类似maven项目的pom.xml文件,是管理rust项目的依赖文件。
(2)使用cargo build 编译项目,也可以加上参数--release,即cargo build --release
cargo build会在target/debug下生成可执行文件
cargo build --release会在target/release下生成可执行文件
这两的区别就是release的可执行文件是经过编译器深度优化的,性能更好,平时开发cargo build即可,上线用cargo build --release
(3)使用cargo run执行
同样的,cargo run 也可以加上--release来执行优化后的可执行文件
总结
在本文中,主要介绍了2个工具的基本使用,更深层次的使用技巧会在后面的文章中提起,感兴趣也可以自己在命令行使用-h查看每个命令的介绍和使用指南。下期我们来看下rust中的变量与数据类型。
rustup:rust的安装管理工具
cargo:rust项目的包管理工具和构建工具