Can we stop referring to the "what color is your function" post for languages it doesn't apply for? Contrary to Javascript (where it does apply), Rust with tokio has adapters for both async -> sync (Runtime::spawn_blocking) and sync -> async (Runtime::block_on). It probably isn't a good idea to overuse spawn_blocking but calling an async function from a sync one is literally no problem.
It's a rant opinion piece about the caveats of mixing async and sync functions, and divides code into 'red' (async) and 'blue' (sync) functions to explain the various problems associated with it.