commit 52aeab40eefddde5a5105b2bf45ed4283711d33b Author: Carl Lerche Date: Fri Jan 30 00:04:33 2015 -0800 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4fffb2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..1196c8c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,11 @@ +[package] + +name = "bytes" +version = "0.0.1" +authors = ["Carl Lerche "] +description = "Types and traits for working with bytes" +license = "MIT" +# include = [ +# "Cargo.toml", +# "src/**/*.rs", +# ] diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..b8d45e2 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,19 @@ +#![crate_name = "bytes"] + +/// A trait for objects that provide random and sequential access to bytes. +pub trait Buf { + + fn remaining(&self) -> usize; + + fn bytes<'a>(&'a self) -> &'a [u8]; + + fn advance(&mut self, cnt: usize); + + fn has_remaining(&self) -> bool { + self.remaining() > 0 + } +} + +pub trait MutBuf : Buf { + fn mut_bytes<'a>(&'a mut self) -> &'a mut [u8]; +}