pub fn install_io_tasks<E>(
        &mut self,
        install_io_tasks: impl FnOnce(
            chan::Sender<u8>,
            chan::Receiver<u8>,
        ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E>,
    ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E> {
        let ret = (
            self.worker.user_reader_task.take(),
            self.worker.user_writer_task.take(),
        );
        let (in_handle, out_handle) = install_io_tasks(
            self.worker.uart_input_chan.clone(),
            self.worker.uart_output_chan.clone(),
        )?;
        self.worker.user_reader_task = in_handle;
        self.worker.user_writer_task = out_handle;
        Ok(ret)
    }
/// Register a pair of Input and Output tasks with the UART.
///
/// The provided tasks SHOULD send/receive data to/from UART via the
/// provided Sender/Receiver channels, and MUST terminate if the
/// Sender/Receiver hang up.
///
/// Returns the ReaderTask/WriterTask of any previous tasks that may have
/// been registered with the UART.
Register a pair of Input and Output tasks with the UART.
The provided tasks SHOULD send/receive data to/from UART via the
provided Sender/Receiver channels, and MUST terminate if the
Sender/Receiver hang up.

Returns the ReaderTask/WriterTask of any previous tasks that may have
been registered with the UART.
Register a pair of Input and Output tasks with the UART . The provided tasks SHOULD send / receive data to / from UART via the provided Sender / Receiver channels and MUST terminate if the Sender / Receiver hang up . Returns the ReaderTask / WriterTask of any previous tasks that may have been registered with the UART .
pub fn install_io_tasks<E>(
        &mut self,
        install_io_tasks: impl FnOnce(
            chan::Sender<u8>,
            chan::Receiver<u8>,
        ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E>,
    ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E> {
        let ret = (
            self.worker.user_reader_task.take(),
            self.worker.user_writer_task.take(),
        );
        let (in_handle, out_handle) = install_io_tasks(
            self.worker.uart_input_chan.clone(),
            self.worker.uart_output_chan.clone(),
        )?;
        self.worker.user_reader_task = in_handle;
        self.worker.user_writer_task = out_handle;
        Ok(ret)
    }
pub fn install_io_tasks < E > ( & mut self , install_io_tasks : impl FnOnce ( chan :: Sender < u8 > , chan :: Receiver < u8 > , ) -> Result < ( Option < ReaderTask > , Option < WriterTask > ) , E > , ) -> Result < ( Option < ReaderTask > , Option < WriterTask > ) , E > { let ret = ( self . worker . user_reader_task . take ( ) , self . worker . user_writer_task . take ( ) , ) ; let ( in_handle , out_handle ) = install_io_tasks ( self . worker . uart_input_chan . clone ( ) , self . worker . uart_output_chan . clone ( ) , ) ? ; self . worker . user_reader_task = in_handle ; self . worker . user_writer_task = out_handle ; Ok ( ret ) }
Register a pair of Input and Output tasks with the UART.
Register a pair of Input and Output tasks with the UART .
&mut self
install_io_tasks
impl FnOnce(
            chan::Sender<u8>,
            chan::Receiver<u8>,
        ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E>
&mut self
install_io_tasks
impl FnOnce(
            chan::Sender<u8>,
            chan::Receiver<u8>,
        ) -> Result<(Option<ReaderTask>, Option<WriterTask>), E>