pub struct Infer { /* private fields */ }
Expand description
Infer allows to use a custom set of Matcher
s for infering a MIME type.
Most operations can be done by using the top level functions, but when custom matchers
are needed every call has to go through the Infer
struct to be able
to see the custom matchers.
Implementations§
Source§impl Infer
impl Infer
Sourcepub fn get(&self, buf: &[u8]) -> Option<Type>
pub fn get(&self, buf: &[u8]) -> Option<Type>
Returns the file type of the buffer.
§Examples
let info = infer::Infer::new();
let buf = [0xFF, 0xD8, 0xFF, 0xAA];
let kind = info.get(&buf).expect("file type is known");
assert_eq!(kind.mime_type(), "image/jpeg");
assert_eq!(kind.extension(), "jpg");
Sourcepub fn is_supported(&self, extension: &str) -> bool
pub fn is_supported(&self, extension: &str) -> bool
Sourcepub fn is_mime_supported(&self, mime_type: &str) -> bool
pub fn is_mime_supported(&self, mime_type: &str) -> bool
Sourcepub fn is_archive(&self, buf: &[u8]) -> bool
pub fn is_archive(&self, buf: &[u8]) -> bool
Sourcepub fn is_document(&self, buf: &[u8]) -> bool
pub fn is_document(&self, buf: &[u8]) -> bool
Sourcepub fn is_custom(&self, buf: &[u8]) -> bool
pub fn is_custom(&self, buf: &[u8]) -> bool
Determines whether a buffer is one of the custom types added.
§Examples
fn custom_matcher(buf: &[u8]) -> bool {
return buf.len() >= 3 && buf[0] == 0x10 && buf[1] == 0x11 && buf[2] == 0x12;
}
let mut info = infer::Infer::new();
info.add("custom/foo", "foo", custom_matcher);
let buf = [0x10, 0x11, 0x12, 0x13];
assert!(info.is_custom(&buf));
Sourcepub fn add(
&mut self,
mime_type: &'static str,
extension: &'static str,
m: Matcher,
)
pub fn add( &mut self, mime_type: &'static str, extension: &'static str, m: Matcher, )
Adds a custom matcher.
Custom matchers are matched in order of addition and before the default set of matchers.
§Examples
fn custom_matcher(buf: &[u8]) -> bool {
return buf.len() >= 3 && buf[0] == 0x10 && buf[1] == 0x11 && buf[2] == 0x12;
}
let mut info = infer::Infer::new();
info.add("custom/foo", "foo", custom_matcher);
let buf = [0x10, 0x11, 0x12, 0x13];
let kind = info.get(&buf).expect("file type is known");
assert_eq!(kind.mime_type(), "custom/foo");
assert_eq!(kind.extension(), "foo");
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Infer
impl RefUnwindSafe for Infer
impl Send for Infer
impl Sync for Infer
impl Unpin for Infer
impl UnwindSafe for Infer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more