cshuaimin · GitHub

What problem does this PR solve?

  • Brief description of the problem:

To implement the Raft protocol we need to perform many asynchronous operations, such as spawning background tasks, selecting from some futures, and timeouts.

However, currently labrpc crate uses futures-rs 0.1, which causes learners to also use hard-to-use combinators from futures-rs 0.1.

This PR updates it's version to 0.3, so we can use async/await feature and focus on Raft itself.

What is changed and how it works?

  • In dss/labrpc, most of the code was migrated to futures 0.3.

  • Server::dispatch() and Client::call() returns BoxFuture instead of being a regular async function, due to limitation of rust issue #63303.

Check List

Tests

  • Unit test

Read the original on github.com ↗