궁금한게 2가지가 있는데..
1. #[derive(..)] 이거는 trait 상속받는걸로 알고 있는데 어떤 구조체 위에 #[derive(Bird)] 이렇게 하면
해당 구조체는 Bird Type으로도 쓸 수 있는거 맞음??
2. 그냥 #[..] 이렇게 된게 좀 이해가 안가는데
예를 들어서
#[program]
struct Foo {}
위 같은 코드가 있을때 지금은 Foo에 아무 field가 없잖아?
근데 #[program]을 함으로써 field 자동 생성도 가능함?
예를들면 #[program]이 붙은 구조체들은 program_name: String, program_id: u64 이런식으로 자동 생성되게..
메서드도 자동생성되나?
러스트에는 상속이 없어
그건 아는데 비스무리한건 있잖아 trait 같은경우도 메서드 따로 구현안해도 기본적으로 세팅해놓으면 바로 쓸수있다던지 등
ㅇㅇ 기본적으로 derive 가능한 트레잇이 있음
derive(Bird)하면 bird 매크로를 호출할뿐이고 Bird라는 trait 유무는 상관없음 proc macro 찾아보셈
몰랐네 이건
이름을 똑같이 만드는게 관습이라고 나오더라. 근데 proc매크로 넘 어려움...
라이브러리 만드는 애들이나 하는거임 볼거없음