tokio-rs / tokio

A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
https://tokio.rs
MIT License
26.41k stars 2.43k forks source link

Recommend alternatives to SyncIoBridge #6795

Open Darksonn opened 3 weeks ago

Darksonn commented 3 weeks ago

Often when people try to use SyncIoBridge, there is a better alternative. We should improve the documentation to explain this and provide some alternatives. We should also provide an example of how to use it correctly with spawn_blocking.

As an example, if you wish to hash some data with blake3, then you should not do this:

let hasher = blake3::Hasher::new();
let reader = SyncIoBridge::new(reader);
std::io::copy(&mut reader, &mut hasher)?;
let hash = hasher.finalize();

instead you should do this:

let mut data = Vec::new();
reader.read_to_end(&mut data).await?;
let hash = blake3::hash(&data);

or this:

let mut data = vec![0; 64*1024];
loop {
    let len = reader.read(&mut data).await?;
    if len == 0 { break; }
    hasher.update(&data[..len]);
}
let hash = hasher.finalize();

Here are some ways we can improve the documentation:

Once we've added the examples to SyncIoBridge, we will probably copy them into a new topic page.

This is a good first issue. Contact me for mentoring. I'm also open to other examples than the ones I mentioned; they're just my ideas. It is perfectly okay to submit a PR that only partially resolves this issue, e.g. by adding just one example.

lixiang365 commented 3 weeks ago

I am a beginner in open source contributions and am very interested in Tokio. I think the issue is not particularly complex, mainly involving documentation improvements. Could you guide me through making my first contribution to an open source project? @Darksonn

Darksonn commented 3 weeks ago

Yes. Please contact me through our discord server. You can also reach out via my email address in my github profile if that doesn't work for you.

Nathy-bajo commented 2 weeks ago

Hello @lixiang365 @Darksonn. Is this still unattended? I want to drop a PR and fix this.

lixiang365 commented 1 week ago

I've written a few examples and will provide additional explanations. I'll submit it today.It might not be perfect.

Nathy-bajo commented 1 week ago

Hello @Darksonn I dropped a PR on this. https://github.com/tokio-rs/tokio/pull/6815 Please can you check on it? I want to know if there is anything else needed to add.

Darksonn commented 1 week ago

It looks like there are two PRs: #6813 and #6815. I'll have to look over both and decide on a way forward.