构造
打开加密容器或明文模型,得到 Session。
对应包未装时内部调一次 runtime::ensure(无进度)。指名 Provider 不可用 = fail-closed。本绑定没有 open_plain_ex,也没有把 Core 的 darra_session_options(intra / inter 线程、CPU 亲和)露出来。
功能概览
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| 打开 | Session::open | Result<Session, Error> | 关联函数 | 打开 .darmodel(DARM1)。key_path 与 password 至少给一个;都给则 key 文件优先验票 |
Session::open_plain | Result<Session, Error> | 关联函数 | 打开明文模型。与 open 同一推理路径,只跳过容器解码与验票。Paddle 是运行时载荷 | |
Session::open_ex | Result<Session, Error> | 关联函数 | 打开 .darmodel 并传入 SessionOptions。当前翻译到 open 四参 |
打开
Session::open()
pub fn open(
container_path: &str,
key_path: Option<&str>,
password: Option<&str>,
prefer_provider: Option<&str>,
) -> Result<Self, Error>
打开加密容器(.darmodel,DARM1)建会话。
参数:
container_path(&str) —.darmodel路径(必填)key_path(Option<&str>) —.darmkey授权文件;None= 走密码 / 试用通道password(Option<&str>) — 永久密码;None= 走授权文件 / 试用通道。两个通道至少给一个;都给则 key 文件优先验票prefer_provider(Option<&str>) — 指名 Provider(见 ensure · 合法 ID);None= 按载荷 × 硬件 × 已装包自动选。指名但不可用 = fail-closed
返回值:
Result<Session, Error>— 成功得到会话;失败变体见 错误
典型错误:IoNotFound / IoDenied / BadContainer / BadLicense / PasswordRequired / PasswordWrong / MachineMismatch / TrialExhausted / UnsupportedPayload(如 Windows 上 rknn 载荷)/ ProviderMissing / ProviderAbiMismatch / HardwareMissing / DriverTooOld / NetworkFailed / ChecksumMismatch / Cancelled(后三码来自内部 ensure)。
示例:
use darra_ai::Session;
let session = Session::open("model.darmodel", Some("model.darmkey"), None, None)?;
密码通道:
let session = Session::open(
"model.darmodel",
None,
std::env::var("DARRA_MODEL_PASSWORD").ok().as_deref(),
None,
)?;
Session::open_plain()
pub fn open_plain(
onnx_path: &str,
prefer_provider: Option<&str>,
) -> Result<Self, Error>
打开明文模型建会话。与 Session::open 同一推理路径,只跳过容器解码与验票。
onnx_path(历史参数名,语义为「明文模型路径」):
.onnx文件.pdmodel文件(同目录须有对应.pdiparams)- 含
*.pdmodel+*.pdiparams的目录
Paddle 是运行时载荷(PayloadKind = paddle)。.pt / .pth 仍拒,收到即 Error::UnsupportedPayload(先转 ONNX)。
Windows 无 RKNN:rknn 载荷在 Windows 上同样 UnsupportedPayload。本函数打开的是明文路径;rknn 通常打在 .darmodel 里,由 open 拒绝。
参数:
onnx_path(&str) — 明文模型路径(见上)prefer_provider(Option<&str>) — 指名 Provider;None= 自动选。指名但不可用 = fail-closed
返回值:
Result<Session, Error>— 成功得到会话
示例:
let session = Session::open_plain("model.onnx", Some("onnx-cpu"))?;
Paddle 明文:
let session = Session::open_plain("model.pdmodel", Some("paddle-cpu"))?;
Session::open_ex()
pub fn open_ex(container_path: &str, options: &SessionOptions) -> Result<Self, Error>
打开加密容器建会话(可扩展入口)。当前翻译到 Session::open 四参;SessionOptions 只有 key_path / password / prefer_provider,没有 Core 的 intra_op_threads / inter_op_threads / cpu_affinity_mask。构造 SessionOptions 不加载 native。
本绑定没有 open_plain_ex。
参数:
container_path(&str) —.darmodel路径options(&SessionOptions) — 可选通道
返回值:
Result<Session, Error>— 成功得到会话
示例:
use darra_ai::{Session, SessionOptions};
let session = Session::open_ex(
"model.darmodel",
&SessionOptions::new()
.key_path("model.darmkey")
.prefer_provider("onnx-cpu"),
)?;