First, I agree with using Result driven design with Success- or Error-wrappers.
Second, I personally don't like changing the input to make it valid, this should be up to the caller.
First example that comes to mind is not entirely relevant (security vs UI) bcrypt, where standard implementations cap the input such that only the X first characters is used, causing potential security vulnerabilities.
I'll reference this
Medium article, inspecting different bcrypt implementations if this is of interest.