본문 바로가기

Rust

러스트 제네릭 스트럭트

pub struct Queue<T> {
	older: Vec<T>,
	younger: Vec<T>

 

Queue<T>는 임의의 요소 타입 T에 대해서라고 읽으면 된다. 예를들어

 

Queue<String>에서 T의 타입은 String타입

Queue<char>에서 T의 타입은 char타입

Vec 벡터타입도 제네릭스트럭트이다. 

 

 

 

impl 블록은 함수의 집합체이고 스트럭트 타입의 메서드가 된다.

pub struct Queue<T> {
    older: Vec<T>,
    younger: Vec<T>,
}
// struct 필드에 접근할 때는 .을 붙인다.
impl<T> Queue<T> {
  // Self는 자신의 대상이되는 타입을 가르킨다 여기서 Self가 가르키는것은 Queue<T>이다.
    pub fn new() -> Self { //객체를 사용하기위해 생성자 함수 정의
        Queue {
            older: Vec::new(),
            younger: Vec::new(),
        }
    }

    pub fn push(&mut self, t: T) {
        self.younger.push(t);
    }

    pub fn is_empty(&self) -> bool {
        self.older.is_empty() && self.younger.is_empty()
    }
}

fn main() {
    let mut q = Queue::new(); // 연관함수 new를 이용해 객체 생성 
    let mut r = Queue::new(); // 연관함수 new를 이용해 객체 생성 

    q.push("CAD");
    r.push(0.74);

    q.push("BTC");
    r.push(13764.0);
}

 

pub struct를 붙여 외부에서 필드에 접근할 수 있게 했다. 메서드안에 있는 생성자 함수를 정의하고 new()를 이용해 객체를 생성한다.

 

 

 

 

https://www.yes24.com/Product/Goods/116789691

 

프로그래밍 러스트 - 예스24

『러스트 프로그래밍 공식 가이드』보다 더 친절하게, 한층 더 고급 기능까지 다룬다!이 책은 메모리 안전성과 신뢰할 만한 동시성에 예측 가능한 성능을 더한 러스트의 기능이 어떤 식으로 메

www.yes24.com

 

'Rust' 카테고리의 다른 글

Rust Closure  (0) 2024.01.24
러스트 impl 트레이트 반환타입  (0) 2024.01.16
러스트 모듈(pub mod)  (0) 2024.01.09
러스트 제네릭(generic) 함수 정의  (0) 2024.01.01
러스트 프로그래밍 - 스코프를 벗어나면 drop  (0) 2023.12.18