我刚在base64 crate中遇到了这段代码:
buffer.resize(decoded_len_estimate, 0);
let bytes_written;
{
let buffer_slice = &mut buffer.as_mut_slice()[starting_output_len..];
bytes_written = decode_helper(input_bytes, num_chunks, config, buffer_slice)?;
}
buffer.truncate(starting_output_len + bytes_written);
请参见 https://github.com/marshallpierce/rust-base64/blob/b63975f0a3d2e724c611bf6cd7213ae6bcb065a3/src/decode.rs#L165-L169。为什么要使用这种声明变量bytes_written的方式,然后再使用这个嵌套的块?这种写法解决了什么问题?为什么不直接使用这段代码?
buffer.resize(decoded_len_estimate, 0);
let buffer_slice = &mut buffer.as_mut_slice()[starting_output_len..];
let bytes_written = decode_helper(input_bytes, num_chunks, config, buffer_slice)?
buffer.truncate(starting_output_len + bytes_written);
有人可以帮我解决这个问题吗?
buffer_slice
泄漏到外部命名空间。 - Tim Roberts