์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OS
- Python challenge
- ํ์ด์ฌ
- java
- ๋ฐ์ดํฐ ํต์
- ์ฐ๋ถํฌ
- ์๊ณ ๋ฆฌ์ฆ
- Rust
- ์ด์์ฒด์
- Python
- ๋ฐฑ์ค
- ๋ฌ์คํธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Operating System
- C
- ์ค๋ผํด
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- ubuntu
- ์๋ฐ ๊ธฐ์ด
- ์๋ฐ ๊ฐ๋
- Reversing
- Database
- data communication
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค ๋ฌ์คํธ
- ์๋ฐ
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- ์ค๋ผํดDB
- ๋ฌ์คํธ ์์
Archives
- Today
- Total
IT’s Portfolio
[Rust] Start Rust (Day 3) - Guessing Game [2] ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ฆ Rust Day 3
์ซ์ ๋ง์ถ๊ธฐ ๊ฒ์ ๊ตฌํ ํํธ์ ๋์ ์์ฑ
rand crate
- ๋์๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋
rand
๋ผ๋ crate๊ฐ ํ์ํจ crate
: ์์ค ํ์ผ์ ์งํฉ- ๋ฌ์คํธ์ ๊ธฐ๋ณธ ํจํค์ง, ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์
- ์ฐ๋ฆฌ๊ฐ ์์
์ค์ธ ํ๋ก์ ํธ๋ ์คํ์ด ๊ฐ๋ฅํ
binary crate
- ํ์ด์ฌ์ Library ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ํธํ ๋ฏ
Cargo.toml
ํ์ผ์ ์์ ํ์ฌ ์์กด ํจํค์ง๋ก ๋ฑ๋กํด์ผ ํจ- ์์กด ํจํค์ง ์ถ๊ฐ ์ Cargo๋ ํจํค์ง๊ฐ ๋ฑ๋ก๋ repository์ธ
https://crates.io
์์ ์ต์ ๋ณต์ฌ๋ณธ์ ๋ด๋ ค๋ฐ์https://crates.io
: ๋ฌ์คํธ ๊ฐ๋ฐ์๋ค์ ์คํ ์์ค ํ๋ก์ ํธ ์ ์ฅ์
- ์์กด ํจํค์ง ์ถ๊ฐ ์ Cargo๋ ํจํค์ง๊ฐ ๋ฑ๋ก๋ repository์ธ
Cargo.lock
- ์ต์ด cargo build ๋ช ๋ น ์คํ ์ ์์ฑ
- ๋ฌ์คํธ๋ lock ํ์ผ์ crate ๋ฒ์ ์ ๋ฒ ์ด์ค๋ก ์คํํจ
- Cargo์ update ๋ช ๋ น์ lock ํ์ผ์ ๋ช ์๋ ๋ฒ์ ์ ๋ฌด์ํ๊ณ toml ํ์ผ์ ์ง์ ๋ ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ๋ค์ ์ฐพ์. ์ฑ๊ณต์ ์ผ๋ก ์คํ ์ lock ํ์ผ์ ๋ฒ์ ์ ๊ฐฑ์ ํจ
Code
use std::io;
use rand::Rng;
fn main(){
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1, 101);
println!("The number of player must guess: {}", secret_number);
println!("The number of player thinks.");
let mut guess = String::new();
io::stdin().read_line(&mut guess)
.expect("Unable to read input!");
println!("Input Number: {}", guess);
}
use rand::Rng
: Rng trait๋ ๋์ ์์ฑ๊ธฐ์ ๊ตฌํ๋ ๋ฉ์๋๋ฅผ ์ ์ํจtrait
: ๋ถํน์ ํ์ ์ ๋์์ผ๋ก ์ด๋ค์ด ๊ตฌํํด์ผ ํ ๋ฉ์๋์ ์งํฉ์ ์ ์
rand::thread_rng()
: ๋์ ์์ฑ๊ธฐ ๋ฐํ- ํ ์ฝ๋๋ฅผ ์คํ ์ค์ธ ์ค๋ ๋ ๋ด์ ์กด์ฌํ๋ฉฐ OS๊ฐ ์ง์ ํ seed ๊ฐ์ ์ฌ์ฉ
gen_range(1, 101)
: Rng trait์ ์ ์๋์ด ์์. ์ธ์๋ก ์ง์ ๋ ๋ ๊ฐ ์ฌ์ด์ ๋์๋ฅผ ์ ํํด ๋ฐํํจ
์ซ์ ๋ง์ถ๊ธฐ ๊ฒ์ ๊ตฌํ ํํธ์ ๋น๊ต
Code
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main(){
// println!("Guess the number!");
// let secret_number = rand::thread_rng().gen_range(1, 101);
// println!("The number of player must guess: {}", secret_number);
// println!("The number of player thinks.");
// let mut guess = String::new();
// io::stdin().read_line(&mut guess)
// .expect("Unable to read input!");
// println!("Input Number: {}", guess);
match guess.cmp(&secret_number){
Ordering::Less => println!("Your number is Less."),
Ordering::Greater => println!("Your number is Greater."),
Ordering::Equal => println!("Correct!!"),
}
}
std::cmp::Ordering
: Order ์ด๊ฑฐ์. Less, Greater, Equal ์ค ํ๋ ํํ- cmp ๋ฉ์๋๋ ๋ ๊ฐ์ ๊ฐ์ ๋น๊ตํจ. ๋น๊ต ๊ฐ๋ฅํ ์ด๋ค ๊ฐ์๋ ์ ์ฉํ ์ ์์
- ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ Ordering ์ด๊ฑฐ์์ ์ด๊ฒ๊ฐ ์ค ํ๋ ๋ฐํ
- cmp ๋ฉ์๋๋ ๋ ๊ฐ์ ๊ฐ์ ๋น๊ตํจ. ๋น๊ต ๊ฐ๋ฅํ ์ด๋ค ๊ฐ์๋ ์ ์ฉํ ์ ์์
match
ํํ์- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ง๋ก ๊ตฌ์ฑ๋จ. ๊ฐ๊ฐ์ ๊ฐ์ง๋ ํจํด, ๊ทธ๋ฆฌ๊ณ match ํํ์์ ์์ ๋ถ๋ถ์ ์ฃผ์ด์ง ๊ฐ์ด ํจํด๊ณผ ์ผ์นํ ๋ ์คํ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋จ
- match ํํ์์ ์ง์ ๋ ๊ฐ์ ์ฝ์ด ๊ฐ ๊ฐ์ง์ ํจํด๊ณผ ์ฐจ๋ก๋๋ก ๋น๊ต
- C ์ธ์ด์ switch case ๋ฌธ๊ณผ ๋น์ทํ๋ค๋ ์๊ฐ์ด ๋ฌ
- ์คํ ์
ํ์ ๋ถ์ผ์น
์๋ฌ๊ฐ ๋ฐ์ํจ- ๋ฌ์คํธ๋ ์ ์ ์ธ ํ์ ์์คํ ์ ๊ฐ์ท์ง๋ง ํ์ ์ถ๋ก (type inference)๋ ์ง์ํจ
- ๋๋ฌธ์ ๋ณ์
guess
๊ฐ String ํ์ ์ด์ด์ผ ํ๋ค๋ ๊ฒ์ ์ค์ค๋ก ์ดํดํจ - ๋ณ์
secret_number
๋ ์ซ์ ํ์- 32bit ์ ์
i32
: signed 32-bit number - 32bit ๋ถํธ ์๋ ์ ์
u32
: unsigned 32-bit number - 64bit ์ ์
i64
: signed 64-bit number
- 32bit ์ ์
- ๋ฌ์คํธ๋ ์ซ์ ๊ฐ์ ๋ํด์ ๊ธฐ๋ณธ์ ์ผ๋ก
i32
ํ์ ์ ์ฌ์ฉํ๋ฉฐ ๋ฌธ์์ด๊ณผ ์ซ์ ํ์ ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํจ => ๋ฌธ์์ด๋ก ์ฝ์ ๊ฐ์ ์ค์ ์ซ์๋ก ๋ณํํด์ผ ๋น๊ต ๊ฐ๋ฅ - ๋ณํ ์ฝ๋ ์ถ๊ฐ
- ๋ณ์ ๊ฐ๋ฆฌ๊ธฐ(shadowing): ์ด๋ค ํ์ ์ ๊ฐ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ ๋ ์ฃผ๋ก ์ฌ์ฉ. ๋๋ฌธ์ ๋ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํ ํ์๊ฐ ์์
trim()
: String ํ์ ์ ์ ์๋์ด ์์. ๋ฌธ์์ด ์์ชฝ ๋์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํจparse()
: ๋ฌธ์์ด์ ์ ์๋์ด ์์. ๋ฌธ์์ด์ ๊ตฌ๋ฌธ ๋ถ์(parsing)ํด์ ์ซ์๋ก ๋ณํํจ. ๋ค์ํ ํ์ ์ ์ซ์ ๊ตฌ๋ฌธ ๋ถ์์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์ซ์ ํ์ ์ ์ ํํ ๋ช ์ํด์ผ ํจ- Result ํ์ ์ ์ด๊ฒ๊ฐ(Ok, Err) ์ค ํ๋๋ฅผ ๋ฐํ
- expect() ์ฌ์ฉ
let guess: u32 = guess.trim().parse().expect("Input Error!");
u32: ์์ ๋ฒ์์ ์์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์๋ง์ ์ซ์ ํ์
728x90
๋ฐ์ํ
'Development Study > Rust' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Rust] Start Rust (Day 5) - Common Programming Concepts [1] (0) | 2023.01.03 |
---|---|
[Rust] Start Rust (Day 4) - Guessing Game [3] (0) | 2022.10.27 |
[Rust] Start Rust (Day 2) - Guessing Game [1] (0) | 2022.08.09 |
[Rust] Start Rust (Day 1) - Start Step (0) | 2022.08.07 |
[Rust] ๋ฌ์คํธ์์ ๋ค๋ฅธ ์์คํ์ผ ํจ์ ์ฐ๊ธฐ (0) | 2022.08.06 |
Comments