Forge.Extensions.Optional
0.1.0-beta.2
dotnet add package Forge.Extensions.Optional --version 0.1.0-beta.2
NuGet\Install-Package Forge.Extensions.Optional -Version 0.1.0-beta.2
<PackageReference Include="Forge.Extensions.Optional" Version="0.1.0-beta.2" />
paket add Forge.Extensions.Optional --version 0.1.0-beta.2
#r "nuget: Forge.Extensions.Optional, 0.1.0-beta.2"
// Install Forge.Extensions.Optional as a Cake Addin #addin nuget:?package=Forge.Extensions.Optional&version=0.1.0-beta.2&prerelease // Install Forge.Extensions.Optional as a Cake Tool #tool nuget:?package=Forge.Extensions.Optional&version=0.1.0-beta.2&prerelease
ReForge.Optional
⚠️ This project is in the early stages of development and should be used with caution. It is currently slower, uses more memory and is less feature-rich than other libraries for implementing Discriminated Unions in C#. Please consider using OneOf for production use.
ReForge.Optional is a minimal discriminated union for C# that provides a simple and intuitive way to represent optional values. It is intended for use in projects that require a lightweight and easy-to-use library for working with optional values.
Alternatives
OneOf is a mature and widely used library for implementing Discriminated Unions in C#. This is the preferred choice for most projects.
Installation
To use ReForge.Optional in your project, add it as a reference.
Usage
Here are some examples of how to use the Optional<T>
class:
Creating an Optional
int value = 5;
var optional = Optional<int>.Of(value);
Creating an Optional with an Exception
var exception = new Exception("Test exception");
var optional = Optional<int>.OfException(exception);
Mapping an Optional
var optional = Optional<int>.Of(5);
Func<int, string> mapper = i => i.ToString();
var result = optional.Map(mapper);
Binding an Optional
var optional = Optional<int>.Of(5);
Func<int, Optional<string>> binder = i => Optional<string>.Of(i.ToString());
var result = optional.Bind(binder);
Using OrElse
var exception = new Exception("Test exception");
var optional = Optional<int>.OfException(exception);
var result = optional.OrElse(10);
Using OrElseThrow
var exception = new Exception("Test exception");
var optional = Optional<int>.OfException(exception);
Exception? actualException = Assert.Throws<Exception>(() => optional.OrElseThrow());
Using TryCreate
var exception = new Exception("Test exception");
Func<Optional<int>> func = () => throw exception;
var result = Optional<int>.TryCreate(func);
Contributing
Contributions are welcome. Please open an issue or submit a pull request.
License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.1.0-beta.2 | 81 | 3/26/2024 |
Initial beta release of Forge.Extensions.Optional.