■ &str 타입의 parse 메소드를 사용해 문자열을 실수로 변환하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_value : &str = " 12.5 "; let trimmed_string_value : &str = string_value.trim(); let parse_result : Result<_, _> = trimmed_string_value.parse(); let real_value : f64 = parse_result.expect("실수가 아닙니다."); println!("{}", real_value); |
■ &str 타입의 parse 메소드 사용시 타입을 지정해 문자열을 실수로 변환하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string_value : &str = "3.1415"; let real_value : f64 = string_value.parse::<f64>().expect("문자열을 실수로 변환할 수 없습니다."); println!("{:.2}", real_value); |
■ &str 타입의 trim 메소드를 사용해 공백 문자열을 제거하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let source_string_value : &str = " 테스트 문자열 "; let target_string_value : &str = source_string_value.trim(); println!("[{}]", target_string_value); |
■ Stdin 구조체의 read_line 메소드를 사용해 표준 입력에서 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut string_value : String = String::new(); let stdin : std::io::Stdin = std::io::stdin(); let result : Result<usize, std::io::Error> = stdin.read_line(&mut string_value); |
■ String 구조체의 new 메소드를 사용해 문자열 변수를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut string_value : String = String::new(); |
■ stdin 메소드를 사용해 표준 입력 객체를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let stdin : std::io::Stdin = std::io::stdin(); |
■ 체질량 지수(Body Mass Index)를 구하는 방법을 보여준다. ▶ main.rs
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
fn main() { let height_cm = input("키(cm) : "); let weight_kg = input("몸무게(kg) : "); let height = height_cm / 100.0; let bmi = weight_kg / height.powf(2.0); println!("BMI = {:.1}", bmi); if bmi < 18.5 { println!("저체중"); } else if bmi < 23.0 { println!("정상"); } else if bmi < 25.0 { println!("비만전단계"); } else if bmi < 30.0 { println!("1단계 비만"); } else if bmi < 35.0 { println!("2단계 비만"); } else { println!("3단계 비만"); } } fn input(prompt: &str) -> f64 { println!("{}", prompt); let mut source = String::new(); std::io::stdin().read_line(&mut source).expect("입력 에러"); return source.trim().parse().expect("숫자가 아닙니다."); } /* 키(cm) : 169 몸무게(kg) : 86 BMI = 30.1 2단계 비만 */ |
■ Vec<T> 구조체의 shuffle 메소드를 사용하는 방법을 보여준다. ▶ Cargo.toml
|
[package] name = "test_project" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.8.0" |
▶ main.rs
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 32 33 34
|
use rand::seq::SliceRandom; fn main() { let mut number_vector = vec![]; for i in 1..=75 { number_vector.push(i); } let mut random_number_generator = rand::thread_rng(); number_vector.shuffle(&mut random_number_generator); for i in 0..25 { if i == 12 { print!(" *,"); } else { print!("{:3},", number_vector[i]); } if i % 5 == 4 { println!(""); } } } |
test_project.zip
■ Vec 구조체의 push 메소드를 사용해 벡터에 데이터를 추가하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut number_vector = Vec::new(); number_vector.push(1); number_vector.push(2); number_vector.push(3); |
■ Vec<T> 구조체를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let u32_vector : Vec<u32> = vec![100, 200, 300]; for i in u32_vector { println!("{}", i); } let string_vector : Vec<&str> = vec!["개", "고양이", "닭"]; for i in string_vector { println!("{}", i); } |
■ Vec 구조체를 사용해 벡터를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut number_vector = Vec::new(); number_vector.push(1); number_vector.push(2); number_vector.push(3); println!("{:?}", number_vector); |
■ println! 매크로에서 포맷 문자열을 사용해 벡터 데이터를 출력하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let number_vector = vec![1, 2, 3]; println!("{:?}", number_vector); |
■ vec! 매크로를 사용해 벡터를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let number_vector = vec![1, 2, 3]; println!("{:?}", number_vector); |
■ match문으로 분기 처리하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let value = 3; match value { 1 => println!("가"), 2 => println!("나"), 3 => println!("다"), 4 => println!("라"), _ => println!("마") } |
■ 미로를 자동으로 생성하는 방법을 보여준다. ▶ main.rs
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
use rand::Rng; const CELL_COUNT : usize = 25; fn main() { let mut random_number_generator = rand::thread_rng(); let mut maze_array = [[0; CELL_COUNT]; CELL_COUNT]; for n in 0..CELL_COUNT { maze_array[n ][0 ] = 1; // 위쪽 벽 maze_array[0 ][n ] = 1; // 왼쪽 벽 maze_array[n ][CELL_COUNT-1] = 1; // 오른쪽 벽 maze_array[CELL_COUNT - 1][n ] = 1; // 아래쪽 벽 } for y in 2..CELL_COUNT - 2 { for x in 2..CELL_COUNT - 2 { if x % 2 == 1 || y % 2 == 1 { continue; } maze_array[y][x] = 1; // 벽 let random_number = random_number_generator.gen_range(0..=3); match random_number { 0 => maze_array[y - 1][x ] = 1, // 상 1 => maze_array[y + 1][x ] = 1, // 하 2 => maze_array[y ][x - 1] = 1, // 좌 3 => maze_array[y ][x + 1] = 1, // 우 _ => {}, } } } let tile_array = [" ", "##"]; for y in 0..CELL_COUNT { for x in 0..CELL_COUNT { print!("{}", tile_array[maze_array[y][x]]); } println!(""); } } |
test_project.zip
■ 2차원 배열을 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let array = [[0; 10]; 10]; for y in 0..=9 { for x in 0..=9 { print!("{}", array[y][x]); } println!(); } |
■ rand 크레이트를 사용해 난수를 생성하는 방법을 보여준다. ▶ Cargo.toml
|
[package] name = "test_project" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.8.0" |
▶ main.rs
|
use rand::Rng; fn main() { let mut random = rand::thread_rng(); for _ in 0..5 { let random_value = random.gen_range(1..=6); println!("{}", random_value); } } |
test_project.zip
■ const 키워드를 사용해 상수를 사용하는 방법을 보여준다 ▶ 예제 코드 (RS)
|
const CELL_COUNT : usize = 25; |
■ rand 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
|
... [dependencies] rand = "0.8.0" |
■ num-bigint 크레이트를 사용해 큰 수의 거듭제곱을 구하는 방법을 보여준다. ▶ Cargo.toml
|
[package] name = "test_project" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] num-bigint = "0.4" |
▶ main.rs
|
use num_bigint::BigInt; fn main() { let value = BigInt::from(1234); println!("{}", value.pow(5678)); } |
test_project.zip
■ vec! 매크로를 사용해 가변 배열(벡터)을 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let value_vector = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let mut total_value = 0; for value in value_vector { total_value += value; } println!("{}", total_value); |
■ num-bigint 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
|
... [dependencies] num-bigint = "0.4" |
■ if 식을 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let value = 5; let result = if value % 2 == 0 { "짝수" } else { "홀수" }; println!("{}", result); |
■ for문에서 = 기호를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
fn main() { let mut total_value = 0; for value in 1..=10 { total_value += value; } println!("{}", total_value); } |
■ 함수 인자에서 가변 참조를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
fn set_value(value : &mut u32) { *value = 100; } fn main() { let mut value = 10; set_value(&mut value); println!("valur = {}", value); } |