commit cbff5c90f27adc0ed16b2dfdcf024ef69ba64a5e
parent 5c0fb0166a8315f471d7e577492679088ad55f2a
Author: Daniel Barlow <dan@telent.net>
Date: Thu, 25 Dec 2025 17:04:44 +0000
return slice from to_bytes
Diffstat:
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs
@@ -71,9 +71,12 @@ enum RData {
}
impl RData {
- fn to_bytes(&self, out: &mut [u8]) {
+ fn to_bytes<'a>(&self, out: &'a mut [u8]) -> &'a [u8] {
match self {
- RData::Raw(b) => out[..b.len()].clone_from_slice(&b),
+ RData::Raw(b) => {
+ out[..b.len()].clone_from_slice(&b);
+ &out[..b.len()]
+ },
RData::Srv { target, port, priority, weight } =>
{
let mut b : [u8; 80] = [0; 80];
@@ -88,6 +91,7 @@ impl RData {
for (i, l) in label.iter().enumerate() {
out[6+i] = *l;
}
+ &out[..(6 + label.len())]
}
}
}
@@ -108,13 +112,13 @@ impl DnsResource {
ty : ResourceType,
data: RData
) -> Self {
- let mut rdata_raw : [u8; 80] = [0; 80];
- data.to_bytes(&mut rdata_raw);
+ let mut buf : [u8; 80] = [0; 80];
+ let rdata_raw = Vec::from(data.to_bytes(&mut buf));
Self {
name: name.into(),
ty,
data,
- data_raw: Vec::from(rdata_raw)
+ data_raw: rdata_raw
}
}