Looking throw my code for cryptopals, I had to do these extra steps that aren't relevant to my problem (encrypting the plaintext with a key and cipher):
1) Create a mutable Vec<u8> vector from the plaintext.
2) Use that vector to create a mutable buffer of a type in the crypto library.
3) Create a second mutable Vec<u8> vector for the output.
4) Do step 2) for it also.
5) Call the encryption function with those two buffers as arguments. (This step's fine because calling an encryption function is unavoidable.)
6) Convert one of them back to Vec<u8> via `take_read_buffer().take_remaining().to_vec()`
(I'm ignoring the steps where you declare the key and cipher parameters since those are necessary)
And getting those to work required looking up the types of their library buffers.
But I don't care about the buffers where the library writes to when encrypting. I just want to be able to pass in a Vec<u8> and get a new one back out. At most, I should have to convert to and from the library's internal representation. Instead, I have to learn about and manage mutable variables and their ownership.