DropBear.Codex.Core 2024.5.6

dotnet add package DropBear.Codex.Core --version 2024.5.6
NuGet\Install-Package DropBear.Codex.Core -Version 2024.5.6
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="DropBear.Codex.Core" Version="2024.5.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DropBear.Codex.Core --version 2024.5.6
#r "nuget: DropBear.Codex.Core, 2024.5.6"
#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.
// Install DropBear.Codex.Core as a Cake Addin
#addin nuget:?package=DropBear.Codex.Core&version=2024.5.6

// Install DropBear.Codex.Core as a Cake Tool
#tool nuget:?package=DropBear.Codex.Core&version=2024.5.6

Result Class Library

This library provides a set of tools for managing operation results in a robust and railway-oriented programming fashion. It offers various result types to encapsulate the outcomes of operations, handling both successes and failures gracefully without throwing exceptions. This approach enhances error handling, makes your codebase cleaner, and improves the maintainability of your applications.

Features

  • Generic Result Types: Handle different data types and operations flexibly.
  • Railway-Oriented Programming: Built-in methods for chaining operations based on success or failure outcomes.
  • Error Handling: Advanced error handling capabilities without relying on exceptions.
  • Asynchronous Support: Asynchronous methods to handle I/O-bound and CPU-intensive operations efficiently.

Installation

To install the Result Class Library, use the following NuGet command:

dotnet add package DropBear.Codex.Core

Usage Examples

Below are some examples of how to use the various result types provided by the library:

Using Result

var result = Result.Success();
if (result.IsSuccess)
{
    Console.WriteLine("Operation succeeded.");
}

var failureResult = Result.Failure("Error occurred.");
failureResult.OnFailure(error => Console.WriteLine(error));

Using Result<T>

var result = Result.Success(123);
var nextResult = result.Bind(value => Result.Success(value.ToString()));
nextResult.OnSuccess(value => Console.WriteLine($"Processed value: {value}"));

Using Result<TSuccess, TFailure>

var result = Result.Success<int, string>(42);
result.Match(
    success => Console.WriteLine($"Success with value: {success}"),
    failure => Console.WriteLine($"Failed with error: {failure}")
);

Using Result<TSuccess, TFailure> with Additional Handlers

var result = Result.Success<int, string>(42);
result.Match(
    success => Console.WriteLine($"Success with value: {success}"),
    failure => Console.WriteLine($"Failed with error: {failure}"),
    onPending: () => Console.WriteLine("Operation is pending."),
    onCancelled: () => Console.WriteLine("Operation was cancelled."),
    onWarning: () => Console.WriteLine("Operation completed with warnings."),
    onPartialSuccess: () => Console.WriteLine("Operation partially succeeded."),
    onNoOp: () => Console.WriteLine("No operation was performed.")
);

Using ResultWithPayload<T>

var data = new { Name = "Example", Value = 42 };
var result = Result.SuccessWithPayload(data);
var deserialized = result.DecompressAndDeserialize();
if (deserialized.IsSuccess)
{
    Console.WriteLine($"Data: {deserialized.Value.Name}");
}

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GNU LGPL v3. See LICENSE for more information.

Contact

Terrence Kuchel (DropBear) - Contact me via GitHub. Project Link: GitHub

Acknowledgements

  • Thanks to all contributors who participate in this project.
  • Special thanks to those who contribute to railway-oriented programming ideas and patterns.

Development Status

Note: This library is relatively new and under active development. While it is being developed with robustness and best practices in mind, it may still be evolving.

We encourage you to test thoroughly and contribute if possible before using this library in a production environment. The API and features may change as feedback is received and improvements are made. We appreciate your understanding and contributions to making this library better!

Please use the following link to report any issues or to contribute: GitHub Issues.

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

    • No dependencies.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on DropBear.Codex.Core:

Package Downloads
DropBear.Codex.Utilities

DropBear Codex Utilities.

DropBear.Codex.StateManagement

The `StateSnapshotManager` library provides a comprehensive solution for managing state snapshots in .NET applications. It supports automatic snapshotting, state reversion, and notifications upon state changes, making it ideal for applications that require historical state management or undo capabilities.

DropBear.Codex.Serialization

This project provides advanced serialization and deserialization capabilities, supporting formats like JSON, MessagePack, and MemoryPack. It includes performance optimizations, error handling, and supports compression and encoding options.

DropBear.Codex.Files

DropBear.Codex.Files is a versatile .NET library designed for efficient file management, offering seamless integration with advanced features such as delta updates for optimized storage and bandwidth usage. Tailored for applications requiring robust file operations, it provides a foundation for both local and cloud storage scenarios, ensuring high performance and scalability. (Advanced features available when paired with DropBear.Codex.DeltaBlobStorage package.)

DropBear.Codex.Hashing

This library provides a flexible and extensible hashing framework, designed for easy integration and usage within .NET applications. It supports a variety of hashing algorithms and offers a fluent API for hasher configurations.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2024.5.6 182 5/4/2024
2024.5.5 78 5/4/2024
2024.5.4 103 5/4/2024
2024.5.3 43 5/3/2024
2024.5.2 46 5/3/2024
2024.5.1 48 5/3/2024
2024.4.8 238 4/30/2024
2024.4.5 430 4/17/2024
2024.4.4 83 4/16/2024
2024.4.3 82 4/16/2024
2024.4.1 125 4/13/2024
2024.3.13 271 3/28/2024
2024.3.12 140 3/21/2024
2024.3.11 141 3/16/2024
2024.3.10 89 3/16/2024
2024.3.9 88 3/15/2024
2024.3.6 94 3/15/2024
2024.3.5 93 3/13/2024
2024.3.4 107 3/11/2024
2024.3.1 100 3/2/2024
2024.2.34 109 2/26/2024
2024.2.31 91 2/26/2024
2024.2.30 125 2/22/2024
2024.2.25 112 2/21/2024