https://doc.rust-lang.org/book/ch10-02-traits.html프갤에서 성능 드립 치는 언어라서뭔가 다른걸 기대했었는데vtable 만들어서 실행시간에 처리하는 그냥 Java의 interface같은거였네
아니야. C++의 템플릿과 자바의 vtable 중 원하는 걸 선택할 수 있는 거야
그럼 저 예제 impl Summary for NewsArticle에서 "Summary for"라고 안써도 되게 하는 방법은?
거기서 결정되는 게 아니라 사용처에서 결정됨
fn a(b: impl C) // C++의 템플릿과 유사하게 동작
fn a(b: &C) // vtables로 동작
"Summary for"라고 선언 안하면 fn a(b: impl Summary)에 안들어가던데??
선언하는 게 맞아. 단지 impl A for B 로 정의한 A를 C++ 스타일(정적 디스패치)로도 쓸 수 있고 자바 스타일(동적 디스패치)로도 쓸 수 있다는 거야
정적 디스패치를 사용하면 실행 시간 비용이 없지
그럼 템플릿은 아닌데
대신 코드 제너레이션이 중복으로 될 테니 실행 파일 크기는 늘어나겠고
템플릿 아니지 템플릿은 그냥 코드 확장해서 정적 덕타이핑하자너
음. 템플릿을 어떤 의미로 이해했나? 나는 타입별 함수가 별개로 생성된다는 의미로 말한 거다
그거보다 유연함 예를들어 너가 만든 trait들을 primitive 타입들같은 다른 라이브러리의 타입들에 직접 구현해줄수있음