#卡片 #解析器 #rfc-6350

vcard_parser

根据 RFC 6350 规范解析和验证 vCard 数据

6 个版本

0.2.2 2024年1月20日
0.2.1 2023年1月23日
0.1.2 2022年10月30日

#332电子邮件


vcard_tui 中使用

MIT 许可证

360KB
8K SLoC

卡片解析器

根据 RFC 6350 规范解析和验证 vCard 数据。

rust crates license release

安装

将库添加到您的 cargo.toml 文件的依赖项部分。

[dependencies]
vcard_parser = "0.2.2"

使用

Rust 文档在这里:here

基本示例

读取 vcf 文件,更新 vCard 对象,并将其写回文件。

use std::fs::{read_to_string, write};
use vcard_parser::parse_vcards;
use vcard_parser::traits::HasValue;
use vcard_parser::vcard::value::Value;
use vcard_parser::vcard::value::value_text::ValueTextData;

fn main () {
    let input = read_to_string("contacts.vcf").unwrap_or(String::from("BEGIN:VCARD\nVERSION:4.0\nFN:\nEND:VCARD\n"));
    let mut vcards = parse_vcards(input.as_str()).expect("Unable to parse string.");

    let vcard = vcards.first_mut().unwrap();
    let mut property = vcard.get_property_by_name("FN").unwrap();

    property.set_value(Value::from(ValueTextData::from("John Doe"))).unwrap();
    vcard.set_property(&property).expect("Unable to update property.");

    let mut data = String::new();
    for vcard in vcards {
        data.push_str(vcard.export().as_str())
    }

    write("contacts.vcf", data).expect("Unable to write file.");
}

依赖项

~3.5MB
~93K SLoC