async-mp4 0.1.1

Async Mp4 Muxer and Demuxer in pure rust
Documentation
use async_trait::async_trait;
use crate::bytes_read::{Mp4Readable, ReadMp4};
use crate::bytes_write::{Mp4Writable, WriteMp4};
use crate::error::MP4Error;

#[async_trait]
impl Mp4Readable for String {
    async fn read<R: ReadMp4>(reader: &mut R) -> Result<Self, MP4Error> {
        let mut name = vec![];
        loop {
            match reader.read().await? {
                0 => break,
                it => name.push(it)
            }
        }
        Ok(String::from_utf8(name)?)
    }
}

impl Mp4Writable for String {
    fn byte_size(&self) -> usize {
        self.as_bytes().len() + 1
    }

    fn write<W: WriteMp4>(&self, writer: &mut W) -> Result<usize, MP4Error> {
        let mut count = 0;
        count += writer.write(self.as_bytes())?;
        count += 0u8.write(writer)?;
        Ok(count)
    }
}