0
点赞
收藏
分享

微信扫一扫

rust 变量解构

变量解构

8. 我们可以将 let 跟一个模式一起使用来解构一个元组,最终将它解构为多个独立的变量 提示: 可以使用变量遮蔽或可变性 🌟🌟

🌟🌟 🌟

 // 修复下面代码的错误并尽可能少的修改 fn main() {

   let (x, y) = (1, 2);

   x += 2;

   assert_eq!(x, 3);

   assert_eq!(y, 2);

}

解构式赋值

该功能于 Rust 1.59 版本引入:你可以在赋值语句的左式中使用元组、切片或结构体进行匹配赋值。 9.

Note: 解构式赋值只能在 Rust 1.59 或者更高版本中使用

    fn main() {

   let (x, y);

(x,..) = (3, 4);

[.., y] = [1, 2];

// 填空,让代码工作 assert_eq!([x,y], __);

}

 答案 在 solutions 下面

🌟🌟


基本类型

学习资料:

English: Rust Book 3.2 and 3.3 简体中文: Rust语言圣经 - 基本类型


数值类型 整数

1.

Tips: 如果我们没有显式的给予变量一个类型,那编译器会自动帮我们推导一个类型

    // 移除某个部分让代码工作 fn main() {

   let x: i32 = 5;

   let mut y: u32 = 5;

y = x;

letz=10;// 这里 z 的类型是?

}

2.

 // 填空

fn main() {

   let v: u16 = 38_u8 as __;

}

3.

🌟🌟🌟

🌟

🌟


 Tips: 如果我们没有显式的给予变量一个类型,那编译器会自动帮我们推导一个类型

  // 修改 `assert_eq!` 让代码工作 fn main() {

let x = 5;

   assert_eq!("u32".to_string(), type_of(&x));

}

// 以下函数可以获取传入参数的类型,并返回类型的字符串形式,例如 fn type_of<T>(_: &T) -> String {

   format!("{}", std::any::type_name::<T>())

}

"i8", "u8", "i32", "u32"

4.

 // 填空,让代码工作 fn main() {

   assert_eq!(i8::MAX, __);

   assert_eq!(u8::MAX, __);

}

5.

🌟🌟

🌟🌟


 // 解决代码中的错误和 `panic` fn main() {

  let v1 = 251_u8 + 8;

  let v2 = i8::checked_add(251, 8).unwrap();

  println!("{},{}",v1,v2);

}

6.

 // 修改 `assert!` 让代码工作 fn main() {

   let v = 1_024 + 0xff + 0o77 + 0b1111_1111;

   assert!(v == 1579);

}

浮点数

7.

 // 将 ? 替换成你的答案 fn main() {

   let x = 1_000.000_1; // ?

   let y: f32 = 0.12; // f32

   let z = 0.01_f64; // f64

}

8. 使用两种方法来让下面代码工作

🌟🌟

🌟🌟

🌟


fn main() {

   assert!(0.1+0.2==0.3);

}

序列Range

9. 两个目标: 1. 修改 assert! 让它工作 2. 让 println! 输出: 97 - 122 fn main() {

   let mut sum = 0;

   for i in -3..2 {

       sum += i

}

   assert!(sum == -3);

   for c in 'a'..='z' {

       println!("{}",c);

} }

10. // 填空

use std::ops::{Range, RangeInclusive}; fn main() {

   assert_eq!((1..__), Range{ start: 1, end: 5 });

   assert_eq!((1..__), RangeInclusive::new(1, 5));

}

举报

相关推荐

0 条评论