핵심 타입은 Any 이놈을 통해 dyn Any에서 타입체킹과 변환이 가능함 이렇게 단순한 이유는 상속이 없어서 단순히 같은 타입인지 여부만 따지면 되기 때문 Any는 모든 타입이 구현한다
Any는 정적 타입 언어의 수치다
사실 쓸일이 없긴함
OOP 패턴 적용할때 한번씩 등판하는정도
근데 내부구현이 어떻게 되는거? u32인지 String인지 어떻게 앎?
is 구현이 self.type_id() == T::type_id() 이런식으로 되는건 이해하지?
type_id를 메모리에 적어놓음?
아 dyn일때만 적는건가
ㄴㄴ 가상호출함
그리고 is로 같은 타입인게 확인되면 그냥 포인터 그대로 캐스팅하면돰
어쨋든 가상호출 주소를 적어둔단 거잖아. dyn일때만 적는거임?
ㅇㅇ dyn의 참조는 fat pointer라서 항상 vtable 들고다님
&[T]가 항상 슬라이스 길이 들고 다니는것과 마찬가지
dyn Trait라고 동적 디스페치를 위한 타입이 있음 dyn Any는 그 일종인거고
아 ㅇㅋ. dyn일 때 vtable에 등록되는 함수들을 지정하는건가
근데 rust처럼 하면 Any같은 trait의 구현이 추가될때마다 vtable크기가 무조건 늘어나는거 아님? 사용되지 않는 trait의 vtable도 무조건 들고 있어야 할것 같은데
ㄴㄴ dyn Trait는 딱 그 Trait의 vtable만 들고있음
아 타입 다시보니까 dyn Any 이런식으로 생겼구나 ㅇㅅㅇ
any타입스크립트