diff --git a/README.md b/README.md index ed3ad9f..6d86641 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,50 @@ # MaybeError - A simple library to allow "error as values" functionallity in C# + A simple library to allow "error as values" functionallity in C# inspired by the Result enum from rust. + + + # Usage + + All you need to do is wrap you return in `Maybe` or `ValueMaybe` and you can leave most of your code unchanced. Return your normal types as is. When you have an error you can either return a caught exception or create a return a new error like below. + + ```csharp + + public Maybe SomeFunction(bool isGood) + { + if (isGood) + return "All good"; + return new Error("This is not good"); + } + + ``` + + Once you have a `Maybe` you can inspect it's contents in several ways. + + ```csharp + +var result = SomeFunction(true); + + +// Get the value with an optional default value if there is an error +var message = result.ValueOrDefault("Not good, but it's ok"); + + +//The value is implicitly where possible, but will throw the error as an exception if there was one +string messageCast = result; + +// You can also check if there was and error manually +if (result.HasError) +{ + // do something +} + +// Or for a value if you prefer +if (result.HasValue) +{ + // do something +} + +// You can access the error like this +if (result.HasError) + Console.WriteLine(result.Error); + + ```