Nil Safety
In Soppo, pointers are non-nil by default. A *T cannot be nil. To allow nil, use ?*T (a nilable pointer).
This prevents nil pointer dereferences at compile time. The compiler tracks which pointers might be nil and requires you to handle that case.
Try it: Change the return type to *User (removing the ?) and see what happens.