小陆博客

为站长提供建站技巧、网站运营、搜索优化、建站方向以及利用网站赚钱与创业的知识与经验。

热门搜索:

Rust 知识点

7710 浏览
0 评论
点击跳转 链接
内容
rustup 是rust官方的版本管理工具。应当作为安装 Rust 的首选。 项目主页是: https://github.com/rust-lang-nursery/rustup.rs rustup default [toolchain] 配置默认工具链。 rustup show 显示当前安装的工具链信息。 rustup update 检查安装更新。 rustup toolchain [SUBCOMMAND] 配置工具链 rustup override [SUBCOMMAND] 配置一个目录以及其子目录的默认工具链 rustup target [SUBCOMMAND] 配置工具链的可用目标 rustup component 配置 rustup 安装的组件 ----------- racer是一个由rust的爱好者提供的rust自动补全和语法分析工具,被用来提供基本的补全功能和定义跳转功能。其本身完全由rust写成,补全功能已经比较完善了。 cargo install racer cargo install rustfmt ----------------------- Rust中一般使用cargo管理项目,比如: 创建项目 cargo new hellorust --bin 编译项目 cargo build --release 运行项目 cargo run --release 清理项目 cargo clean --------- 布尔类型:bool, 有两个值true和false。 字符类型:char, 表示单个Unicode字符,存储为4个字节。 数值类型:分为有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 以及浮点数 (f32, f64)。 字符串类型:最底层的是不定长类型str,更常用的是字符串切片&str和堆分配字符串String, 其中字符串切片是静态分配的,有固定的大小,并且不可变,而堆分配字符串是可变的。 数组:Array,[T;N] 具有固定大小,并且元素都是同种类型。 动态数组:Vec被表示为Vec, 其中T是一个泛型。它不是基础类型,但是用的很广泛。 切片:Slice, &[T] 或者&mut [T]引用一个数组的部分数据并且不需要拷贝。 元组:Tuple, (1,true,"xxx")具有固定大小的有序列表,每个元素都有自己的类型,通过解构或者索引来获得每个元素的值。 指针:最底层的是裸指针*const T和*mut T,但解引用它们是不安全的,必须放到unsafe块里。 函数:fn, 具有函数类型的变量实质上是一个函数指针。 元类型:unit, 即(),其唯一的值也是()。类似void的作用。 ```rust // boolean type let t = true; let f: bool = false; // char type let c = 'c'; // numeric types let x = 42; let y: u32 = 123_456; let z: f64 = 1.23e+2; let zero = z.abs_sub(123.4); let bin = 0b1111_0000; let oct = 0o7320_1546; let hex = 0xf23a_b049; // string types let str = "Hello, world!"; let mut string = str.to_string(); // arrays and slices let a = [0, 1, 2, 3, 4]; let middle = &a[1..4]; let mut ten_zeros: [i64; 10] = [0; 10]; // tuples let tuple: (i32, &str) = (50, "hello"); let (fifty, _) = tuple; let hello = tuple.1; // raw pointers let x = 5; let raw = &x as *const i32; let points_at = unsafe { *raw }; // functions fn foo(x: i32) -> i32 { x } let bar: fn(i32) -> i32 = foo; ``` 有几点是需要特别注意的: 数值类型可以使用_分隔符来增加可读性。 Rust还支持单字节字符b'H'以及单字节字符串b"Hello",仅限制于ASCII字符。 此外,还可以使用r#"..."#标记来表示原始字符串,不需要对特殊字符进行转义。 使用&符号将String类型转换成&str类型很廉价, 但是使用to_string()方法将&str转换到String类型涉及到分配内存, 除非很有必要否则不要这么做。 数组的长度是不可变的,动态的数组称为Vec (vector),可以使用宏vec!创建。 元组可以使用==和!=运算符来判断是否相同。 不多于32个元素的数组和不多于12个元素的元组在值传递时是自动复制的。 Rust不提供原生类型之间的隐式转换,只能使用as关键字显式转换。 可以使用type关键字定义某个类型的别名,并且应该采用驼峰命名法。 // explicit conversion let decimal = 65.4321_f32; let integer = decimal as u8; let character = integer as char; // type aliases type NanoSecond = u64; type Point = (u8, u8); --------------------------
rustup 是rust官方的版本管理工具。应当作为安装 Rust 的首选。 项目主页是: https://github.com/rust-lang-nursery/rustup.rs rustup default [toolchain] 配置默认工具链。 rustup show 显示当前安装的工具链信息。 rustup update 检查安装更新。 rustup toolchain [SUBCOMMAND] 配置工具链 rustup override [SUBCOMMAND] 配置一个目录以及其子目录的默认工具链 rustup target [SUBCOMMAND] 配置工具链的可用目标 rustup component 配置 rustup 安装的组件 ----------- racer是一个由rust的爱好者提供的rust自动补全和语法分析工具,被用来提供基本的补全功能和定义跳转功能。其本身完全由rust写成,补全功能已经比较完善了。 cargo install racer cargo install rustfmt ----------------------- Rust中一般使用cargo管理项目,比如: 创建项目 cargo new hellorust --bin 编译项目 cargo build --release 运行项目 cargo run --release 清理项目 cargo clean --------- 布尔类型:bool, 有两个值true和false。 字符类型:char, 表示单个Unicode字符,存储为4个字节。 数值类型:分为有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 以及浮点数 (f32, f64)。 字符串类型:最底层的是不定长类型str,更常用的是字符串切片&str和堆分配字符串String, 其中字符串切片是静态分配的,有固定的大小,并且不可变,而堆分配字符串是可变的。 数组:Array,[T;N] 具有固定大小,并且元素都是同种类型。 动态数组:Vec被表示为Vec, 其中T是一个泛型。它不是基础类型,但是用的很广泛。 切片:Slice, &[T] 或者&mut [T]引用一个数组的部分数据并且不需要拷贝。 元组:Tuple, (1,true,"xxx")具有固定大小的有序列表,每个元素都有自己的类型,通过解构或者索引来获得每个元素的值。 指针:最底层的是裸指针*const T和*mut T,但解引用它们是不安全的,必须放到unsafe块里。 函数:fn, 具有函数类型的变量实质上是一个函数指针。 元类型:unit, 即(),其唯一的值也是()。类似void的作用。 ```rust // boolean type let t = true; let f: bool = false; // char type let c = 'c'; // numeric types let x = 42; let y: u32 = 123_456; let z: f64 = 1.23e+2; let zero = z.abs_sub(123.4); let bin = 0b1111_0000; let oct = 0o7320_1546; let hex = 0xf23a_b049; // string types let str = "Hello, world!"; let mut string = str.to_string(); // arrays and slices let a = [0, 1, 2, 3, 4]; let middle = &a[1..4]; let mut ten_zeros: [i64; 10] = [0; 10]; // tuples let tuple: (i32, &str) = (50, "hello"); let (fifty, _) = tuple; let hello = tuple.1; // raw pointers let x = 5; let raw = &x as *const i32; let points_at = unsafe { *raw }; // functions fn foo(x: i32) -> i32 { x } let bar: fn(i32) -> i32 = foo; ``` 有几点是需要特别注意的: 数值类型可以使用_分隔符来增加可读性。 Rust还支持单字节字符b'H'以及单字节字符串b"Hello",仅限制于ASCII字符。 此外,还可以使用r#"..."#标记来表示原始字符串,不需要对特殊字符进行转义。 使用&符号将String类型转换成&str类型很廉价, 但是使用to_string()方法将&str转换到String类型涉及到分配内存, 除非很有必要否则不要这么做。 数组的长度是不可变的,动态的数组称为Vec (vector),可以使用宏vec!创建。 元组可以使用==和!=运算符来判断是否相同。 不多于32个元素的数组和不多于12个元素的元组在值传递时是自动复制的。 Rust不提供原生类型之间的隐式转换,只能使用as关键字显式转换。 可以使用type关键字定义某个类型的别名,并且应该采用驼峰命名法。 // explicit conversion let decimal = 65.4321_f32; let integer = decimal as u8; let character = integer as char; // type aliases type NanoSecond = u64; type Point = (u8, u8); --------------------------

评论 (0)

评论功能正在开发中...