То, что вы можете просто ссылаться на Windows C файл API в Rust, не означает, что вы должны это делать. В частности, это отнимает у вас целую кучу мер безопасности, предоставляемых самим языком, и ошибок, допущенных вами.
В частности, ваш код в настоящее время имеет UB, передавая NULL
последним двум параметрам *Одновременно 1008 * является явным предупреждением:
lpNumberOfBytesRead
Указатель на переменную, которая получает число прочитанных байтов при использовании синхронного параметра hFile,ReadFile устанавливает это значение на ноль, прежде чем выполнять какую-либо работу или проверку ошибок. Используйте NULL для этого параметра, если это асинхронная операция, чтобы избежать потенциально ошибочных результатов.
Этот параметр может быть NULL, только если параметр lpOverlapped не равен NULL.
В вашем случае, идиоматический способ сделать это безопасно следующий:
let mut buffer_read = vec![0, 5];
let fhandle = std::fs::File::open("path/to/your/file")?;
fhandle.read_exact(&mut buffer_read)?;
println!("{}", String::from_utf8(buffer_read));