Open mysteriouslyseeing opened 1 year ago
Hey,
Thank you for the suggestion - I like the idea. I am not yet sure whether is it better to expose this to the user or to do something like this internally which would remove the requirement for users to have to implement Value
, which would make the API easier to use.
Although it is opt-in, have to call to_option
or match on the returned value is less than ideal.
If I can do it internally without impacting performance then the latter would be a better approach, so will try that first, and revert back to your suggestion if it turns out to be better.
Thanks!
With the requirement for values to implement Value, typically through the use of sentinel values, hard-to-diagnose bugs can crop up.
The suggestion is an addition of a type to the library; an enum using generics with three variants: a redirect variant, a null variant, and a variant which actually contains data. Developers using your library can use this enum, and those with very strict space or performance requirements can implement Value manually.
A sample implementation:
What do you think?