A series of analyzers, attributes, and libraries to help C# developers write clearer, more type-safe code.
Core StaticCs package: https://www.nuget.org/packages/StaticCS
The [Closed] attribute is used to simulate discriminated unions or "complete" enums. It can be applied to enums, classes, or records that meet certain requirements. The effect is that when you use a Closed type as the argument to a switch expression, if all cases are checked inside the arms of the switch, the "incompleteness" warning that is normally produced by the C# compiler will be suppressed.
Example:
Enums:
[Closed]
public enum CardSuit {
  Spade,
  Club,
  Heart,
  Diamond
}
int SuitsToInt(CardSuit suit) => switch {
    CardSuit.Spade => 0,
    CardSuit.Club => 1,
    CardSuit.Heart => 2,
    CardSuit.Diamond => 3
    // No warning about switch incompleteness
};Records:
[Closed]
public abstract record CardSuit {
  private CardSuit() { }
  public record Spade() : CardSuit;
  public record Club() : CardSuit;
  public record Heart() : CardSuit;
  public record Diamond() : CardSuit;
}
int SuitsToInt(CardSuit suit) => switch {
    CardSuit.Spade => 0,
    CardSuit.Club => 1,
    CardSuit.Heart => 2,
    CardSuit.Diamond => 3
    // No warning about switch incompleteness
};https://www.nuget.org/packages/StaticCS.Async
A library for structured concurrency in C#. See the Async README.md for more info.