An open API service indexing awesome lists of open source software.

https://github.com/zeidlab/toolbox

A versatile and robust utility library designed to simplify common programming tasks, enhance error handling, and promote functional programming paradigms in C#. It provides a collection of tools and extensions that streamline operations such as null checks, error handling, and railway-oriented programming (ROP) sometimes known as "Result Pattern".
https://github.com/zeidlab/toolbox

error-handling exception-handling maybe-monad null-checking null-safety optional-parameters railway-oriented-programming result-object result-pattern

Last synced: 23 days ago
JSON representation

A versatile and robust utility library designed to simplify common programming tasks, enhance error handling, and promote functional programming paradigms in C#. It provides a collection of tools and extensions that streamline operations such as null checks, error handling, and railway-oriented programming (ROP) sometimes known as "Result Pattern".

Awesome Lists containing this project

README

          

## 🤔 What is `ZeidLab.ToolBox` Library?

**ZeidLab.ToolBox** is a versatile and robust utility library designed to simplify common programming tasks, enhance
error handling, and promote functional programming paradigms in C#. It provides a collection of tools and extensions
that streamline operations such as null checks, error handling, task management, and railway-oriented programming (ROP)
sometimes known as "Result Pattern".

### 🎁 Features

* **Unit Type:** A type representing the absence of a meaningful value, useful in functional programming.
* **Maybe Type:** A monadic type for handling optional values, similar to Option in functional languages.
* **Result Type:** A robust error-handling type for railway-oriented programming, allowing chaining of operations with
explicit success and failure states.
* **Error Handling:** Structured error handling with ResultError,supporting error codes, messages, and exceptions.
* **Asynchronous Support:** Comprehensive support for asynchronous operations with Result types.

Inspired by [LanguageExt](https://github.com/louthy/language-ext), this library offers a more compact and user-friendly
alternative with extensive examples and tutorials.

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## 📦 Installation

To use **ZeidLab.ToolBox** in your project, you can install it via NuGet:

```bash
dotnet add package ZeidLab.ToolBox
```
for more information please visit [ToolBox Package On NuGet](https://www.nuget.org/packages/ZeidLab.ToolBox).

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## 📝 ChangeLogs

By each release we add new features and bug fixes. You can find the full change
log [here](https://github.com/ZeidLab/ToolBox/releases).

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## 📖 Need Help? Read the Wiki and watch the Tutorials

There is a very detailed [Wiki](https://github.com/ZeidLab/ToolBox/wiki) for this library full of descriptions and
examples. also there is
a [YouTube channel with a dedicated video tutorials playlist](https://youtube.com/@zeidlabco?si=xAsUEwBoDNrJdmdK) for
this library.

The main topics of this library are:

| Types and PageLink | Short Description |
|---------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
| [`Maybe`](https://github.com/ZeidLab/ToolBox/wiki/Maybe-Type) | A monadic type for handling optional values, similar to Option in functional languages. |
| [`Result`](https://github.com/ZeidLab/ToolBox/wiki/Result-Type) | A robust error-handling type for railway-oriented programming, allowing chaining of operations with explicit success and failure states. |
| [`Unit`](https://github.com/ZeidLab/ToolBox/wiki/Unit-Type) | A type representing the absence of a meaningful value, useful in functional programming. |
| [`ResultError`](https://github.com/ZeidLab/ToolBox/wiki/ResultError-Type) | Structured error handling with supporting error codes, messages, and exceptions. |
| [`Try`](https://github.com/ZeidLab/ToolBox/wiki/Try-And-TryAsync-Type) | A delegate to handel the unhandled exceptions in an efficient and expressive way in a synchronous flow of functions. |
| [`TryAsync`](https://github.com/ZeidLab/ToolBox/wiki/Try-And-TryAsync-Type) | A delegate to handel the unhandled exceptions in an efficient and expressive way in a synchronous flow of functions. |
| [Extension Methods](https://github.com/ZeidLab/ToolBox/wiki/Result-Extension-Methods) | Methods to interact with `Result` types |

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## ⭐️ Star and Follow

Star this repository and follow me on GitHub to stay informed about new releases and updates. Your support fuels this
project's growth!

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## 💡 Love My Work? Support the Journey!

If my content adds value to your projects, consider supporting me via crypto.

- **Bitcoin:** bc1qlfljm9mysdtu064z5cf4yq4ddxgdfztgvghw3w
- **USDT(TRC20):** TJFME9tAnwdnhmqGHDDG5yCs617kyQDV39

Thank you for being part of this community—let’s build smarter, together

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## 🤝 Contributions are welcome!

Please feel free to submit issues, feature requests, or pull requests.

1. [X] Fork the repository.
2. [X] Create a new branch for your feature or bugfix.
3. [X] Commit your changes.
4. [X] Push your branch and submit a pull request.

[^ Back To Top](#-what-is-zeidlabtoolbox-library)

## License

This project is licensed under the MIT License. See the [LICENSE](./LICENSE.txt) file for details.

[^ Back To Top](#-what-is-zeidlabtoolbox-library)