3 个版本 (破坏性更新)
0.3.0 | 2021年7月7日 |
---|---|
0.2.0 | 2021年6月7日 |
0.1.0 | 2021年5月31日 |
#81 in 值格式化
11,763 每月下载量
用于 14 个Crates(9 个直接使用)
380KB
902 行
format_serde_error
为人类设计的Serde错误消息。
以使源文件中的错误位置明显的方式格式化Serde错误。
将其添加到您的Cargo.toml中
[dependencies]
format_serde_error = "0.3"
目前支持 serde_yaml 和 serde_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
如果需要,该包还会缩短长行(来自 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
可以全局和按错误控制行和字符的上下文数量。有关如何操作的说明,请参阅文档。还可以禁用添加上下文和缩短行。
包功能
serde_yaml
默认启用: 是
启用对serde_yaml
发出的错误的支持。
serde_json
默认启用: 是
启用对serde_json
发出的错误的支持。
colored
默认启用: 是
启用使用colored
包向终端输出颜色的支持。
graphemes_support
默认启用: 是
启用在上下文化长错误行时对图形簇的正确支持。
示例
serde_json
serde_json_long
serde_yaml
serde_yaml_long
custom
custom_tabs
依赖项
~2–13MB
~115K SLoC