16 releases
0.3.2 | Sep 30, 2022 |
---|---|
0.3.1 | Jan 5, 2021 |
0.3.0 | Dec 26, 2020 |
0.2.1 | Oct 16, 2020 |
0.1.0 | Jul 31, 2019 |
#4 in #retry
17,029 downloads per month
Used in xain-fl
30KB
535 lines
stubborn-io
This crate provides io traits/structs that automatically recover from potential disconnections/interruptions.
To use with your project, add the following to your Cargo.toml:
stubborn-io = "0.3"
API Documentation, examples and motivations can be found here - https://docs.rs/stubborn-io .
Note: This crate requires at least version 1.39 of the Rust compiler.
Usage Example
In this example, we will see a drop in replacement for tokio's TcpStream, with the distinction that it will automatically attempt to reconnect in the face of connectivity failures.
use stubborn_io::StubbornTcpStream;
use tokio::io::AsyncWriteExt;
let addr = "localhost:8080";
async {
// we are connecting to the TcpStream using the default built in options.
// these can also be customized (for example, the amount of reconnect attempts,
// wait duration, etc) using the connect_with_options method.
let mut tcp_stream = StubbornTcpStream::connect(addr).await.unwrap();
// once we acquire the wrapped IO, in this case, a TcpStream, we can
// call all of the regular methods on it, as seen below
tcp_stream.write_all(b"hello world!").await.unwrap();
};
Dependencies
~3–12MB
~112K SLoC