| Crates.io | use-with |
| lib.rs | use-with |
| version | 0.2.0 |
| created_at | 2024-12-17 13:49:21.607031+00 |
| updated_at | 2024-12-17 14:04:18.180924+00 |
| description | Provides resource management utilities inspired by Kotlin's 'use' function and C#'s 'using' block, ensuring proper utilization and disposal of resources in Rust. |
| homepage | https://github.com/sunsided/use-with |
| repository | https://github.com/sunsided/use-with |
| max_upload_size | |
| id | 1486311 |
| size | 19,549 |
Provides resource management utilities, ensuring that resources are properly utilized
and subsequently dropped, similar to patterns found in other programming languages like Kotlin's use function
and C#'s using block.
This module offers two primary functions:
use_with: Executes a closure synchronously, consuming the resource.use_with_async: Executes an asynchronous closure, consuming the resource.These functions facilitate safe and efficient resource handling, ensuring that resources are properly utilized and dropped, even in asynchronous contexts.
Synchronous Resource Management: The use_with function allows for synchronous operations on resources,
ensuring that resources are properly utilized and dropped after the operation completes.
Asynchronous Resource Management: The use_with_async function facilitates asynchronous operations on resources,
ensuring that resources are properly utilized and dropped after the asynchronous operation completes.
To use these functions, the Use trait is auto-implemented for your resource types; simply call the appropriate method:
use use_with::Use;
struct Resource;
impl Resource {
fn new() -> Self {
Resource
}
}
#[test]
fn it_works() {
let resource = Resource::new();
let result = resource.use_with(|res| {
// Perform operations with `res`, return anything.
42
});
// The resource is now dropped.
assert_eq!(result, 42);
}