본문 바로가기
Rust

[Rust] Generic : Data Type 예제 (23일차)

by 꾸압 2023. 1. 5.

 

<예제 코드_1>

fn largest<T: std::cmp::PartialOrd>(list: &[T]) -> T {
    let mut largest = list[0];

    for item in list.iter() {
        if item > largest {
            largest = item;
        }
    }

    largest
}

fn main() {
    let numbers = vec![34, 50, 25, 100, 65];

    let result = largest(&numbers);
    println!("The largest number is {}", result);

    let chars = vec!['y', 'm', 'a', 'q'];

    let result = largest(&chars);
    println!("The largest char is {}", result);
}

 


 

<예제 코드_2>

struct Point<T> {
    x: T,
    y: T,
}

impl<T> Point<T> {
    fn x(&self) -> &T {
        &self.x
    }
}

fn main() {
    let p = Point { x: 5, y: 10 };

    println!("p.x = {}", p.x());
}

 


 

<예제 코드_3>

struct Point<T, U> {
    x: T,
    y: U,
}

impl<T, U> Point<T, U> {
    fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {
        Point {
            x: self.x,
            y: other.y,
        }
    }
}

fn main() {
    let p1 = Point { x: 5, y: 10.4 };
    let p2 = Point { x: "Hello", y: 'c' };

    let p3 = p1.mixup(p2);

    println!("p3.x = {}, p3.y = {}", p3.x, p3.y);
}

 


 

<예제 코드_4>

enum Option_i32 {
    Some(i32),
    None,
}

enum Option_f64 {
    Some(f64),
    None,
}

fn main() {
    let integer = Option_i32::Some(5);
    let float = Option_f64::Some(5.0);
}

 


 

<참조 1> https://rinthel.github.io/rust-lang-book-ko/ch10-01-syntax.html

<참조 2>

 

 

'Rust' 카테고리의 다른 글

[Rust] Lifetime 예제 (25일차)  (0) 2023.01.07
[Rust] Trait 예제 (24일차)  (0) 2023.01.06
[Rust] Generic 예제 (22일차)  (0) 2023.01.04
[Rust] Enum 예제 (21일차)  (0) 2023.01.02

댓글