IndQuestResults 1.3.0
dotnet add package IndQuestResults --version 1.3.0
NuGet\Install-Package IndQuestResults -Version 1.3.0
<PackageReference Include="IndQuestResults" Version="1.3.0" />
<PackageVersion Include="IndQuestResults" Version="1.3.0" />
<PackageReference Include="IndQuestResults" />
paket add IndQuestResults --version 1.3.0
#r "nuget: IndQuestResults, 1.3.0"
#:package IndQuestResults@1.3.0
#addin nuget:?package=IndQuestResults&version=1.3.0
#tool nuget:?package=IndQuestResults&version=1.3.0
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 | 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. |
-
net10.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on IndQuestResults:
| Package | Downloads |
|---|---|
|
IndFusion.Ember
🔥 IndFusion.Ember - The fusion point where real-time messages ignite and spread across any transport. Transport-agnostic real-time communication abstraction following Clean Architecture principles. Like a glowing ember spreading through systems: messages ignite (movement), propagate (tracking), and illuminate (display). Currently implemented with SignalR, but designed for universal transport fusion: WebSockets, gRPC, TCP, Azure Service Bus, AWS EventBridge, OPC-UA, and more. Perfect for dashboards, health monitoring, and real-time UI updates - universal infrastructure for all applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.