【第一课】Rust入门

目录

前言

安装

编译运行第一个rust程序

更高级的工具Cargo

总结


前言

这是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项目的包管理工具和构建工具

相关推荐
DongLi012 天前
rustlings 学习笔记 -- exercises/05_vecs
rust
番茄灭世神3 天前
Rust学习笔记第2篇
rust·编程语言
shimly1234563 天前
(done) 速通 rustlings(20) 错误处理1 --- 不涉及Traits
rust
shimly1234563 天前
(done) 速通 rustlings(19) Option
rust
@atweiwei3 天前
rust所有权机制详解
开发语言·数据结构·后端·rust·内存·所有权
shimly1234563 天前
(done) 速通 rustlings(24) 错误处理2 --- 涉及Traits
rust
shimly1234563 天前
(done) 速通 rustlings(23) 特性 Traits
rust
shimly1234563 天前
(done) 速通 rustlings(17) 哈希表
rust
shimly1234563 天前
(done) 速通 rustlings(15) 字符串
rust
shimly1234564 天前
(done) 速通 rustlings(22) 泛型
rust