Tokio AsyncRead / AsyncWrite for S3/GCP?

I would like to create an abstraction that, given an URL (like file:///mnt/asdf or s3://my_super_bucket/asdf) would allow me to write to or read from that object (identified by the URL).

My questions are:

  • Are there ready crates that give me AsyncRead / AsyncWrite for S3/GCP?
  • Is there an easy way to achieve this (maybe there are some "magical wrappers" for existing S3/GCP clients)?