构造
打开同模型推理池,得到 InferPool。
open 不收激活码(C ABI password 槽传 NULL)。出厂 / 试用走 activate。旧 .darmkey 走 open_with_key。options 为 None = workers=1、queue=64、FAIL。
max_workers 合法 1..8,硬顶 8;0 = 1。绑定原样传给 Core,不在 Rust 侧截断。
打开
InferPool::open()
pub fn open(
container_path: &str,
prefer_provider: Option<&str>,
options: Option<&InferPoolOptions>,
) -> Result<Self, Error>
打开加密模型池。不收激活码。未激活走 activate。
参数:
container_path(&str) —.darmodel路径prefer_provider(Option<&str>) — 指名 Provider;None= 自动选。指名但不可用 = fail-closedoptions(Option<&InferPoolOptions>) —None= 1 worker / 队列 64 / Fail。见 InferPoolOptions
返回值:
Result<InferPool, Error>— 成功得到池
示例:
use darra_ai::InferPool;
let pool = InferPool::open("model.darmodel", None, None)?;
InferPool::activate()
pub fn activate(
container_path: &str,
activation_code: &str,
prefer_provider: Option<&str>,
options: Option<&InferPoolOptions>,
) -> Result<Self, Error>
出厂 / 试用:UI 只要一次码。之后本机或本进程 open 免密。submit / wait 永不收码。activation_code 为空串 → Error::Internal(message = activation_code 不能为空)。
参数:
container_path(&str) —.darmodel路径activation_code(&str) — 出厂 / 试用激活码,不能为空prefer_provider(Option<&str>) — 指名 Provider;None= 自动选options(Option<&InferPoolOptions>) —None= Core 默认
返回值:
Result<InferPool, Error>— 成功得到池
示例:
let pool = InferPool::activate("model.darmodel", "XXXX-XXXX", None, None)?;
InferPool::open_with_key()
pub fn open_with_key(
container_path: &str,
key_path: &str,
prefer_provider: Option<&str>,
options: Option<&InferPoolOptions>,
) -> Result<Self, Error>
旧双文件旁路 .darmkey。新 DARB1 不要用。key_path 为空串 → Error::Internal(message = key_path 不能为空)。
参数:
container_path(&str) —.darmodel路径key_path(&str) —.darmkey路径,不能为空prefer_provider(Option<&str>) — 指名 Provider;None= 自动选options(Option<&InferPoolOptions>) —None= Core 默认
返回值:
Result<InferPool, Error>— 成功得到池
示例:
let pool = InferPool::open_with_key("model.darmodel", "model.darmkey", None, None)?;
InferPool::open_plain()
pub fn open_plain(
model_path: &str,
prefer_provider: Option<&str>,
options: Option<&InferPoolOptions>,
) -> Result<Self, Error>
打开明文模型池。与 open 同一推理路径,只跳过容器解码与验票。
参数:
model_path(&str) — 明文模型路径(.onnx/.pdmodel/ 含二者的目录)prefer_provider(Option<&str>) — 指名 Provider;None= 自动选options(Option<&InferPoolOptions>) —None= Core 默认
返回值:
Result<InferPool, Error>— 成功得到池
示例:
use darra_ai::{InferOverflow, InferPool, InferPoolOptions};
let opts = InferPoolOptions::new()
.max_workers(2)
.queue_capacity(100)
.overflow(InferOverflow::DropOldest);
let pool = InferPool::open_plain("model.onnx", None, Some(&opts))?;