RUST 学习日记 第13课 ——元祖结构体

90 阅读2分钟

use std::io;

fn main() {

//练习1

// let tup: (i32, f64, u8) = (500, 6.4, 1);

// let (,y,) = tup;

// println!("The value of y is: {}",y);

//练习2

// let x:(i32,f64,u8) = (500,6.4,1);

// let five_hundred = x.0;

// let six_point_four = x.1;

// let one = x.2;

// println!("The value of tuple is: {} {} {}",five_hundred,six_point_four,one);

//练习3

// let s1 = String::from("hello");

// let (s2, len) = calculate_length(s1);

// println!("The length of '{}' is {}.", s2, len);

//练习4

//结构体

// let user1 = User {

// email: String::from("someone@example.com"),

// username: String::from("someusername123"),

// active: true,

// sign_in_count: 1,

// };

// println!("uesr {} {} {} {} "

// ,user1.email

// ,user1.username

// ,user1.active

// ,user1.sign_in_count);

//练习5

// let user1 = User {

// email: String::from("someone@example.com"),

// username: String::from("someusername123"),

// active: true,

// sign_in_count: 1,

// };

// let user2 = User {

// email: String::from("another@example.com"),

// ..user1

// };

// println!("uesr {} {} {} {} "

// ,user2.email

// ,user2.username

// ,user2.active

// ,user2.sign_in_count);

//练习6

// let f1 = File {

// name: String::from("f1.txt"),

// data: Vec::new(),

// };

// let f1_name = &f1.name;

// let f1_length = &f1.data.len();

// println!("{:?}", f1);

// println!("{} is {} bytes long", f1_name, f1_length);

//练习7

// let black = Color(0,0,0);

// let origin = Point(0,0,0);

//练习8

// let rect1 = Rectangle{

// width: 30,

// height: 50,

// };

// dbg!(&rect1);

//练习9

// let heart = PokerSuit::Hearts;

// let diamond = PokerSuit::Diamonds;

// print_suit(heart);

// print_suit(diamond);

//练习10

// let c1 = PokerCard::Spades(5);

// let c2 = PokerCard::Diamonds('A');

//练习11

//同一化类型

// let m1 = Message::Quit;

// let m2 = Message::Move { x: 1, y: 2 };

// let m3 = Message::ChangeColor(255, 255, 0);

//练习12

//option

// let some_number = Some(5);

// let some_string = Some("a string");

// let absent_number: Option = None;

// let x: i8 = 5;

// let y:Option = Some(5);

// //x不可以和Option相加

// let sum = x + y;

//练习13

// let a = [1, 2, 3, 4, 5];

// // let months = ["January","February","March"];

// let mut index = String::new();

// io::stdin()

// .read_line(&mut index)

// .expect("Failed to read line");

// let index: usize = index

// .trim()

// .parse()

// .expect("Index entered was ont a number");

// let element = a[index];

// println!(

// "The value of the element at index {} is: {}",

// index, element

// );

//练习14

// let array:[String;8] = std::array::from_fn(|_i|String::from("rust is good"));

// println!("{:#?}",array);

//练习15

// let a: [i32; 5] = [1, 2, 3, 4, 5];

// let slice: &[i32] = &a[1..3];

// assert_eq!(slice, &[2, 3]);

//练习16

let one = [1, 2, 3];

let two: [u8; 3] = [1, 2, 3];

let blank1 = [0; 3];

let blank2: [u8; 3] = [0; 3];

let arrays: [[u8; 3]; 4] = [one, two, blank1, blank2];

for a in &arrays {

println!("{:?}: ", a);

for n in a.iter() {

println!("\t {} + 10 = {} ", n, n + 10);

}

let mut sum = 0;

for i in 0..a.len() {

sum += a[i];

}

println!("\t==({:?} = {})",a,sum);

}

}

// enum Message{

// Quit,

// Move{x:i32,y:i32},

// Write(String),

// ChangeColor(i32,i32,i32),

// }

// enum PokerCard{

// Clubs(u8),

// Spades(u8),

// Diamonds(char),

// Hearts(char),

// }

// fn print_suit(card:PokerSuit){

// println!("{:?}",card);

// }

// #[derive(Debug)]

// enum PokerSuit{

// Clubs,

// Spades,

// Diamonds,

// Hearts,

// }

// #[derive(Debug)]

// struct Rectangle{

// width: u32,

// height: u32,

// }

// struct Color(i32,i32,i32);

// struct Point(i32,i32,i32);

// #[derive(Debug)]

// struct File {

// name: String,

// data: Vec,

// }

// fn calculate_length(s: String) -> (String, usize) {

// let length = s.len();

// (s, length)

// }

// struct User {

// active: bool,

// username: String,

// email: String,

// sign_in_count: u64,

// }