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,
// }