[][src]Struct rlp::Rlp

pub struct Rlp<'a> { /* fields omitted */ }

Data-oriented view onto trusted rlp-slice.

Unlikely to UntrustedRlp doesn't bother you with error handling. It assumes that you know what you are doing.

Implementations

impl<'a, 'view> Rlp<'a> where
    'a: 'view, 
[src]

pub fn new(bytes: &'a [u8]) -> Rlp<'a>[src]

Create a new instance of Rlp

pub fn as_raw(&'view self) -> &'a [u8][src]

The raw data of the RLP as slice.

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	let dog = rlp.at(1).as_raw();
	assert_eq!(dog, &[0x83, b'd', b'o', b'g']);
}

pub fn prototype(&self) -> Prototype[src]

Get the prototype of the RLP.

pub fn payload_info(&self) -> PayloadInfo[src]

Get payload info.

pub fn data(&'view self) -> &'a [u8][src]

Get underlieing data.

pub fn item_count(&self) -> usize[src]

Returns number of RLP items.

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	assert_eq!(rlp.item_count(), 2);
	let view = rlp.at(1);
	assert_eq!(view.item_count(), 0);
}

pub fn size(&self) -> usize[src]

Returns the number of bytes in the data, or zero if it isn't data.

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	assert_eq!(rlp.size(), 0);
	let view = rlp.at(1);
	assert_eq!(view.size(), 3);
}

pub fn at(&'view self, index: usize) -> Rlp<'a>[src]

Get view onto RLP-slice at index.

Caches offset to given index, so access to successive slices is faster.

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	let dog: String = rlp.at(1).as_val();
	assert_eq!(dog, "dog".to_string());
}

pub fn is_null(&self) -> bool[src]

No value

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![];
	let rlp = Rlp::new(&data);
	assert!(rlp.is_null());
}

pub fn is_empty(&self) -> bool[src]

Contains a zero-length string or zero-length list.

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc0];
	let rlp = Rlp::new(&data);
	assert!(rlp.is_empty());
}

pub fn is_list(&self) -> bool[src]

List value

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	assert!(rlp.is_list());
}

pub fn is_data(&self) -> bool[src]

String value

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	assert!(rlp.at(1).is_data());
}

pub fn is_int(&self) -> bool[src]

Int value

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc1, 0x10];
	let rlp = Rlp::new(&data);
	assert_eq!(rlp.is_int(), false);
	assert_eq!(rlp.at(0).is_int(), true);
}

pub fn iter(&'view self) -> RlpIterator<'a, 'view>

Notable traits for RlpIterator<'a, 'view>

impl<'a, 'view> Iterator for RlpIterator<'a, 'view> type Item = Rlp<'a>;
[src]

Get iterator over rlp-slices

extern crate rlp;
use rlp::*;

fn main () {
	let data = vec![0xc8, 0x83, b'c', b'a', b't', 0x83, b'd', b'o', b'g'];
	let rlp = Rlp::new(&data);
	let strings: Vec<String> = rlp.iter().map(| i | i.as_val()).collect();
}

pub fn as_val<T>(&self) -> T where
    T: Decodable
[src]

Decode data into an object

pub fn as_list<T>(&self) -> Vec<T> where
    T: Decodable
[src]

pub fn val_at<T>(&self, index: usize) -> T where
    T: Decodable
[src]

Decode data at given list index into an object

pub fn list_at<T>(&self, index: usize) -> Vec<T> where
    T: Decodable
[src]

Trait Implementations

impl<'a> Debug for Rlp<'a>[src]

impl<'a> Display for Rlp<'a>[src]

impl<'a> From<UntrustedRlp<'a>> for Rlp<'a>[src]

impl<'a, 'view> IntoIterator for &'view Rlp<'a> where
    'a: 'view, 
[src]

type Item = Rlp<'a>

The type of the elements being iterated over.

type IntoIter = RlpIterator<'a, 'view>

Which kind of iterator are we turning this into?

Auto Trait Implementations

impl<'a> !RefUnwindSafe for Rlp<'a>

impl<'a> Send for Rlp<'a>

impl<'a> !Sync for Rlp<'a>

impl<'a> Unpin for Rlp<'a>

impl<'a> UnwindSafe for Rlp<'a>

Blanket Implementations

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

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

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

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

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

impl<T> ToString for T where
    T: Display + ?Sized
[src]

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.