slm_ikllama 0.1.4

ik_llama.cpp backend for slm_inference
mod backend;
mod batch;
mod context;
mod model;
mod vocab;

pub use batch::Batch;
pub use context::{Builder, Context, KVType};
pub use model::{Model, ModelConfig};

use slm_inference::core::{Free, SharedPtr};

#[derive(Clone)]
pub struct LlamaContextFree;
impl Free<slm_ikllama_sys::llama_context> for LlamaContextFree {
    #[inline(never)]
    unsafe fn free(ptr: *mut slm_ikllama_sys::llama_context) {
        unsafe { slm_ikllama_sys::llama_free(ptr) };
    }
}

pub type LlamaContextPtr = SharedPtr<slm_ikllama_sys::llama_context, LlamaContextFree>;

#[derive(Clone)]
pub struct LlamaModelFree;
impl Free<slm_ikllama_sys::llama_model> for LlamaModelFree {
    #[inline(never)]
    unsafe fn free(ptr: *mut slm_ikllama_sys::llama_model) {
        unsafe { slm_ikllama_sys::llama_free_model(ptr) };
    }
}

pub type LlamaModelPtr = SharedPtr<slm_ikllama_sys::llama_model, LlamaModelFree>;