Skip to main content

native/skia_native/src/generated_opts_helpers.rs

// Generated by mix skia.codegen. Do not edit by hand.

fn decode_opts<'a>(term: Term<'a>) -> NifResult<Vec<(Atom, Term<'a>)>> {
    term.map_get(atoms::opts())?.decode::<Vec<(Atom, Term<'a>)>>()
}
fn opt_term<'a>(opts: &[(Atom, Term<'a>)], key: Atom) -> Option<Term<'a>> {
    opts.iter().find_map(|(atom, term)| if *atom == key { Some(*term) } else { None })
}
fn opt_f32<'a>(opts: &[(Atom, Term<'a>)], key: Atom) -> NifResult<f32> {
    opt_f32_default(opts, key, f32::NAN)
        .and_then(|value| {
            if value.is_nan() { Err(rustler::Error::BadArg) } else { Ok(value) }
        })
}
fn opt_f32_option<'a>(opts: &[(Atom, Term<'a>)], key: Atom) -> NifResult<Option<f32>> {
    match opt_term(opts, key) {
        Some(term) => Ok(Some(term.decode::<f64>()? as f32)),
        None => Ok(None),
    }
}
fn opt_f32_default<'a>(
    opts: &[(Atom, Term<'a>)],
    key: Atom,
    default: f32,
) -> NifResult<f32> {
    match opt_term(opts, key) {
        Some(term) => Ok(term.decode::<f64>()? as f32),
        None => Ok(default),
    }
}
fn opt_bool_option<'a>(opts: &[(Atom, Term<'a>)], key: Atom) -> NifResult<Option<bool>> {
    match opt_term(opts, key) {
        Some(term) => Ok(Some(term.decode::<bool>()?)),
        None => Ok(None),
    }
}
fn opt_atom_option<'a>(opts: &[(Atom, Term<'a>)], key: Atom) -> NifResult<Option<Atom>> {
    match opt_term(opts, key) {
        Some(term) => Ok(Some(term.decode::<Atom>()?)),
        None => Ok(None),
    }
}