TedToolkit.Results.Composition
2026.8.4
dotnet add package TedToolkit.Results.Composition --version 2026.8.4
NuGet\Install-Package TedToolkit.Results.Composition -Version 2026.8.4
<PackageReference Include="TedToolkit.Results.Composition" Version="2026.8.4" />
<PackageVersion Include="TedToolkit.Results.Composition" Version="2026.8.4" />
<PackageReference Include="TedToolkit.Results.Composition" />
paket add TedToolkit.Results.Composition --version 2026.8.4
#r "nuget: TedToolkit.Results.Composition, 2026.8.4"
#:package TedToolkit.Results.Composition@2026.8.4
#addin nuget:?package=TedToolkit.Results.Composition&version=2026.8.4
#tool nuget:?package=TedToolkit.Results.Composition&version=2026.8.4
TedToolkit.Results.Composition
TedToolkit.Results.Composition adds optional branch-consumption and synchronous, Task, and
collection composition extensions to the dependency-light TedToolkit.Results contract package.
Install
dotnet add package TedToolkit.Results.Composition
The extensions use the core TedToolkit.Results namespace, so the same import enables branch-safe
consumption, deconstruction, and fluent pipelines:
using TedToolkit.Results;
var result = Result.Succeed<string, SaveFailure>("document.json");
var message = result.Match(
value => $"Saved {value}",
failure => $"Failed: {failure}");
var branch = result switch
{
(true, var value, _) => value,
(false, _, var failure) => failure.ToString(),
};
var path = result
.Ensure(value => value.Length > 0, SaveFailure.InvalidDocument)
.Map(value => value.ToUpperInvariant())
.Recover(_ => "fallback.json");
enum SaveFailure
{
InvalidDocument,
}
The inactive deconstructed payload is default; always use the Boolean discriminator.
Task composition uses the same fluent surface:
using TedToolkit.Results;
Result<Document, SaveFailure> loaded = await LoadAsync().ConfigureAwait(false);
Result<string, SaveFailure> path = await loaded
.MapAsync((document, cancellationToken) => SaveAsync(document, cancellationToken))
.ConfigureAwait(false);
Collection composition is ordered and fail-fast:
Result<IReadOnlyList<Document>, SaveFailure> documents = results.Sequence();
Sequence, Traverse, and Combine stop at the first failure. Task callbacks run only for the
active branch, receive the supplied cancellation token, and propagate exceptions and cancellation.
Migration From Core Instance Methods
Installing this package preserves ordinary fluent calls such as result.Map(value => value.Length).
C# does not support partially explicit generic arguments on extension methods. A call such as
result.Map<int>(null!) must instead provide a typed delegate, for example:
result.Map((Func<string, int>)null!);
Removing the former core instance members is also a binary breaking change; existing consumers must reference Composition and recompile.
Target Frameworks
net6.0net7.0net8.0net9.0net10.0net472net48netstandard2.0netstandard2.1
License
Licensed under LGPL-3.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- TedToolkit.Results (>= 2026.8.4)
-
.NETFramework 4.8
- TedToolkit.Results (>= 2026.8.4)
-
.NETStandard 2.0
- TedToolkit.Results (>= 2026.8.4)
-
.NETStandard 2.1
- TedToolkit.Results (>= 2026.8.4)
-
net10.0
- TedToolkit.Results (>= 2026.8.4)
-
net6.0
- TedToolkit.Results (>= 2026.8.4)
-
net7.0
- TedToolkit.Results (>= 2026.8.4)
-
net8.0
- TedToolkit.Results (>= 2026.8.4)
-
net9.0
- TedToolkit.Results (>= 2026.8.4)
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 |
|---|---|---|
| 2026.8.4 | 99 | 8/4/2026 |