[rust] 제네릭 타입 자기 참조

Rust는 안전하고 효율적인 시스템 프로그래밍을 위한 언어로, 제네릭 타입과 자기 참조 기능을 제공합니다. 제네릭은 코드의 유연성을 높이고, 자기 참조는 소유권 규칙을 엄격하게 적용하면서도 데이터에 안전하게 접근할 수 있도록 합니다.

제네릭 타입

제네릭 타입은 코드의 재사용성을 높여주는데 도움을 줍니다. 제네릭을 사용하면 함수나 구조체를 여러 다양한 타입에서 사용할 수 있게 됩니다.

struct Container<T> {
    item: T,
}

fn main() {
    let c1 = Container { item: 5 };
    let c2 = Container { item: "hello" };
}

위의 예제에서 Container 구조체는 제네릭 T 타입을 가지고 있어서, 어떠한 타입이라도 포함시킬 수 있습니다.

자기 참조

자기 참조는 구조체나 열거형 내에서 자신을 참조하는 또 다른 자료구조를 가리키는 것을 말합니다. 이를 통해 불변 참조와 가변 참조를 동시에 가질 수 있고, 소유권 규칙에 따라 안전하게 데이터를 다룰 수 있습니다.

struct Node {
    value: i32,
    next: Option<Box<Node>>,
}

fn main() {
    let node1 = Node { value: 1, next: None };
    let node2 = Node { value: 2, next: Some(Box::new(node1)) };
}

위의 예제에서 Node 구조체는 next 필드가 Option<Box<Node>> 타입을 갖으며, 이를 통해 자기 참조를 구현할 수 있습니다.

Rust의 제네릭 타입과 자기 참조 기능은 코드의 유연성과 안전성을 높여주는데 큰 도움을 줍니다. 이러한 기능들을 적절히 활용하여 안전하고 효율적인 Rust 코드를 작성할 수 있습니다.

자세한 내용은 Rust 공식 문서를 참고하세요.