• Bogasse@lemmy.world
    link
    fedilink
    arrow-up
    2
    arrow-down
    1
    ·
    1 year ago

    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
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      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<u32> + 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?