Trait midi2::TryFromBytes

source ·
pub trait TryFromBytes<T>: Sized {
    // Required method
    fn try_from_bytes(other: T) -> Result<Self, BufferOverflow>;
}
Expand description

Attempt to convert a message from a Bytes backing buffer to a Ump backing buffer.

The conversion may fail with a BufferOverflow error if the target buffer is not large enough to contain the data.

use midi2::{TryFromBytes, Data, sysex7::Sysex7};

let bytes_message = Sysex7::try_from(&[
    0xF0_u8, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xF7,
][..]).expect("Valid data");

let ump_message = Sysex7::<[u32; 4]>::try_from_bytes(bytes_message.clone());

assert_eq!(ump_message.expect("Buffer is large enough").data(), &[
    0x3016_0001,
    0x0203_0405,
    0x3034_0607,
    0x0809_0000,
]);

let small_ump_message = Sysex7::<[u32; 2]>::try_from_bytes(bytes_message.clone());
small_ump_message.expect_err("Buffer is too small");

Required Methods§

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<A: Bytes, B: Ump + BufferDefault + BufferMut + BufferTryResize> TryFromBytes<ChannelVoice1<A>> for ChannelVoice1<B>

source§

impl<A: Bytes, B: Ump + BufferDefault + BufferMut + BufferTryResize> TryFromBytes<SystemCommon<A>> for SystemCommon<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<ChannelPressure<A>> for ChannelPressure<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<ControlChange<A>> for ControlChange<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<KeyPressure<A>> for KeyPressure<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<NoteOff<A>> for NoteOff<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<NoteOn<A>> for NoteOn<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<PitchBend<A>> for PitchBend<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<ProgramChange<A>> for ProgramChange<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<Sysex7<A>> for Sysex7<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<ActiveSensing<A>> for ActiveSensing<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<Continue<A>> for Continue<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<Reset<A>> for Reset<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<SongPositionPointer<A>> for SongPositionPointer<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<SongSelect<A>> for SongSelect<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<Start<A>> for Start<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<Stop<A>> for Stop<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<TimeCode<A>> for TimeCode<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<TimingClock<A>> for TimingClock<B>

source§

impl<A: Bytes, B: Ump + BufferMut + BufferDefault + BufferTryResize> TryFromBytes<TuneRequest<A>> for TuneRequest<B>