IndQuestResults 1.3.0

dotnet add package IndQuestResults --version 1.3.0
                    
NuGet\Install-Package IndQuestResults -Version 1.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IndQuestResults" Version="1.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="IndQuestResults" Version="1.3.0" />
                    
Directory.Packages.props
<PackageReference Include="IndQuestResults" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add IndQuestResults --version 1.3.0
                    
#r "nuget: IndQuestResults, 1.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package IndQuestResults@1.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=IndQuestResults&version=1.3.0
                    
Install as a Cake Addin
#tool nuget:?package=IndQuestResults&version=1.3.0
                    
Install as a Cake Tool

IndQuestResults - Enterprise-Grade Result<T> Library

Build Status Mutation Score Coverage License .NET Version NuGet Contributors Code of Conduct Docs

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
1.3.0 512 12/1/2025
1.2.0 172 11/22/2025
1.1.0 158 11/7/2025
1.0.9 220 9/30/2025
1.0.8 200 9/28/2025
1.0.6 252 9/19/2025
1.0.5 258 9/19/2025
1.0.4 274 9/19/2025
1.0.3 314 9/19/2025
1.0.2 318 9/19/2025
1.0.1 328 9/18/2025
1.0.0 326 9/17/2025