{"id":16616870,"url":"https://github.com/sebastienrousseau/mini-functions","last_synced_at":"2025-07-22T20:34:09.908Z","repository":{"id":65144704,"uuid":"583595426","full_name":"sebastienrousseau/mini-functions","owner":"sebastienrousseau","description":"A a highly performant utility and wrapper functions library for Rust that has been carefully designed with optimization and efficiency in mind. 🦀","archived":false,"fork":false,"pushed_at":"2024-05-13T04:03:18.000Z","size":1392,"stargazers_count":14,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-25T16:05:04.716Z","etag":null,"topics":["date","errors","hash","hsh","jwt","jwt-token","library","log","logging","md5","password","qr","qr-code","qrc","qrcode","qrcode-generator","random","rust","rust-library"],"latest_commit_sha":null,"homepage":"http://minifunctions.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebastienrousseau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/funding.yml","license":"LICENSE-Apache","code_of_conduct":".github/CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"sebastienrousseau","custom":"https://paypal.me/wwdseb"}},"created_at":"2022-12-30T09:06:35.000Z","updated_at":"2024-11-02T17:38:02.000Z","dependencies_parsed_at":"2023-09-27T03:26:37.147Z","dependency_job_id":"7de50422-6e64-48a2-b65f-d5db71986ec7","html_url":"https://github.com/sebastienrousseau/mini-functions","commit_stats":{"total_commits":614,"total_committers":6,"mean_commits":"102.33333333333333","dds":"0.021172638436482094","last_synced_commit":"4b3a10692fbb621c02172dd468dfd56efb40eabf"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/sebastienrousseau/mini-functions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fmini-functions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fmini-functions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fmini-functions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fmini-functions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebastienrousseau","download_url":"https://codeload.github.com/sebastienrousseau/mini-functions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebastienrousseau%2Fmini-functions/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266567639,"owners_count":23949391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["date","errors","hash","hsh","jwt","jwt-token","library","log","logging","md5","password","qr","qr-code","qrc","qrcode","qrcode-generator","random","rust","rust-library"],"created_at":"2024-10-12T02:14:29.592Z","updated_at":"2025-07-22T20:34:09.879Z","avatar_url":"https://github.com/sebastienrousseau.png","language":"Rust","funding_links":["https://github.com/sponsors/sebastienrousseau","https://paypal.me/wwdseb"],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 MD041 --\u003e\n\n\u003cimg src=\"https://kura.pro/mini-functions/images/v2/logos/mini-functions.svg\"\nalt=\"Common (CMN) logo\" height=\"261\" width=\"261\" align=\"right\" /\u003e\n\n\u003c!-- markdownlint-enable MD033 MD041 --\u003e\n\n# Mini Functions\n\nA Rust library of highly performant utility and wrapper functions\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ccenter\u003e\n\n[![Mini Functions][title]][00]\n\n[![Made With Love][made-with-rust]][10]\n[![Crates.io][crates-badge]][07]\n[![Lib.rs][libs-badge]][09]\n[![Docs.rs][docs-badge]][08]\n[![License][license-badge]][02]\n[![Codecov][codecov-badge]][11]\n\n![divider][divider]\n\n• [Website][00] • [Documentation][08] • [Report Bug][03] • [Request Feature][03] • [Contributing Guidelines][04]\n\n\u003c/center\u003e\n\n\u003c!-- markdownlint-enable MD033 MD041 --\u003e\n## Overview\n\n`Mini Functions` is a highly performant utility and wrapper functions library for Rust that has been carefully designed with optimization and efficiency in mind. By providing convenient wrapper functions, our library aims to provide a high-level interface for common tasks while still leveraging the performance benefits of Rust under the hood. These utility functions serve as an essential toolkit for any Rust developer, and the library's design abstractions allow for easy integration into a variety of projects and applications.\n\nThese utility functions serve as an essential toolkit for any Rust developer, and the library's design abstractions allow for easy integration into a variety of projects and applications.\n\n## Table of Contents\n\n- [Mini Functions](#mini-functions)\n  - [Overview](#overview)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Functionality](#functionality)\n  - [Getting Started](#getting-started)\n    - [Requirements](#requirements)\n    - [Installation](#installation)\n  - [Usage](#usage)\n  - [Examples](#examples)\n    - [Example 1: Working with JWT Claims](#example-1-working-with-jwt-claims)\n    - [Example 2: Working with Mathematical Constants](#example-2-working-with-mathematical-constants)\n    - [Example 3: Working with Date and Time](#example-3-working-with-date-and-time)\n    - [Example 4: Error Handling](#example-4-error-handling)\n    - [Example 5: Password Hashing](#example-5-password-hashing)\n    - [Example 7: Logging](#example-7-logging)\n    - [Example 8: MD5 Hashing](#example-8-md5-hashing)\n    - [Example 9: QR Codes](#example-9-qr-codes)\n    - [Example 10: Random Number Generation](#example-10-random-number-generation)\n  - [Platform support](#platform-support)\n    - [Tier 1 platforms](#tier-1-platforms)\n    - [Tier 2 platforms](#tier-2-platforms)\n  - [Documentation](#documentation)\n  - [Semantic Versioning Policy](#semantic-versioning-policy)\n  - [License](#license)\n  - [Contribution](#contribution)\n  - [Acknowledgements](#acknowledgements)\n\n## Features\n\n- **Built with Rust** — A modern programming language that is well-suited for building high-performance, reliable, and secure systems.\n- **High-level Utility Functions** — A collection of high-level, abstracted functions for common tasks, such as string manipulation, file manipulation, and data parsing.\n- **Wrapper Functions for Easy Access** — Wrapper functions that provide a more convenient interface for accessing and using underlying Rust libraries or APIs.\n- **Optimization and Performance Tools** — Tools for optimizing and improving the performance of Rust code.\n- **Multi-platform Support** — Support for a variety of platforms, including desktop, mobile, and web.\n- **Comprehensive Documentation and Examples** — Documentation and examples to help developers understand and use the library effectively.\n- **Regular Maintenance and Updates** — Regular updates and maintenance to ensure the library stays up-to-date and reliable.\n\n## Functionality\n\n`Mini Functions` is a library of functions for Rust that provides a collection of tools for working with various aspects of a Rust application. The `mini-functions` library consists of the following `non-exhaustive` functions:\n\n| Functions | Description |\n| -------- | ----------- |\n| [Claims ⧉][12] | The **Claim functions** are used to retrieve and manipulate information about claims. These functions are used to create and manage claims in JSON Web Tokens (JWT) and JSON Web Signatures (JWS). |\n| [Common ⧉][13] | The **Common functions** are used to retrieve and manipulate information about common data types. |\n| [Date ⧉][14] | The **Date and time functions** are used to retrieve and manipulate information about dates and times. |\n| [Errors ⧉][15] | The **Error functions** are used to retrieve and manipulate information about errors. |\n| [Hash ⧉][16] | The **Hash functions** are used to retrieve and manipulate information about hashes. |\n| [Logs ⧉][17] | The **Log functions** are used to retrieve and manipulate information about logs. |\n| [JWT ⧉][18] | The **Jot functions** are used to retrieve and manipulate information about JSON Object Tokens (JOT). |\n| [MD5 ⧉][19] | The **MD5 functions** are used to retrieve and manipulate information about MD5. |\n| [QR ⧉][20] | The **QR functions** are used to retrieve and manipulate information about QR codes. |\n| [Random ⧉][21] | The **Random functions** are used to retrieve and manipulate information about random data. |\n\nSee [Documentation][08] for full API details.\n\n![divider][divider]\n\n## Getting Started\n\nIt takes just a few minutes to get up and running with `mini-functions`.\n\n### Requirements\n\nThe minimum supported Rust toolchain version is currently Rust **1.71.1** or later (stable).\n\n### Installation\n\nTo install `mini-functions`, you need to have the Rust toolchain installed on your machine. You can install the Rust toolchain by following the instructions on the [Rust website ⧉][10].\n\nOnce you have the Rust toolchain installed, you can install `mini-functions` using the following command:\n\n```shell\ncargo install mini-functions\n```\n\n![Divider][divider]\n\n## Usage\n\nTo use the `mini-functions` library in your project, add the following to your `Cargo.toml` file:\n\n```toml\n[dependencies]\nmini-functions = \"0.0.10\"\n```\n\nAdd the following to your `main.rs` file:\n\n```rust\nextern crate mini_functions;\nuse mini_functions::*;\n```\n\nthen you can use the functions in your application code.\n\n![divider][divider]\n\n## Examples\n\nThe `mini-functions` library comes with a set of examples that demonstrate how to use the library. You can find the examples in the `examples` directory.\n\nTo run the examples, use the following command:\n\n```shell\ncargo run --example \u003cexample-name\u003e\n```\n\n![divider][divider]\n\n### Example 1: Working with JWT Claims\n\nThe `mini_functions` crate provides a Claims struct for working with JWT claims.\n\nIt contains the following functions:\n\n- Setting Claims with `set_claim` to add claims.\n- Getting Claims with `get_claim` to retrieve a claim value.\n- Removing Claims with `remove_claim` to remove a claim.\n\nHere is a full example:\n\n```rust\nlet mut claims = Claims::new();\n\nclaims.set_claim(\"iss\", \"https://example.com\");\nclaims.set_claim(\"admin\", \"true\");\n\nlet admin = claims.get_claim(\"admin\").unwrap();\n\nclaims.remove_claim(\"admin\");\n```\n\nThis allows setting, retrieving, and removing JWT claims conveniently.\n\nTo run the JWT Claims example, use the following command:\n\n```shell\ncargo run --example example_claims\n```\n\n![divider][divider]\n\n### Example 2: Working with Mathematical Constants\n\nThe `mini_functions` crate provides access to common mathematical constants through the `Constants` struct and `cmn_constants` macro.\n\nIt contains the following functions:\n\n- **Constants::new()** - Create a new Constants instance\n- **constants()** - Get the full list of constants\n- **constant(name)** - Lookup a constant by name\n- **cmn_constants!** - Import constants into scope\n\nHere is a full example:\n\n```rust\nuse cmn::{constants::{Constant, ConstantValue}, cmn_constants};\n\nlet c = Constants::new();\nlet euler = c.constant(\"EULER\").unwrap();\n\ncmn_constants! {\n    PI = cmn::constants::PI,\n}\n\nprintln!(\"Euler's constant: {euler}\"); \nprintln!(\"Pi: {PI}\");\n```\n\nThis allows convenient access to mathematical constants.\n\nTo run the constants example:\n\n```shell\ncargo run --example example_constants\n```\n\n![divider][divider]\n\n### Example 3: Working with Date and Time\n\nThe `mini_functions` crate provides a `DateTime` struct for working with dates and times.\n\nIt contains the following functions:\n\n- `DateTime::now` - Get current date/time\n- `DateTime::new` - Create a DateTime with default (UTC) timezone\n- `DateTime::new_with_tz` - Create a DateTime with custom timezone\n- `is_valid_day` - Check if a day value is valid\n- `next_day`/`previous_day` - Get next/previous day\n- `from_str` - Parse a date/time string\n- `relative_delta` - Apply a delta to the DateTime\n\nHere is an example:\n\n```rust\nlet now = DateTime::now();\n\nlet tomorrow = now + chrono::Duration::days(1);\nlet yesterday = now - chrono::Duration::days(1);\n\nprintln!(\"Today: {now}\");\nprintln!(\"Tomorrow: {tomorrow}\"); \nprintln!(\"Yesterday: {yesterday}\");\n```\n\nThis allows convenient date/time handling.\n\nTo run the date/time example:\n\n```shell\ncargo run --example example_date\n```\n\n![divider][divider]\n\n### Example 4: Error Handling\n\nThe `mini_functions` crate provides error handling functionality through the `ErrorType` enum.\n\nIt contains the following functions:\n\n- `ErrorType::new` - Create new error type\n- `new_subtype` - Create error subtype\n\nHere is an example:\n\n```rust\nuse mini_functions::errors::common::ErrorType;\n\nlet error = ErrorType::new(\"illegal_argument\");\nlet sub_error = error.new_subtype(\"invalid_value\");\n\nprintln!(\"Main error: {error:?}\");\nprintln!(\"Sub-error: {sub_error:?}\");\n```\n\nThis allows simple error handling with custom types and subtypes.\n\nTo run the errors example:\n\n```rust\ncargo run --example example_errors\n```\n\n![divider][divider]\n\n### Example 5: Password Hashing\n\nThe `mini_functions` crate provides password hashing and verification functions through the `Hash` struct.\n\nIt contains the following functions:\n\n- `Hash::new_{algo}` - Generate a hash for a password\n- `set_password` - Update password for a hash\n- `verify` - Verify a password against a hash\n- `to_string` - Convert hash to a string\n\nHere is an example:\n\n```rust\nuse mini_functions::hash::Hash;\n\nlet hash = Hash::new_argon2i(\"mypassword\");\nlet is_valid = hash.verify(\"mypassword\");\n\nlet updated_hash = hash.set_password(\"newpassword\");\nlet new_is_valid = updated_hash.verify(\"newpassword\");\n```\n\nThis allows generating and verifying password hashes conveniently.\n\nTo run the password hashing example:\n\n```rust\ncargo run --example example_hash\n```\n\n![divider][divider]\n\n### Example 7: Logging\n\nThe `mini_functions` crate provides application logging functionality through the `Log` struct.\n\nIt contains functions like:\n\n- `Log::new` - Create a new log entry\n- `LogFormat` - Supported log formats\n\nHere is an example of logging events with different formats:\n\n```rust\nuse mini_functions::logs::{Log, LogFormat, LogLevel};\n\nlet log_json = Log::new(\n    \"message-id\", \n    \"2023-01-01T12:00:00Z\",\n    LogLevel::Info,\n    \"AppEvent\",\n    \"User logged in\",\n    LogFormat::JSON\n);\n\nlet log_clf = Log::new(\n    \"message-id\",\n    \"2023-01-01T12:00:00Z\",\n    LogLevel::Info,\n    \"AuthEvent\",\n    \"User login successful\",\n    LogFormat::CLF\n);\n```\n\nThis allows flexible logging in various text and JSON formats.\n\nTo run the logging example:\n\n```rust\ncargo run --example example_logs\n```\n\n![divider][divider]\n\n### Example 8: MD5 Hashing  \n\nThe `mini_functions` crate provides MD5 hash generation functionality through the `MD5` struct.\n\nIt contains functions like:  \n\n- `MD5::hexdigest` - Generate MD5 hash for input\n- `MD5::new` - Create MD5 hasher instance  \n- `update` - Update hasher with new input\n- `finalize` - Obtain final hash  \n\nHere is an example of hashing different input sources:\n\n```rust\nuse mini_functions::md5::MD5;\n\nlet digest = MD5::hexdigest(\"input string\");\n\nlet mut hasher = MD5::new();\nhasher.update(\u0026[1, 2, 3]);\nlet hash = hasher.finalize();\n```\n\nThis allows flexible hashing of strings, byte arrays, files.\n\nTo run the MD5 example:\n\n```rust\ncargo run --example example_md5\n```\n\n![divider][divider]\n\n### Example 9: QR Codes\n\nThe `mini_functions` crate provides QR code generation and manipulation functionality through the `QRCode` struct.\n\nIt contains functions like:\n\n- `QRCode::from_string` - Generate QR code from text\n- `to_png` - Convert to PNG image\n- `colorize` - Colorize the QR code\n- `resize` - Resize image\n\nAnd macros like:\n\n- `qr_code_to!` - QR code generation macro\n\nHere is an example:\n\n```rust\nuse mini_functions::qr;\n\nlet qr_code = qr::QRCode::from_string(\"https://example.com\");\nlet img = qr_code.to_png(512);\n\nqr::save_png(\u0026img, \"qr.png\");\n```\n\nThis allows convenient QR code creation, manipulation and saving.\n\nTo run the QR code example:\n\n```rust\ncargo run --example example_qr\n```\n\n![divider][divider]\n\n### Example 10: Random Number Generation\n\nThe `mini_functions` crate provides random number generation functionality through the `Random` struct and associated functions.\n\nIt contains functions like:\n\n- `Random::new` - Create random number generator\n- `bool` - Random boolean\n- `int` - Random integer\n- `float` - Random float\n- `bytes` - Random byte vector\n\nAnd macros like:\n\n- `rand_int!` - Random integer in range\n- `rand_bool!` - Random boolean with probability\n\nHere is an example:\n\n```rust\nuse mini_functions::random::{Random, rand_int};\n\nlet mut rng = Random::new();\n\nlet rand_num = rand_int!(rng, 0, 10);\nlet rand_bool = rand_bool!(rng, 0.5);\n```\n\nThis allows convenient random number generation.\n\nTo run the random example:\n\n```rust\ncargo run --example example_random\n```\n\n![divider][divider]\n\n## Platform support\n\n`mini-functions` is supported and tested on the following platforms:\n\n### Tier 1 platforms\n\n| | Operating System | Target | Description |\n| --- | --- | --- | --- |\n| ✅ | Linux   | aarch64-unknown-linux-gnu | 64-bit Linux systems on ARM architecture |\n| ✅ | Windows | i686-pc-windows-gnu | 32-bit Windows systems using the GNU toolchain |\n| ✅ | Windows | i686-pc-windows-msvc | 32-bit Windows systems using the Microsoft Visual C toolchain |\n| ✅ | Linux   | i686-unknown-linux-gnu | 32-bit Linux systems (kernel 3.2+, glibc 2.17+) |\n| ✅ | macOS   | x86_64-apple-darwin | 64-bit macOS systems (10.7 Lion or later) |\n| ✅ | Windows | x86_64-pc-windows-gnu | 64-bit Windows systems using the GNU toolchain |\n| ✅ | Windows | x86_64-pc-windows-msvc | 64-bit Windows systems using the Microsoft Visual C toolchain |\n| ✅ | Linux   | x86_64-unknown-linux-gnu | 64-bit Linux systems (kernel 2.6.32+, glibc 2.11+) |\n\n### Tier 2 platforms\n\n| | Operating System | Target | Description |\n| --- | --- | --- | --- |\n| ✅ | Linux   | aarch64-apple-darwin | 64-bit macOS on Apple Silicon |\n| ✅ | Windows | aarch64-pc-windows-msvc | 64-bit Windows on ARM architecture using the Microsoft Visual C toolchain |\n| ✅ | Linux   | aarch64-unknown-linux-musl | 64-bit Linux on ARM architecture with musl libc |\n| ✅ | Linux   | arm-unknown-linux-gnueabi | ARMv6 Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | arm-unknown-linux-gnueabihf | ARMv7 Linux systems, hardfloat (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | armv7-unknown-linux-gnueabihf | ARMv7 Linux systems, hardfloat (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | powerpc-unknown-linux-gnu | PowerPC Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | powerpc64-unknown-linux-gnu | PowerPC64 Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | powerpc64le-unknown-linux-gnu | PowerPC64le Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | riscv64gc-unknown-linux-gnu | RISC-V Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | s390x-unknown-linux-gnu | s390x Linux systems (kernel 3.2, glibc 2.17) |\n| ✅ | Linux   | x86_64-unknown-freebsd | 64-bit FreeBSD systems on x86-64 architecture |\n| ✅ | Linux   | x86_64-unknown-linux-musl | 64-bit Linux systems (kernel 2.6.32+, musl libc) |\n\nThe [GitHub Actions ⧉][22] shows the platforms in which the `mini-functions` library tests are run.\n\n![divider][divider]\n\n## Documentation\n\n**Info:** Please check out our [website ⧉][00] for more information. You can find our documentation on [docs.rs ⧉][08], [lib.rs ⧉][09] and [crates.io ⧉][07].\n\n## Semantic Versioning Policy\n\nFor transparency into our release cycle and in striving to maintain backward compatibility, `mini-functions` follows [semantic versioning ⧉][06].\n\n![divider][divider]\n\n## License\n\nThe project is licensed under the terms of Apache License, Version 2.0 and the MIT license.\n\n![divider][divider]\n\n## Contribution\n\nWe welcome all people who want to contribute. Please see the [contributing instructions ⧉][04] for more information.\n\nContributions in any form (issues, pull requests, etc.) to this project must adhere to the [Rust's Code of Conduct ⧉][23].\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n\n![divider][divider]\n\n## Acknowledgements\n\nA big thank you to all the awesome contributors of [mini-functions ⧉][05] for their help and support.\n\nA special thank you goes to the [Rust Reddit ⧉][24] community for providing a lot of useful suggestions on how to improve this project.\n\n[00]: https://minifunctions.com \"Mini Functions - Highly performant utility and wrapper functions library for Rust\"\n[02]: http://opensource.org/licenses/MIT \"MIT license\"\n[03]: https://github.com/sebastienrousseau/mini-functions/issues \"Mini Functions Issues\"\n[04]: https://raw.githubusercontent.com/sebastienrousseau/mini-functions/main/.github/CONTRIBUTING.md \"Mini Functions Contributing Guidelines\"\n[05]: https://github.com/sebastienrousseau/mini-functions/graphs/contributors \"Mini Functions Contributors\"\n[06]: http://semver.org/ \"Semantic Versioning 2.0.0\"\n[07]: https://crates.io/crates/mini-functions \"Mini Functions on Crates.io\"\n[08]: https://docs.rs/mini-functions \"Mini Functions on Docs.rs\"\n[09]: https://lib.rs/crates/mini-functions \"Mini Functions on Lib.rs\"\n[10]: https://www.rust-lang.org/ \"The Rust Programming Language\"\n[11]: https://codecov.io/github/sebastienrousseau/mini-functions \"Mini Functions Codecov\"\n[12]: https://docs.rs/mini-functions/0.0.10/mini_functions/claims/index.html \"Mini Functions Claims\"\n[13]: https://docs.rs/mini-functions/0.0.10/mini_functions/common/index.html \"Mini Functions Common\"\n[14]: https://docs.rs/mini-functions/0.0.10/mini_functions/date/index.html \"Mini Functions Date\"\n[15]: https://docs.rs/mini-functions/0.0.10/mini_functions/errors/index.html \"Mini Functions Errors\"\n[16]: https://docs.rs/mini-functions/0.0.10/mini_functions/hash/index.html \"Mini Functions Hash\"\n[17]: https://docs.rs/mini-functions/0.0.10/mini_functions/logs/index.html \"Mini Functions Logs\"\n[18]: https://docs.rs/mini-functions/0.0.10/mini_functions/jwt/index.html \"Mini Functions JWT\"\n[19]: https://docs.rs/mini-functions/0.0.10/mini_functions/md5/index.html \"Mini Functions MD5\"\n[20]: https://docs.rs/mini-functions/0.0.10/mini_functions/qr/index.html \"Mini Functions QR\"\n[21]: https://docs.rs/mini-functions/0.0.10/mini_functions/random/index.html \"Mini Functions Random\"\n[22]: https://github.com/sebastienrousseau/mini-functions/actions \"Mini Functions on GitHub Actions\"\n[23]: https://www.rust-lang.org/policies/code-of-conduct \"Rust Code of Conduct\"\n[24]: https://www.reddit.com/r/rust/ \"Reddit\"\n\n[codecov-badge]: https://img.shields.io/codecov/c/github/sebastienrousseau/mini-functions?style=for-the-badge\u0026token=M1REIC3QCK 'Codecov'\n[crates-badge]: https://img.shields.io/crates/v/mini-functions.svg?style=for-the-badge 'Crates.io'\n[divider]: https://kura.pro/common/images/elements/divider.svg \"divider\"\n[docs-badge]: https://img.shields.io/docsrs/mini-functions.svg?style=for-the-badge 'Docs.rs'\n[libs-badge]: https://img.shields.io/badge/lib.rs-v0.0.10-orange.svg?style=for-the-badge 'Lib.rs'\n[license-badge]: https://img.shields.io/crates/l/mini-functions.svg?style=for-the-badge 'License'\n[made-with-rust]: https://img.shields.io/badge/rust-f04041?style=for-the-badge\u0026labelColor=c0282d\u0026logo=rust 'Made With Rust'\n[title]: https://kura.pro/mini-functions/images/v2/titles/title-mini-functions.svg \"Mini Functions Logo\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastienrousseau%2Fmini-functions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebastienrousseau%2Fmini-functions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebastienrousseau%2Fmini-functions/lists"}