-
Rust 생소한 용어/문법들 #4 - 연관함수(IT)Rust팁 한방으로 정리 2025. 5. 25. 08:12
메소드는 특정 인스턴스에 대해 호출되고, 연관 함수는 타입 자체에 대해 호출된다는 점
struct Rectangle { width : u32, height: u32, } impl Rectangle { // 1. 연관 함수 (Associated Function) - 생성자 역할 // 메소드와는 달리 첫번째 파라미터로 self를 받지 않습니다. fn new(width: u32, height: u32) -> Rectangle { Rectangle { width, height } } fn square(size:u32) -> Self { Self { width: size, height: size, } } } // impl 블록을 여러개로 나누어 사용할 수 있음의 예 impl Rectangle { fn can_hold(&self, other: &Self) -> bool { self.width > other.width && self.height > other.height } }
Self 는 Rectangle 로 대체될 수 있는 키워드이다. 연관함수는 타입자체를(구조체)를 반환하므로 대문자 Self 인점 확인
호출시에는
let rect : Rectangle = Rectangle::new(10, 20); let sq : Rectangle = Rectangle::square(size: 23);
:: 구문을 붙여 호출하는 이유는 연관함수는 구조체의 네임스페이스 안에 있기 때문
지난번에 배운 디버그로 찍어볼까요?
println!(" Can rect1 hold rect2? {:#?}", Rectangle::new(10, 20)); println!(" Can rect1 hold rect2? {:#?}", Rectangle::square(23)); println!(" Can rect1 hold rect3? {:#?}", Rectangle::square(11)); dbg!(Rectangle::new(10, 20)); dbg!(Rectangle::square(11));
반응형'(IT)Rust팁 한방으로 정리' 카테고리의 다른 글
Rust 생소한 용어/문법들 #6 - 잠깐! Rust 코딩컨벤션! (0) 2025.05.26 Rust 생소한 용어/문법들 #5 - enum 열거형의 파워! (0) 2025.05.26 Rust 생소한 용어/문법들 #3 - 메서드 (0) 2025.05.19 Rust 생소한 용어/문법들 #2 - 디버그포맷 (0) 2025.05.18 Rust 생소한 용어/문법들 #1 - 몇몇 키워드들 (0) 2025.05.10