회사에서 Rust 프로그래밍 강의를 들으면서 공부한 예제를 정리해 본다.
내가 원래 아는 언어들이랑 개념이 많이 달라서 어려웠다...
- 참조 링크
1) 코드누리 Rust
- 기본 출력
더보기
fn main() {
println!("Hello World!");
}
- 정수 3개 입/출력 예제
더보기
fn main() {
println!("3개의 정수를 입력해 주세요.");
let mut s = String::new();
std::io::stdin().read_line(&mut s).unwrap();
let vs: Vec<&str> = s.trim().split(" ").collect();
let a = vs[0].parse::<i32>().unwrap();
let b = vs[1].parse::<i32>().unwrap();
let c = vs[2].parse::<i32>().unwrap();
println!("{} {} {}", a, b, c)
}
- Vector에서 홀수의 합 구하기(iterator adapter(filter) 사용)
더보기
fn main() {
let v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let mut iter = v.iter().filter(|&x| x % 2 != 0);
let mut result: i32 = 0;
for val in iter {
result += val;
}
println!("결과 값 : {}", result);
}
- 문자 값 비교하는 함수 만들기
더보기
fn main() {
let s1 = "A".to_string();
let s2 = "D".to_string();
let s3 = "X".to_string();
fn min(s1: &str, s2: &str, s3: &str) -> String {
return if s1 < s2 { if s1 < s3 { (*s1).to_string() } else { (*s3).to_string() } }
else { if s2 < s3 { (*s2).to_string() } else { (*s3).to_string() } };
}
let r = min(&s1, &s2, &s3);
println!("{}", r); // "A"
}
- Circle 구조체 만들기(구조체, Display Trait, 생성자(연관 함수))
더보기
fn main() {
// 1. Circle struct 만들기
struct Circle {
x: f32,
y: f32,
radius: f32
}
impl Circle {
// 생성자(연관 함수) - 메서드 인자에 self가 들어가지 않음
fn new(x: f32, y: f32, radius: f32) -> Self
{
let rc = Circle{x, y, radius};
rc
}
fn area(&self) -> f32 {
self.radius.powf(2.0)
}
fn inflate(&mut self, inflateR: f32) -> () {
self.radius += inflateR;
}
}
// Display Trait로 출력 형식 조정
impl std::fmt::Display for Circle
{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result
{
write!(f, "{:.1}, {:.1}, {:.1}", self.x, self.y, self.radius)
}
}
let mut c1 = Circle {x: 3.0, y: 3.0, radius: 8.0};
// 2. new associated function
let mut c2 = Circle::new(3.0, 3.0, 5.0);
// 3. area() 메소드
println!("{}", c1.area());
println!("{}", c2.area());
// 4. inflate 만들기
c2.inflate(2.0); // 반지름이 2.0만큼 증가하게 해 주세요
println!("{}", c2.area());
// 5. 화면 출력
println!("{}", c2); // 3.0, 3.0, 7.0
}