[][src]Struct saberrs::SabertoothPortShared

pub struct SabertoothPortShared { /* fields omitted */ }

Clonable variant of SabertoothPort.

It is more flexible, for example it allows to mix several protocols (PlainText and PacketSerial) with the same port. However in most cases SabertoothPort is enough and recommended.

The downside of SabertoothPortShared, besides possible performance loss, is that it is not Send.

Example

use std::time::Duration;
use saberrs::{Result, SabertoothSerial, SabertoothPortShared};
use saberrs::sabertooth2x32::{PacketSerial, PacketType, PlainText, Sabertooth2x32};


let mut dev = SabertoothPortShared::new("/dev/ttyS2")?;

// The following interfaces will all communicate using the same port, but
// using different protocols.
let mut sabertext = PlainText::from(&dev);
let mut saberchecksum = PacketSerial::from(&dev).with_packet_type(PacketType::Checksum);
let mut sabercrc = PacketSerial::from(&dev).with_packet_type(PacketType::CRC);

Methods

impl SabertoothPortShared[src]

pub fn new(port: &str) -> Result<SabertoothPortShared>[src]

Create a new SabertoothPortShared with a default configuration

Trait Implementations

impl SabertoothSerial for SabertoothPortShared[src]

impl<'_> From<&'_ SabertoothPortShared> for PacketSerial<SabertoothPortShared>[src]

impl<'_> From<&'_ SabertoothPortShared> for PlainText<SabertoothPortShared>[src]

impl Clone for SabertoothPortShared[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for SabertoothPortShared[src]

impl Read for SabertoothPortShared[src]

fn read_vectored(&mut self, bufs: &mut [IoSliceMut]) -> Result<usize, Error>1.36.0[src]

Like read, except that it reads into a slice of buffers. Read more

unsafe fn initializer(&self) -> Initializer[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, placing them into buf. Read more

fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>1.0.0[src]

Read all bytes until EOF in this source, appending them to buf. Read more

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>1.6.0[src]

Read the exact number of bytes required to fill buf. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a "by reference" adaptor for this instance of Read. Read more

fn bytes(self) -> Bytes<Self>1.0.0[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

fn chain<R>(self, next: R) -> Chain<Self, R> where
    R: Read
1.0.0[src]

Creates an adaptor which will chain this stream with another. Read more

fn take(self, limit: u64) -> Take<Self>1.0.0[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl Write for SabertoothPortShared[src]

fn write_vectored(&mut self, bufs: &[IoSlice]) -> Result<usize, Error>1.36.0[src]

Like write, except that it writes from a slice of buffers. Read more

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>1.0.0[src]

Attempts to write an entire buffer into this writer. Read more

fn write_fmt(&mut self, fmt: Arguments) -> Result<(), Error>1.0.0[src]

Writes a formatted string into this writer, returning any error encountered. Read more

fn by_ref(&mut self) -> &mut Self1.0.0[src]

Creates a "by reference" adaptor for this instance of Write. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]