Skip to main content

Module error

Module error 

Source
Expand description

错误类型与 Result 别名。

本模块是整个 pptx-rs crate 的错误处理中枢。它做三件事:

  1. 统一错误类型 Error:使用 thiserror 派生,将底层 std::io::Error / zip::result::ZipError / 自定义字符串错误统一成一个枚举,方便上层 ? 传播。
  2. 统一 Result 别名 Result<T>:所有公共 API(除特别声明)均返回该别名, 调用方不必书写冗长的 Result<T, pptx_rs::Error>
  3. 便捷构造器:在 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§

Error
库错误。所有外部接口(除特别声明外)均返回 Result<T>

Type Aliases§

Result
库统一 Result 别名。