Rustc Trait System Refactor

https://blog.rust-lang.org/inside-rust/2023/07/17/trait-system-refactor-initiative.html

22 points · 2 comments · view on lemmy.world

2 Comments

Bogasse@lemmy.world · 3 pts · 3y (1 reply)

I'm surprised by the ambiguity shown in the last example. Shouldn't the concrete return type for an impl Into<u32> be completely inaccessible outside of the function? Otherwise it would allow to introduce breaking changes without changing a function API.

But in this case, how would it be possible that impl_trait().into() is an u16?

SorteKanin@feddit.dk · 0 pts · 3y

I guess it's only accessible to the mem::size_of because it has an implicit Sized bound as well. So really the bound is impl Into + Sized and I don't think the code using the function is assuming anything else.

But I do agree it feels weird. I feel like the function should know its return type regardless of how it is used?