3 ms·
Not if I loosened the requirement. Stricter adherents shouldn't have to change anything. This is poor language ergonomics.
by nickbauman 6y ago
Not if I loosened the requirement. Stricter adherents shouldn't have to change anything. This is poor language ergonomics.
- setr 6y agoTo be clear, you're talking about the function signature changing from fn(a: int) to fn(a: Option<int>) ? Technically, yes, all callers would have to update, but practically, you'd just define fn(a: int) { fn_2(Some(a)) } to avoid the breakage. That is, you're essentially telling the compiler how to loosen the requirements. Ergonomically, this seems rather fine. Especially if this means you gain (some) protections from the much more problematic case of restricting the requirements.
- mqus 6y agoThere is also the Option of accepting Into<Option<T>>, which does cover both variants and is completely backwards compatible.