将字节顺序与向量一起使用时需要类型注释
Type annotation needed when use byteorder with vector
我需要构建一个数据包发送到服务器。我为此使用 byteorder
板条箱。我的字段之一包含 usize
数据,因此我使用类型转换将其转换为 i16:
use byteorder::WriteBytesExt;
fn main () {
let login = "test";
let packet_length = 30 + (login.len() as i16);
let mut packet = Vec::new();
packet.write_u8(0x00);
packet.write_i16(packet_length);
packet.append(&mut Vec::from(String::from("game name ").as_bytes_mut()));
// ... rest code
}
但是我得到一个错误:
packet.write_i16(packet_length);
| ^^^^^^^^^ cannot infer type for type parameter `T` declared on the associated function `write_i16`
我不知道应该在哪里添加类型注释,你能帮忙吗?
您需要指定 endianness,或者 BigEndian
or LittleEndian
:
packet.write_i16::<BigEndian>(packet_length);
或
BigEndian::write_u32(&mut packet, packet_lentgth);
我需要构建一个数据包发送到服务器。我为此使用 byteorder
板条箱。我的字段之一包含 usize
数据,因此我使用类型转换将其转换为 i16:
use byteorder::WriteBytesExt;
fn main () {
let login = "test";
let packet_length = 30 + (login.len() as i16);
let mut packet = Vec::new();
packet.write_u8(0x00);
packet.write_i16(packet_length);
packet.append(&mut Vec::from(String::from("game name ").as_bytes_mut()));
// ... rest code
}
但是我得到一个错误:
packet.write_i16(packet_length);
| ^^^^^^^^^ cannot infer type for type parameter `T` declared on the associated function `write_i16`
我不知道应该在哪里添加类型注释,你能帮忙吗?
您需要指定 endianness,或者 BigEndian
or LittleEndian
:
packet.write_i16::<BigEndian>(packet_length);
或
BigEndian::write_u32(&mut packet, packet_lentgth);