llama-cpp-bindings 0.8.0

llama.cpp bindings for Rust
Documentation
use std::ffi::{CStr, CString};

#[derive(Debug, Clone)]
pub struct MtmdContextParams {
    pub use_gpu: bool,
    pub print_timings: bool,
    pub n_threads: i32,
    pub media_marker: CString,
}

impl Default for MtmdContextParams {
    fn default() -> Self {
        unsafe { llama_cpp_bindings_sys::mtmd_context_params_default() }.into()
    }
}

impl From<&MtmdContextParams> for llama_cpp_bindings_sys::mtmd_context_params {
    fn from(params: &MtmdContextParams) -> Self {
        let mut context = unsafe { llama_cpp_bindings_sys::mtmd_context_params_default() };
        let MtmdContextParams {
            use_gpu,
            print_timings,
            n_threads,
            media_marker,
        } = params;

        context.use_gpu = *use_gpu;
        context.print_timings = *print_timings;
        context.n_threads = *n_threads;
        context.media_marker = media_marker.as_ptr();

        context
    }
}

impl From<llama_cpp_bindings_sys::mtmd_context_params> for MtmdContextParams {
    fn from(params: llama_cpp_bindings_sys::mtmd_context_params) -> Self {
        Self {
            use_gpu: params.use_gpu,
            print_timings: params.print_timings,
            n_threads: params.n_threads,
            media_marker: unsafe { CStr::from_ptr(params.media_marker) }.to_owned(),
        }
    }
}