We take in and pass out several different types; types which should have very clear trait bounds that allow us some future iteration without breaking semver too.
In general the last point implies that we should have more specific requirements for types that are passed to us and guarantee much less traits for types we pass out.
This issue is especially relevant for auto-traits (Send, Sync, Unpin, UnwindSafe, …) that can easily be accidentally removed and then constitute a hidden breaking semver change.
We take in and pass out several different types; types which should have very clear trait bounds that allow us some future iteration without breaking semver too.
In general the last point implies that we should have more specific requirements for types that are passed to us and guarantee much less traits for types we pass out.
This issue is especially relevant for auto-traits (
Send
,Sync
,Unpin
,UnwindSafe
, …) that can easily be accidentally removed and then constitute a hidden breaking semver change.