[RUST/COMMON] 문자 리터럴에서 ASCII 문자 코드 구하기
■ 문자 리터럴에서 ASCII 문자 코드를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 |
let character_code = b'a'; println!("{:2x}", character_code); // 61 |
■ 문자 리터럴에서 ASCII 문자 코드를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 |
let character_code = b'a'; println!("{:2x}", character_code); // 61 |
■ type_name 메소드를 사용해 타입명을 구하는 방법을 보여준다. ▶ 예제 코드 (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 |
use std::any::type_name; fn type_of<T>(_: T) -> &'static str { type_name::<T>() } fn main() { let a = 100u8; let b = 100i128; let c = 10_000; println!("a = {:>5} ({:4})", a, type_of(a)); println!("b = {:>5} ({:4})", b, type_of(b)); println!("c = {:>5} ({:4})", c, type_of(c)); } /* a = 100 (u8 ) b = 100 (i128) c = 10000 (i32 ) */ |
■ Result 열거형의 unwrap 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 |
let string_value = "365"; let parse_result : Result<_, _> = string_value.parse(); let integer_value : i32 = parse_result.unwrap(); println!("{}", integer_value); |
■ Stdin 구조체를 사용해 표준 입력에서 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
fn get_standard_input_string() -> String { let mut string_value = String::new(); std::io::stdin().read_line(&mut string_value).expect("입력시 에러가 발생했습니다."); return string_value.trim_end().to_string(); } fn main() { let string_value = get_standard_input_string(); println!("{}", string_value); } |
■ Stdin 구조체를 사용해 표준 입력에서 실수값을 구하는 방법을 보여준다. ▶ 예제 코드 (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 |
fn get_standard_input_string() -> String { let mut string_value = String::new(); std::io::stdin().read_line(&mut string_value).expect("입력시 에러가 발생했습니다."); return string_value.trim_end().to_string(); } fn get_standard_input_real_value(default_value : f64) -> f64 { let string_value = get_standard_input_string(); match string_value.trim().parse::<f64>() { Ok(value) => value, Err(_) => default_value } } fn main() { let mut real_value; loop { println!("실수를 입력해 주시기 바랍니다 : "); real_value = get_standard_input_real_value(0.0); if real_value > 0.0 { println!(); break; } println!("실수만 입력 가능합니다.") } println!("입력한 실수는 {} 입니다.", real_value); } |
■ &str 타입의 parse 메소드 처리 결과를 match문에서 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 |
let string_value : &str = "3.1415a"; let parse_result : Result<f64, std::num::ParseFloatError> = string_value.parse::<f64>(); match parse_result { Ok(result) => println!("{:.2}", result), Err(e) => println!("문자열을 실수로 변환중 에러가 발생했습니다 : '{:?}'", e) } |
■ println! 매크로에서 포맷 문자열을 사용해 실수값을 소수점 3자리까지 출력하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 |
let real_value : f64 = 3.1415f64; println!("{:.3}", real_value); |
■ &str 타입의 parse 메소드를 사용해 문자열을 실수로 변환하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 |
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)
1 2 3 4 5 6 7 |
let string_value : &str = "3.1415"; let real_value : f64 = string_value.parse::<f64>().expect("문자열을 실수로 변환할 수 없습니다."); println!("{:.2}", real_value); |
■ &str 타입의 trim 메소드를 사용해 공백 문자열을 제거하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 |
let source_string_value : &str = " 테스트 문자열 "; let target_string_value : &str = source_string_value.trim(); println!("[{}]", target_string_value); |
■ Stdin 구조체의 read_line 메소드를 사용해 표준 입력에서 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 |
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)
1 2 3 |
let mut string_value : String = String::new(); |
■ stdin 메소드를 사용해 표준 입력 객체를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 |
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
1 2 3 4 5 6 7 8 9 10 11 |
[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)
1 2 3 4 5 6 7 |
let mut number_vector = Vec::new(); number_vector.push(1); number_vector.push(2); number_vector.push(3); |
■ Vec<T> 구조체를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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)
1 2 3 4 5 6 7 8 9 |
let mut number_vector = Vec::new(); number_vector.push(1); number_vector.push(2); number_vector.push(3); println!("{:?}", number_vector); |
■ println! 매크로에서 포맷 문자열을 사용해 벡터 데이터를 출력하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 |
let number_vector = vec![1, 2, 3]; println!("{:?}", number_vector); |
■ vec! 매크로를 사용해 벡터를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 |
let number_vector = vec![1, 2, 3]; println!("{:?}", number_vector); |
■ match문으로 분기 처리하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 |
let value = 3; match value { 1 => println!("가"), 2 => println!("나"), 3 => println!("다"), 4 => println!("라"), _ => println!("마") } |
■ 2차원 배열을 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let array = [[0; 10]; 10]; for y in 0..=9 { for x in 0..=9 { print!("{}", array[y][x]); } println!(); } |
■ const 키워드를 사용해 상수를 사용하는 방법을 보여준다 ▶ 예제 코드 (RS)
1 2 3 |
const CELL_COUNT : usize = 25; |
■ rand 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
1 2 3 4 5 6 |
... [dependencies] rand = "0.8.0" |
■ vec! 매크로를 사용해 가변 배열(벡터)을 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 |
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); |