Skip to content

Commit 5a25044

Browse files
committed
Remove trait_upcasting requirement
1 parent 5710af7 commit 5a25044

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

espflash/src/connection.rs

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
use std::{
2-
io::{BufWriter, Read},
3-
thread::sleep,
4-
time::Duration,
5-
};
1+
use std::{io::BufWriter, thread::sleep, time::Duration};
62

73
use binread::{io::Cursor, BinRead, BinReaderExt};
84
use bytemuck::{Pod, Zeroable};
@@ -263,8 +259,7 @@ impl Connection {
263259
pub(crate) fn read(&mut self, len: usize) -> Result<Option<Vec<u8>>, Error> {
264260
let mut tmp = Vec::with_capacity(1024);
265261
loop {
266-
self.decoder
267-
.decode(self.serial.serial_port_mut() as &mut dyn Read, &mut tmp)?;
262+
self.decoder.decode(&mut self.serial, &mut tmp)?;
268263
if tmp.len() >= len {
269264
return Ok(Some(tmp));
270265
}

espflash/src/interface.rs

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::io::Read;
2+
13
use serialport::SerialPort;
24

35
#[cfg(feature = "raspberry")]
@@ -79,3 +81,11 @@ impl Interface {
7981
self.serial_port.as_mut()
8082
}
8183
}
84+
85+
// Note(dbuga): this impl is necessary because using `dyn SerialPort` as `dyn Read`
86+
// requires trait_upcasting which isn't stable yet.
87+
impl Read for Interface {
88+
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
89+
self.serial_port.read(buf)
90+
}
91+
}

espflash/src/lib.rs

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
#![feature(trait_upcasting)]
2-
#![allow(incomplete_features)] // trait_upcasting
3-
41
pub use chip::Chip;
52
pub use cli::config::Config;
63
pub use elf::{FlashFrequency, FlashMode};

0 commit comments

Comments
 (0)