[][src]Struct sibyl::Raw

pub struct Raw<'e> { /* fields omitted */ }

Represents RAW and LONG RAW data types.

Methods

impl<'e> Raw<'e>[src]

pub fn from_bytes(data: &[u8], env: &'e dyn Env) -> Result<Self>[src]

Returns a new Raw constructed with the copy of the data

Example

use sibyl as oracle;

let env = oracle::env()?;
let data: [u8;5] = [1,2,3,4,5];
let raw = oracle::Raw::from_bytes(&data, &env)?;

let size = raw.capacity()?;
assert!(5 <= size);

let len = raw.len();
assert_eq!(5, len);

let raw_data_ptr = raw.as_raw_ptr();
assert!(raw_data_ptr != std::ptr::null_mut::<u8>());

let raw_data: &[u8] = unsafe { std::slice::from_raw_parts(raw_data_ptr, len as usize) };
assert_eq!(data, raw_data);

pub fn from_raw(other: &Raw<'e>) -> Result<Self>[src]

Returns a new Raw constructed with the copy of the date from the other Raw.

Example

use sibyl as oracle;

let env = oracle::env()?;
let data: [u8;5] = [1,2,3,4,5];
let src = oracle::Raw::from_bytes(&data, &env)?;
let dst = oracle::Raw::from_raw(&src)?;

let raw_data_ptr = src.as_raw_ptr();
assert!(raw_data_ptr != std::ptr::null_mut::<u8>());

let len = src.len();
assert_eq!(5, len);

let src_data: &[u8] = unsafe { std::slice::from_raw_parts(raw_data_ptr, len as usize) };
let raw_data_ptr = dst.as_raw_ptr();
assert!(raw_data_ptr != std::ptr::null_mut::<u8>());

let len = dst.len();
assert_eq!(5, len);

let dst_data: &[u8] = unsafe { std::slice::from_raw_parts(raw_data_ptr, len as usize) };
assert_eq!(dst_data, src_data);

pub fn with_capacity(size: usize, env: &'e dyn Env) -> Result<Self>[src]

Returns a new Raw with the memory allocated for the raw data.

Example

use sibyl as oracle;

let env = oracle::env()?;
let raw = oracle::Raw::with_capacity(19, &env)?;

let size = raw.capacity()?;
assert!(19 <= size);

let len = raw.len();
assert_eq!(0, len);

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

Returns the size of the raw data in bytes.

Example

use sibyl as oracle;

let env = oracle::env()?;
let data: [u8;5] = [1,2,3,4,5];
let raw = oracle::Raw::from_bytes(&data, &env)?;
let len = raw.len();

assert_eq!(5, len);

pub fn capacity(&self) -> Result<usize>[src]

Returns the allocated size of raw memory in bytes

Example

use sibyl as oracle;

let env = oracle::env()?;
let raw = oracle::Raw::with_capacity(19, &env)?;
let size = raw.capacity()?;

assert!(19 <= size);

pub fn resize(&mut self, new_size: usize) -> Result<()>[src]

Changes the size of the memory of this raw binary in the object cache. Previous content is not preserved.

Example

use sibyl as oracle;

let env = oracle::env()?;
let mut bin = oracle::Raw::with_capacity(10, &env)?;
let cap = bin.capacity()?;
assert!(cap >= 10);

bin.resize(20);
let cap = bin.capacity()?;
assert!(cap >= 20);

bin.resize(0);
let cap = bin.capacity()?;
assert_eq!(0, cap);

bin.resize(16);
let cap = bin.capacity()?;
assert!(cap >= 16);

pub fn as_raw_ptr(&self) -> *mut u8[src]

Returns unsafe pointer to the RAW data

Example

use sibyl as oracle;

let env = oracle::env()?;
let data: [u8;5] = [1,2,3,4,5];
let raw = oracle::Raw::from_bytes(&data, &env)?;

let raw_data_ptr = raw.as_raw_ptr();
assert!(raw_data_ptr != std::ptr::null_mut::<u8>());

let raw_data: &[u8] = unsafe { std::slice::from_raw_parts(raw_data_ptr, raw.len() as usize) };
assert_eq!(data, raw_data);

Trait Implementations

impl<'_> ToSql for Raw<'_>[src]

impl<'_> ToSqlOut for Raw<'_>[src]

fn set_len(&mut self, _new_len: usize)[src]

Called to set the received data length (always less than the initial capacity)

impl<'_> Drop for Raw<'_>[src]

Auto Trait Implementations

impl<'e> !Send for Raw<'e>

impl<'e> !Sync for Raw<'e>

Blanket Implementations

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

impl<T, U> Into<U> for T where
    U: From<T>, 
[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.

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

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

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