Struct symbolic_common::ByteView[][src]

pub struct ByteView<'a> { /* fields omitted */ }
Expand description

A smart pointer for byte data.

This type can be used to uniformly access bytes that were created either from mmapping in a path, a vector or a borrowed slice. A ByteView dereferences into a &[u8] and guarantees random access to the underlying buffer or file.

A ByteView can be constructed from borrowed slices, vectors or memory mapped from the file system directly.

Example

The most common way to use ByteView is to construct it from a file handle. This will own the underlying file handle until the ByteView is dropped:

use std::io::Write;
use symbolic_common::ByteView;

fn main() -> Result<(), std::io::Error> {
    let mut file = tempfile::tempfile()?;
    file.write_all(b"1234");

    let view = ByteView::map_file(file)?;
    assert_eq!(view.as_slice(), b"1234");
    Ok(())
}

Implementations

Constructs a ByteView from a Cow.

Example

use std::borrow::Cow;
use symbolic_common::ByteView;

let cow = Cow::Borrowed(&b"1234"[..]);
let view = ByteView::from_cow(cow);

Constructs a ByteView from a byte slice.

Example

use symbolic_common::ByteView;

let view = ByteView::from_slice(b"1234");

Constructs a ByteView from a vector of bytes.

Example

use symbolic_common::ByteView;

let vec = b"1234".to_vec();
let view = ByteView::from_vec(vec);

Constructs a ByteView from an open file handle by memory mapping the file.

Example

use std::io::Write;
use symbolic_common::ByteView;

fn main() -> Result<(), std::io::Error> {
    let mut file = tempfile::tempfile()?;
    let view = ByteView::map_file(file)?;
    Ok(())
}

Constructs a ByteView from any std::io::Reader.

Note: This currently consumes the entire reader and stores its data in an internal buffer. Prefer open when reading from the file system or from_slice / from_vec for in-memory operations. This behavior might change in the future.

Example

use std::io::Cursor;
use symbolic_common::ByteView;

fn main() -> Result<(), std::io::Error> {
    let reader = Cursor::new(b"1234");
    let view = ByteView::read(reader)?;
    Ok(())
}

Constructs a ByteView from a file path by memory mapping the file.

Example

use symbolic_common::ByteView;

fn main() -> Result<(), std::io::Error> {
    let view = ByteView::open("test.txt")?;
    Ok(())
}

Returns a slice of the underlying data.

Example

use symbolic_common::ByteView;

let view = ByteView::from_slice(b"1234");
let data = view.as_slice();

Trait Implementations

Performs the conversion.

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

The resulting type after dereferencing.

Dereferences the value.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.