Split out joiner.

This commit is contained in:
Gav
2018-01-16 17:57:42 +01:00
parent caff772b83
commit e410a3a665
6 changed files with 18 additions and 15 deletions
@@ -0,0 +1,12 @@
use slicable::Slicable;
pub trait Joiner {
fn join<T: Slicable + Sized>(self, value: &T) -> Self;
}
impl Joiner for Vec<u8> {
fn join<T: Slicable + Sized>(mut self, value: &T) -> Vec<u8> {
value.as_slice_then(|s| self.extend_from_slice(s));
self
}
}
@@ -6,6 +6,7 @@ extern crate runtime_support;
mod endiansensitive;
mod streamreader;
mod joiner;
mod slicable;
mod primitives;
mod keyedvec;
@@ -1,4 +1,5 @@
use streamreader::{StreamReader, Joiner};
use streamreader::StreamReader;
use joiner::Joiner;
use slicable::{Slicable, NonTrivialSlicable};
use function::Function;
use runtime_support::size_of;
@@ -170,7 +171,7 @@ impl Slicable for Block {
#[cfg(test)]
mod tests {
use super::*;
use streamreader::Joiner;
use joiner::Joiner;
use function::Function;
#[test]
@@ -1,5 +1,5 @@
use runtime_support::{Vec, size_of, transmute, uninitialized, slice};
use streamreader::Joiner;
use joiner::Joiner;
use endiansensitive::EndianSensitive;
/// Trait that allows zero-copy read/write of value-references to/from slices in LE format.
@@ -20,17 +20,6 @@ impl<'a> StreamReader<'a> {
Slicable::from_slice(slice)
}
}
pub trait Joiner {
fn join<T: Slicable + Sized>(self, value: &T) -> Self;
}
impl Joiner for Vec<u8> {
fn join<T: Slicable + Sized>(mut self, value: &T) -> Vec<u8> {
value.as_slice_then(|s| self.extend_from_slice(s));
self
}
}
/*
// Not in use yet
// TODO: introduce fn size_will_be(&self) -> usize; to Slicable trait and implement
@@ -74,7 +74,7 @@ pub fn set_code(new: &[u8]) {
#[cfg(test)]
mod tests {
use streamreader::Joiner;
use joiner::Joiner;
use function::Function;
use std::collections::HashMap;
use runtime_support::{NoError, with_externalities, Externalities};