3 个版本 (破坏性更新)

0.3.0 2021年7月7日
0.2.0 2021年6月7日
0.1.0 2021年5月31日

#81 in 值格式化

Download history 2239/week @ 2024-03-14 2674/week @ 2024-03-21 2230/week @ 2024-03-28 2214/week @ 2024-04-04 3160/week @ 2024-04-11 2614/week @ 2024-04-18 2642/week @ 2024-04-25 2463/week @ 2024-05-02 1953/week @ 2024-05-09 3017/week @ 2024-05-16 2379/week @ 2024-05-23 2311/week @ 2024-05-30 2083/week @ 2024-06-06 2650/week @ 2024-06-13 4248/week @ 2024-06-20 2330/week @ 2024-06-27

11,763 每月下载量
用于 14 个Crates(9 个直接使用)

MIT 许可证

380KB
902

format_serde_error

Build Status crates.io docs.rs

为人类设计的Serde错误消息。

以使源文件中的错误位置明显的方式格式化Serde错误。

"example serde_json_long output"

将其添加到您的Cargo.toml中

[dependencies]
format_serde_error = "0.3"

目前支持 serde_yamlserde_json。只要错误输出行和列,扩展库以支持更多数据类型应该相对简单。

还有一个自定义错误类型,支持在给定的行和列中打印消息(请参阅 examples/custom.rs)。

使用示例(来自 examples/serde_yaml.rs

use format_serde_error::SerdeError;

#[derive(Debug, serde::Serialize, serde::Deserialize)]
struct Config {
    values: Vec<String>,
}

fn main() -> Result<(), anyhow::Error> {
    let config_str = "values:
  - 'first'
  - 'second'
  - third:";

    let config = serde_yaml::from_str::<Config>(config_str)
        .map_err(|err| SerdeError::new(config_str.to_string(), err))?;

    dbg!(config);

    Ok(())
}

输出将如下

Error:
   | values:
   |   - 'first'
   |   - 'second'
 4 |   - third:
   |           ^ values[2]: invalid type: map, expected a string at line 4 column 10

"example serde_yaml output"

如果需要,该包还会缩短长行(来自 examples/serde_yaml.rs

Error:
   | values:
   |   - 'first'
   |   - 'second'
 4 |   - third: Lorem ipsum dolor sit amet, consectetur adipiscing...
   |           ^ values[2]: invalid type: map, expected a string at line 4 column 10

"example serde_yaml output"

可以全局和按错误控制行和字符的上下文数量。有关如何操作的说明,请参阅文档。还可以禁用添加上下文和缩短行。

包功能

serde_yaml

默认启用:

启用对serde_yaml发出的错误的支持。

serde_json

默认启用:

启用对serde_json发出的错误的支持。

colored

默认启用:

启用使用colored包向终端输出颜色的支持。

graphemes_support

默认启用:

启用在上下文化长错误行时对图形簇的正确支持。

示例

serde_json

"example serde_json output"

serde_json_long

"example serde_json_long output"

serde_yaml

"example serde_yaml output"

serde_yaml_long

"example serde_yaml_long output"

custom

"example custom output"

custom_tabs

"example custom_tabs output"

依赖项

~2–13MB
~115K SLoC