Skip to content

v0.42.0 (May 13th, 2022)

Pre-release
Pre-release
Compare
Choose a tag to compare
@jdisanti jdisanti released this 13 May 23:20
· 1815 commits to main since this release

Breaking Changes:

  • ⚠🎉 (aws-sdk-rust#494, aws-sdk-rust#519) The aws_smithy_http::byte_stream::bytestream_util::FsBuilder has been updated to allow for easier creation of
    multi-part requests.

    • FsBuilder::offset is a new method allowing users to specify an offset to start reading a file from.
    • FsBuilder::file_size has been reworked into FsBuilder::length and is now used to specify the amount of data to read.

    With these two methods, it's now simple to create a ByteStream that will read a single "chunk" of a file. The example
    below demonstrates how you could divide a single File into consecutive chunks to create multiple ByteStreams.

    let example_file_path = Path::new("/example.txt");
    let example_file_size = tokio::fs::metadata(&example_file_path).await.unwrap().len();
    let chunks = 6;
    let chunk_size = file_size / chunks;
    let mut byte_streams = Vec::new();
    
    for i in 0..chunks {
        let length = if i == chunks - 1 {
            // If we're on the last chunk, the length to read might be less than a whole chunk.
            // We substract the size of all previous chunks from the total file size to get the
            // size of the final chunk.
            file_size - (i * chunk_size)
        } else {
            chunk_size
        };
    
        let byte_stream = ByteStream::read_from()
            .path(&file_path)
            .offset(i * chunk_size)
            .length(length)
            .build()
            .await?;
    
        byte_streams.push(byte_stream);
    }
    
    for chunk in byte_streams {
        // Make requests to a service
    }

New this release:

Contributors
Thank you for your contributions! ❤