#language #hyperlane #format #day #time

recoverable-spawn

A thread that supports automatic recovery from panics, allowing threads to restart after a panic. Useful for resilient and fault-tolerant concurrency in network and web programming.

36 releases (stable)

Uses new Rust 2024

new 3.7.1 Apr 6, 2025
3.5.4 Mar 30, 2025
2.0.0 Jan 11, 2025
1.0.0 Jan 10, 2025
0.8.0 Jan 10, 2025

#2031 in Network programming

Download history 902/week @ 2025-01-06 802/week @ 2025-01-13 431/week @ 2025-01-20 17/week @ 2025-01-27 243/week @ 2025-02-03 229/week @ 2025-02-10 185/week @ 2025-02-17 322/week @ 2025-02-24 247/week @ 2025-03-03 498/week @ 2025-03-10 409/week @ 2025-03-17 541/week @ 2025-03-24 710/week @ 2025-03-31

2,215 downloads per month
Used in 6 crates (4 directly)

MIT license

24KB
272 lines

recoverable-spawn

Official Documentation

Api Docs

A thread that supports automatic recovery from panics, allowing threads to restart after a panic. Useful for resilient and fault-tolerant concurrency in network and web programming.

Installation

To use this crate, you can run cmd:

cargo add recoverable-spawn

Use

recoverable_spawn

use recoverable_spawn::*;
let msg: &str = "test";
let res: SyncSpawnResult = recoverable_spawn(move || {
    panic!("{}", msg);
});
let res: SyncSpawnResult = recoverable_spawn_with_error_handle(
    move || {
        panic!("{}", msg);
    },
    |err| {
        println!("handle error => {}", err);
    },
);

recoverable_spawn_with_error_handle

use recoverable_spawn::*;
let msg: &str = "test";
let res: SyncSpawnResult = recoverable_spawn_with_error_handle(
    move || {
        panic!("{}", msg);
    },
    |err| {
        println!("handle error => {}", err);
    },
);

async_recoverable_spawn

use recoverable_spawn::*;
let msg: &str = "test";
let res: AsyncSpawnResult = async_recoverable_spawn(move || async move {
    panic!("{}", msg);
});

async_recoverable_spawn_catch

use recoverable_spawn::*;
let msg: &str = "test";
let res: AsyncSpawnResult = async_recoverable_spawn_catch(
    move || async move {
        panic!("{}", msg);
    },
    move |err| async move {
        println!("handle error => {}", err);
    },
);

async_recoverable_spawn_catch_finally

use recoverable_spawn::*;
let msg: &str = "test";
let res: AsyncSpawnResult = async_recoverable_spawn_catch_finally(
    move || async move {
        panic!("{}", msg);
    },
    move |err| async move {
        println!("handle error => {}", err);
        panic!("{}", err);
    },
    move || async move {
        println!("finally");
    },
);

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Contact

For any inquiries, please reach out to the author at ltpp-universe root@ltpp.vip.

Dependencies

~2.4–8MB
~58K SLoC