Skip to content

Instantly share code, notes, and snippets.

/*
Purchasing an item:
1. must have enough credits
2. must have an active account
*/
OneOf<PurchaseReceipt, InsufficientCredits, AccountIsSuspended> PurchaseItem();
/* Upvoting a post
1. Must have enough reputation points
*/
public OneOf<User, InvalidUsername, UsernameTaken> CreateUser(string username)
{
if (!IsValid(username))
{
return new InvalidUsername(username);
}
if (UsernameTaken(username))
{
return new UsernameTaken(username);
public Result<User> CreateUser(string username)
{
if (!IsValid(username))
{
return Result.Fail("Invalid username");
}
if (UsernameTaken(username))
{
return Result.Fail("Username already taken");
public User CreateUser(string username)
{
if (!IsValid(username))
{
throw new InvalidOperationException("Invalid username");
}
if (UsernameTaken(username))
{
throw new InvalidOperationException("Username already taken");