docs: 开源规范化 — doc comments + 社区文件 + 示例代码 + crates.io 就绪

- 为 core 公开 API 添加完整 doc comments(rustdoc 可用)
- 新增 .editorconfig / CONTRIBUTING / CODE_OF_CONDUCT / SECURITY
- 新增 Issue 模板(bug + feature)+ PR 模板
- 新增 3 个代码示例(examples/)
- 更新 Cargo.toml 元数据(description/repository/keywords/categories/MSRV)
- 更新 README + CHANGELOG
This commit is contained in:
2026-06-19 18:56:28 +08:00
parent cbcd4e5123
commit ce8063431e
17 changed files with 640 additions and 18 deletions
+30
View File
@@ -0,0 +1,30 @@
//! QRGen 基础示例:生成 QR 码并导出为多种格式
//!
//! 运行: `cargo run --example basic_qr`
use qr_core::qr::{QrCode, QrConfig};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let text = "https://github.com/LHY0125/QRGen";
// 使用默认配置(M 级纠错,自动版本,4 模块边距)
let qr = QrCode::encode(text, QrConfig::default())?;
println!("版本: {}", qr.version.0);
println!("尺寸: {}×{} 模块", qr.size(), qr.size());
println!("掩码: {}", qr.mask);
// 终端 ASCII 预览
println!("\n--- ASCII 预览 ---");
println!("{}", qr.to_ascii(false));
// 导出 PNG
qr.to_png_bytes(8)?;
println!("\nPNG 生成成功");
// 导出 SVG
let svg = qr.to_svg();
println!("SVG 长度: {} 字节", svg.len());
Ok(())
}
+27
View File
@@ -0,0 +1,27 @@
//! QRGen 自定义配置:强制指定版本、模块大小
//!
//! 运行: `cargo run --example custom_config`
use qr_core::qr::{QrCode, QrConfig, VersionMode};
use qr_core::version::EcLevel;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 强制使用版本 10(57×57 模块)
let config = QrConfig {
level: EcLevel::Q,
version: VersionMode::Fixed(10),
margin: 4,
};
let qr = QrCode::encode("固定版本 10 的 QR 码", config)?;
assert_eq!(qr.version.0, 10);
// 导出大尺寸 PNG(每个模块 8 像素)
let png = qr.to_png_bytes(8)?;
println!("版本 10 QR 码 PNG: {} 字节", png.len());
// 反转色终端输出(白底黑码 → 黑底白码)
println!("\n{}", qr.to_ascii(true));
Ok(())
}
+22
View File
@@ -0,0 +1,22 @@
//! QRGen 高纠错示例:生成可抵抗 30% 损坏的 QR 码
//!
//! 运行: `cargo run --example high_ecc`
use qr_core::qr::{QrCode, QrConfig, VersionMode};
use qr_core::version::EcLevel;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = QrConfig {
level: EcLevel::H, // 30% 纠错能力
version: VersionMode::Auto,
margin: 6, // 更大的静区
};
let qr = QrCode::encode("重要数据 - High ECC", config)?;
println!("版本: {}, 纠错: {:?}, 尺寸: {}×{}", qr.version.0, qr.level, qr.size(), qr.size());
let svg = qr.to_svg();
println!("SVG 生成成功: {} 字节", svg.len());
Ok(())
}