IndQuestResults 1.0.9
dotnet add package IndQuestResults --version 1.0.9
NuGet\Install-Package IndQuestResults -Version 1.0.9
<PackageReference Include="IndQuestResults" Version="1.0.9" />
<PackageVersion Include="IndQuestResults" Version="1.0.9" />
<PackageReference Include="IndQuestResults" />
paket add IndQuestResults --version 1.0.9
#r "nuget: IndQuestResults, 1.0.9"
#:package IndQuestResults@1.0.9
#addin nuget:?package=IndQuestResults&version=1.0.9
#tool nuget:?package=IndQuestResults&version=1.0.9
IndQuestResults - Enterprise-Grade Result<T> Library
A battle-tested, enterprise-grade Result<T> library for functional error handling in .NET applications. Provides type-safe, performant, and expressive ways to represent operation outcomes without exceptions.
Key Features
- Type safety: eliminate null-reference exceptions in control flow
- Performance: Span-based optimizations and reduced allocations
- Functional: Map, Bind, Match, Recover with fluent composition
- Thread-safe: immutable design, no shared mutable state
- JSON serializable: API responses and persistence ready (System.Text.Json)
- Warnings on success: diagnostics with quality metadata
- Quality: mutation-tested, high coverage
Quick Start
Installation
dotnet add package IndQuestResults
Basic Usage
using IndQuestResults;
// Success results
var ok = Result.Success();
var okWithValue = Result<string>.Success("Hello World");
// Failure results
var fail = Result.WithFailure("Operation failed");
var failWithValue = Result<int>.WithFailure("Parse error", value: 0);
// Multiple errors
var many = Result.WithFailure(new[] { "Error 1", "Error 2" });
// Warnings (successful with diagnostics)
var withWarnings = Result<string>.WithWarnings(
new[] { "Performance warning" },
"Operation completed"
);
// Warnings with quality metadata (confidence + missing data ratio)
var withWarnsAndMeta = Result<string>.WithWarnings(
warnings: new[] { "Heuristic fill for missing fields", "Low signal period" },
value: "Computed",
confidence: 0.82, // clamped to [0,1]
missingDataRatio: 0.25 // clamped to [0,1]
);
Console.WriteLine(withWarnsAndMeta.Confidence); // 0.82
Console.WriteLine(withWarnsAndMeta.MissingDataRatio); // 0.25
Console.WriteLine(string.Join(", ", withWarnsAndMeta.Warnings));
Functional Programming (Sync)
using IndQuestResults;
Result<UserDto> CreateUser(string userId)
{
return Result<string>.Success(userId)
.Ensure(id => !string.IsNullOrWhiteSpace(id), "empty id")
.Bind(id => LoadUser(id))
.Map(user => user.ToDto())
.Tap(dto => _logger.LogInformation($"User {dto.Id} processed"))
.Recover(() => Result<UserDto>.Success(UserDto.Default));
}
Async
Use the async API in IndQuestResults.Async.ResultAsync
for fluent async composition.
using IndQuestResults;
using IndQuestResults.Async;
var dto = await ResultAsync
.BindAsync(GetUserAsync(userId), user => ValidateUserAsync(user))
.MapAsync(valid => valid.ToDtoAsync())
.TapAsync(dto => CacheAsync(dto))
.RecoverAsync(() => GetDefaultUserDtoAsync());
// Collections
var users = await ResultAsync.TraverseParallelAsync(
userIds,
id => GetUserAsync(id),
maxDegreeOfParallelism: 4
);
Full API and patterns: docs/Result-Manual.md
More docs: docs/README.md
Note: Optional analyzers are available in IndQuestResults.Analyzers
to guide async usage. Rule IQR0001 suggests using ResultAsync
for async chaining and includes a one-click code fix.
Package Information
- Target Framework: .NET 10.0+
- Dependencies: none (zero external dependencies)
- Package ID: IndQuestResults
- License: MIT
- Coverage: 74.5% with comprehensive test suite
- Quality: 85%+ mutation testing score
Release Notes & Download
- Recommended:
Release/IndQuestResults.1.0.7.nupkg
- Previous:
Release/IndQuestResults.1.0.5.nupkg
,Release/IndQuestResults.1.0.4.nupkg
,Release/IndQuestResults.1.0.3.nupkg
,Release/IndQuestResults.1.0.2.nupkg
,Release/IndQuestResults.1.0.1.nupkg
- See CHANGELOG.md for details
Contributing
We welcome high-quality contributions! See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
- 100% unit test coverage for new code
- Mutation testing score ≥ 85%
- Zero compilation warnings (warnings as errors)
- XML documentation for public APIs
- Benchmarks for performance-sensitive changes
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support & Community
- Discussions: GitHub Discussions
- Issues: GitHub Issues
- Documentation: docs/Result-Manual.md
- Examples: Src/Code/samples/
Quality First: We maintain enterprise-grade standards because this library powers production applications. Every contribution makes the .NET ecosystem stronger!
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. net9.0 was computed. 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 was computed. 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 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. 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. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.9)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- System.Text.Json (>= 9.0.9)
- System.Threading.Channels (>= 9.0.9)
- System.Threading.Tasks.Extensions (>= 4.5.4)
-
net8.0
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.9)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- System.Text.Json (>= 9.0.9)
- System.Threading.Channels (>= 9.0.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.