Я пишу небольшую программу клиент/сервер для зашифрованной сетевой связи и имею следующую структуру, чтобы позволить конечным точкам согласовывать возможности.Как перебрать элементы структуры в Rust?
struct KeyExchangePacket {
kexinit: u8,
replay_cookie: [u8; 32],
kex_algorithms: String,
kgen_algorithms: String,
encryption_algorithms: String,
mac_algorithms: String,
compression_algorithms: String,
supported_languages: String,
}
Мне нужно преобразовать поля в байтах для того, чтобы отправить их по TcpStream
, но я в настоящее время, чтобы преобразовать их один на один раз.
send_buffer.extend_from_slice(kex_algorithms.as_bytes());
send_buffer.extend_from_slice(kgen_algorithms.as_bytes());
etc...
Есть ли способ перебрать по полям и нажать их байтовые значения в буфер для отправки?
Довольно уверен, что serde может быть полезен здесь, если плагин компилятора/ночной приемлем. – mcarton
@mcarton вы знаете о серде-адаптере для общих байтов? Или вы думаете, что OP должен был бы написать такой адаптер? – Shepmaster
Что вы имеете в виду? Сама serde может сериализоваться с/на 'Vec'. –
mcarton