[rust] 제네릭 이너 클래스

이번에는 Rust의 제네릭 이너 클래스에 대해 알아보겠습니다.

제네릭(Generic)

제네릭은 코드의 유연성을 높이고 재사용성을 높이는 데 도움을 주는데, 이는 여러 데이터 타입에서 동일한 코드를 사용할 수 있게 해줍니다.

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

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

위의 코드에서 Point 구조체는 제네릭 타입 T를 사용하여 정의되었습니다.

이너 클래스(Inner Class)

Rust는 이너 클래스 개념을 직접적으로 지원하지는 않지만, 제네릭을 사용하여 비슷한 패턴을 구현할 수 있습니다.

struct Container<T> {
    item: T,
}

impl<T> Container<T> {
    fn new(item: T) -> Container<T> {
        Container { item }
    }

    fn get_item(&self) -> &T {
        &self.item
    }

    // 이너 클래스처럼 동작하는 메서드 
    fn perform_operation(&self) {
        println!("Performing operation with item: {:?}", &self.item);
    }
}

위의 코드에서 Container 구조체는 제네릭 타입 T를 사용하여 정의되었습니다. 따라서 이를 이너 클래스와 비슷하게 사용할 수 있습니다.

제네릭을 이용하면 Rust에서도 이너 클래스와 유사한 패턴을 구현할 수 있습니다.

이상으로 Rust의 제네릭 이너 클래스에 대해 알아보았습니다. 참고문헌을 확인하시면 더 많은 정보를 얻을 수 있습니다.

참고문헌