Как преобразовать строку в вектор байтов в ржавчине?

Это может быть самым тупым вопросом Rustlang, но я обещаю, что я изо всех сил пытался найти ответ в документации или в любом другом месте в Интернете.

Я могу преобразовать строку в вектор байтов следующим образом:

let bar = bytes!("some string");

К сожалению, я не могу этого сделать

let foo = "some string";
let bar = bytes!(foo);

Потому что bytes! ожидает строковый литерал.

Но тогда, как я могу преобразовать foo в вектор байтов?

Ответ 1

(&str).as_bytes дает вам представление строки в виде &[u8] байтового фрагмента (который можно вызвать на String, так как от derefs до str, а там String.into_bytes будет потреблять String, чтобы дать вам Vec<u8>.

Используйте версию .as_bytes, если вам не требуется владение байтами.

fn main() {
    let string = "foo";
    println!("{:?}", string.as_bytes()); // prints [102, 111, 111]
}

BTW, соглашения об именах для функций преобразования полезны в таких ситуациях, поскольку они позволяют вам узнать, какое имя вы можете искать.