Trait immeta::markers::MetadataMarker [] [src]

pub trait MetadataMarker {
    type Metadata;
    fn from_generic(
        gmd: GenericMetadata
    ) -> Result<Self::Metadata, GenericMetadata>;
fn from_generic_ref(gmd: &GenericMetadata) -> Option<&Self::Metadata>;
fn load<R: ?Sized + BufRead>(r: &mut R) -> Result<Self::Metadata>;
fn load_from_seek<R: ?Sized + BufRead + Seek>(
        r: &mut R
    ) -> Result<Self::Metadata>;
fn load_from_file<P: AsRef<Path>>(p: P) -> Result<Self::Metadata>;
fn load_from_buf(b: &[u8]) -> Result<Self::Metadata>; }

A marker trait for a specific metadata type.

Associated Types

Required Methods

Tries to convert the given GenericMetadata instance into a concrete metadata type.

If the generic value really contains the associated metadata type, then Ok variant is returned; otherwise Err variant containing the original value is returned.

Examples

use immeta::markers::Jpeg;
use immeta::formats::jpeg;
use immeta::GenericMetadata;

let generic = immeta::load_from_file("kitty.jpg").unwrap();
let concrete: Result<jpeg::Metadata, GenericMetadata> = generic.into::<Jpeg>();
assert!(concrete.is_ok());
use immeta::markers::Jpeg;
use immeta::formats::jpeg;
use immeta::GenericMetadata;

let generic = immeta::load_from_file("kitty.png").unwrap();
let concrete: Result<jpeg::Metadata, GenericMetadata> = generic.into::<Jpeg>();
assert!(concrete.is_err());

Tries to extract a reference to a concrete metadata type from the given GenericMetadata reference.

Behaves similarly to from_generic(), except using references instead of immediate values.

Examples

use immeta::markers::Jpeg;
use immeta::formats::jpeg;

let generic = immeta::load_from_file("kitty.jpg").unwrap();
let concrete: Option<&jpeg::Metadata> = generic.as_ref::<Jpeg>();
assert!(concrete.is_some());
use immeta::markers::Jpeg;
use immeta::formats::jpeg;

let generic = immeta::load_from_file("kitty.png").unwrap();
let concrete: Option<&jpeg::Metadata> = generic.as_ref::<Jpeg>();
assert!(concrete.is_none());

Attempts to load metadata for an image of a concrete type from the provided reader.

Invokes LoadableMetadata::load() for the associated metadata type. Use this method instead of calling load() on the metadata type directly.

Examples

use std::io::{self, BufReader};
use immeta::markers::{MetadataMarker, Jpeg};

let data = io::stdin();
let metadata = Jpeg::load(&mut data.lock());

Attempts to load metadata for an image of a concrete type from the provided seekable reader.

Invokes LoadableMetadata::load_from_seek() for the associated metadata type. Use this method instead of calling load_from_seek() on the metadata type directly.

Examples

use std::io::{Read, BufReader, Cursor};
use immeta::markers::{MetadataMarker, Jpeg};


let data: Vec<u8> = obtain_image();
let metadata = Jpeg::load(&mut BufReader::new(Cursor::new(data)));

Attempts to load metadata for an image of a concrete type from a file identified by the provided path.

Invokes LoadableMetadata::load_from_file() for the associated metadata type. Use this method instead of calling load_from_file() on the metadata type directly.

Examples

use immeta::markers::{MetadataMarker, Jpeg};

let metadata = Jpeg::load_from_file("kitty.jpg");

Attempts to load metadata for an image of a concrete type from the provided byte buffer.

Invokes LoadableMetadata::load_from_buf() for the associated metadata type. Use this method instead of calling load_from_buf() on the metadata type directly.

Examples

use immeta::markers::{MetadataMarker, Jpeg};

let buf: &[u8] = &[1, 2, 3, 4];   // pretend that this is an actual image
let metadata = Jpeg::load_from_buf(buf);

Implementors