async함수의 리턴 타입은 impl Future<Output>인데
왜 첫번째 코드는 에러가나는 거임?
에러안나게하려면 두번째 코드처럼 Box를 이용해야하는데
그럼 왜 함수의 리턴타입을 Box<Future<Output>> 이런식이 아닌거야??
다른데도 물어봤는데 잘 이해가 안가서 자세한 설명점..
async함수의 리턴 타입은 impl Future<Output>인데
왜 첫번째 코드는 에러가나는 거임?
에러안나게하려면 두번째 코드처럼 Box를 이용해야하는데
그럼 왜 함수의 리턴타입을 Box<Future<Output>> 이런식이 아닌거야??
다른데도 물어봤는데 잘 이해가 안가서 자세한 설명점..
dyn T => T 트레잇을 구현하는 타입을 동적 디스패치로 찾게됨 => 컴파일 타임에는 사이즈를 결정할 수 없음 => 따라서 얘네를 가리키는 Box로 래핑해서 컴파일 타임 사이즈를 결정시킴
그럼 리턴타입이 impl trait인건 모두 Box로 래핑해야되는거야?
노노 impl은 정적 디스패치라 받는 쪽에서 그냥 일반 타입으로 받아도 됨
위에서는 리턴은 impl이라 그냥 일반 타임인데 받는 쪽이 그거랑 상관없이 트레잇 오브젝트로 받은거라 생긴 현상임 근데 나도 러스트 비동기 잘 몰라서 실제 어떤 구체 타입일지 모르겠네 내 생각에는 구체 타입으로 안받을거 같은데
dyn 키워드가 그냥 해당 타입은 트레이트라는걸 나타내는거 아니였나? dyn 키워드 붙으면 다 trait object로 인식함?
트레잇 오브젝트임 그리고 "얘가 무슨 트레잇을구현하는 타입이다"를 하나의 타입으로 만든거 자체가 트레잇 오브젝트임
그리고 트레잇 오브젝트고 뭐고 따지기 전에 어떤 트레잇을 구현하는 미지의 타입을 컴파일러가 어떻게 처리할 수 있을지 생각해보면 좋을듯 이건 러스트 이전의 문제임
해당 댓글은 삭제되었습니다.
그게 안되는 이유에 대한 질문이네
Sized가 아니라 스택에 못받지 - dc App
&붙이면 될거임 - dc App