소개
이 실습에서는 Rust 에서 제네릭 타입과 메서드를 구현하는 방법을 배우게 됩니다. 이를 통해 구조체를 사용하거나 메서드를 호출할 때 서로 다른 타입 매개변수를 지정할 수 있습니다.
참고: 실습에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어
main.rs를 사용하고rustc main.rs && ./main으로 컴파일 및 실행할 수 있습니다.
구현
함수와 마찬가지로, 제네릭 특성을 유지하기 위해 구현에도 주의가 필요합니다.
struct S; // 구체적인 타입 `S`
struct GenericVal<T>(T); // 제네릭 타입 `GenericVal`
// GenericVal 의 구현 (impl) 에서 타입 매개변수를 명시적으로 지정:
impl GenericVal<f32> {} // `f32` 지정
impl GenericVal<S> {} // 위에서 정의된 `S` 지정
// `<T>` 는 제네릭 특성을 유지하기 위해 타입 앞에 와야 함
impl<T> GenericVal<T> {}
struct Val {
val: f64,
}
struct GenVal<T> {
gen_val: T,
}
// Val 의 구현 (impl)
impl Val {
fn value(&self) -> &f64 {
&self.val
}
}
// 제네릭 타입 `T` 에 대한 GenVal 의 구현 (impl)
impl<T> GenVal<T> {
fn value(&self) -> &T {
&self.gen_val
}
}
fn main() {
let x = Val { val: 3.0 };
let y = GenVal { gen_val: 3i32 };
println!("{}, {}", x.value(), y.value());
}
요약
축하합니다! 구현 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.