dyn*
does not support trait upcasting
#104800
Labels
F-dyn_star
`#![feature(dyn_star)]`
T-types
Relevant to the types team, which will review and decide on the PR/issue.
Currently trait upcasting is done via the
Unsize
/CoerceUnsized
traits -- however, sinceCoerceUnsized
works structurally, implementingdyn*
upcasting via the same codepaths allows this erroneous code to make it to codegen and ICE:https://github.com/rust-lang/rust/blob/d8cb8c37adfbfb641a1b30d3a2de3ba7226bb744/src/test/ui/dyn-star/no-unsize-coerce-dyn-trait.rs#L1-L13
That's why although
dyn*
trait upcasting was implemented in #101832, I removed it in #104594 due to introduced ICEs.dyn*
upcasting first, sincedyn*
is not currently intended to be user-facing syntax. Due to this, the feature is not currently needed even if it is interesting and possible theoretically.dyn*
upcasting, then it needs to be implemented separately fromdyn Trait
upcasting with a much narrower scope.The text was updated successfully, but these errors were encountered: