跳到主要内容

构造

打开同模型推理池,得到 InferPool

open 不收激活码(C ABI password 槽传 NULL)。出厂 / 试用走 activate。旧 .darmkeyopen_with_keyoptionsNone = 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-closed
  • options (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))?;