아래 소스를 기준으로 Rust에서 Method와 Function의 차이를 설명한다.
struct Person {
name: String,
}
impl Person {
fn new(name: String) -> Self {
Self {
name
}
}
fn set_name(&mut self, name: String) {
self.name = name;
}
fn get_name(&self) -> String {
self.name.clone()
}
}
fn main() {
let jihoon = Person::new("jihoon".to_string());
println!("Hello, {}!", jihoon.get_name());
}
Method
특정 impl 안에 존재하며, &self나 &mut self와 같은 키워드가 붙었을 경우 Method로 불리운다.
위 소스를 기준으로 Person 구조체의 set_name()과 get_name()이 그 예이다.
즉, 특정 구조체에 대한 특정한 동작을 수행할 때 Method를 사용할 수 있다.
Function
특정 impl안에 존재할 수도 있고 존재하지 않을 수 있다.
Method와 다르게 &self나 &mut self와 같은 키워드가 붙지 않는다.
위 소스를 기준으로 Person 구조체의 new()가 그 예이다.
즉, 특정 구조체와 상관없이 Static하게 호출 할 수 있을 때 Function이라고 할 수 있다.
Key Point
Rust에서 Callable이 필요할 때 fn() 이라는 타입을 많이 사용한다.
이 타입은 Function을 나타낸다.
즉, Callback과 같이 특정한 이벤트 시 각기 다른 함수를 호출하고 싶을 때 Function 타입으로만 호출할 수 있다는 것이다.
필자가 Callback을 구현해야 하는데 Method로 밖에 선언이 되어 있질 않아서 구조를 뒤짚는데 좀 애를먹어서 이렇게 정리한다..
Rust에서 Callable을 Function이 아닌 Method로 호출할 수 있는 방법도 있을텐데 일단은 이렇게까지만 정리한다..
(없나..? 있나..? 잘 모르겠다 사실..ㅎㅎ 실력 이슈..ㅠ)
'Programming > Rust' 카테고리의 다른 글
[Rust] 싱글톤 패턴(Singleton-Pattern) 코드 작성법 (1) | 2024.02.09 |
---|---|
[Rust] 소유권 시스템 (0) | 2023.09.24 |
[Rust] 함수 선언, 파라미터, 리턴 (0) | 2023.08.28 |
[Rust] 변수의 타입 (0) | 2023.08.24 |
[Rust] 기초 학습 사이트 (0) | 2023.07.15 |