class Result<T> where T: struct { ... }
A Result<T> that can only contain successful values doesn't seem very useful
int x = default; // x becomes zero T x = default; // x becomes whatever the default value for struct is