1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
use ffi::*; use libc::c_int; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub struct Config { pub kind: Type, pub count: usize, pub safe: bool, } impl Config { pub fn kind(value: Type) -> Self { Config { kind: value, ..Default::default() } } pub fn count(value: usize) -> Self { Config { count: value, ..Default::default() } } pub fn safe(value: bool) -> Self { Config { safe: value, ..Default::default() } } } impl Default for Config { fn default() -> Self { Config { kind: Type::None, count: 0, safe: false, } } } #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Type { None, Frame, Slice, } impl From<c_int> for Type { fn from(value: c_int) -> Type { match value { FF_THREAD_FRAME => Type::Frame, FF_THREAD_SLICE => Type::Slice, _ => Type::None, } } } impl Into<c_int> for Type { fn into(self) -> c_int { match self { Type::None => 0, Type::Frame => FF_THREAD_FRAME, Type::Slice => FF_THREAD_SLICE, } } }