Expand description
错误类型与 Result 别名。
本模块是整个 pptx-rs crate 的错误处理中枢。它做三件事:
- 统一错误类型
Error:使用thiserror派生,将底层std::io::Error/zip::result::ZipError/ 自定义字符串错误统一成一个枚举,方便上层?传播。 - 统一 Result 别名
Result<T>:所有公共 API(除特别声明)均返回该别名, 调用方不必书写冗长的Result<T, pptx_rs::Error>。 - 便捷构造器:在
Error上提供opc(...)/oxml(...)/not_implemented(...)等关联函数,使错误抛出更可读,并隐含语义归类。
§设计原则
- 零
panic!:库路径上禁止unwrap/expect/panic!。所有失败一律 转化为Error的一个变体,由调用方决定如何处理。 - 错误消息规范:消息小写开头、句末无标点(与 Rust 标准库惯例一致);
需要上下文时使用
format!拼接具体元素名 / 路径,例如"relationships parse: missing Id"。 - 可扩展:新增错误类别时优先扩展
enum Error变体,而非全部塞进Error::Other。后者仅用于临时过渡。
§与 python-pptx 的对应
python-pptx 抛出 python_pptx.PptxException 及若干子异常(PackageNotFoundError /
XPathOverflowError 等)。本库以单一枚举 + 字符串消息统一表达,对调用方而言
仅需 match 顶层 Error 即可。
§示例
use pptx_rs::{Error, Result};
fn read_slide() -> Result<()> {
let p = std::fs::File::open("missing.pptx")?; // io::Error 自动转 Error::Io
Ok(())
}
fn parse_attr() -> Result<()> {
Err(Error::oxml("missing required <p:ph> element"))
}Enums§
Type Aliases§
- Result
- 库统一
Result别名。