feat: add comprehensive Rust implementation with feature parity
This commit completes the Rust implementation of mail2couch with full feature parity to the Go version, including: - Complete IMAP client with TLS support and retry logic - Advanced email parsing with MIME multipart support using mail-parser - Email attachment extraction and CouchDB storage - Sync mode implementation with deleted message handling - Enhanced error handling and retry mechanisms - Identical command-line interface with bash completion - Test configurations for both implementations The Rust implementation now provides: - Memory safety and type safety guarantees - Modern async/await patterns with tokio/async-std - Comprehensive error handling with anyhow/thiserror - Structured logging and progress reporting - Performance optimizations and retry logic Test configurations created: - rust/config-test-rust.json - Rust implementation test config - go/config-test-go.json - Go implementation test config - test-config-comparison.md - Detailed comparison documentation - test-both-implementations.sh - Automated testing script Both implementations can now be tested side-by-side with identical configurations to validate feature parity and performance. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
35c3c8657a
commit
7b98efe06b
8 changed files with 1086 additions and 100 deletions
74
rust/config-test-rust.json
Normal file
74
rust/config-test-rust.json
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"couchDb": {
|
||||
"url": "http://localhost:5984",
|
||||
"user": "admin",
|
||||
"password": "password"
|
||||
},
|
||||
"mailSources": [
|
||||
{
|
||||
"name": "Rust Wildcard All Folders Test",
|
||||
"enabled": true,
|
||||
"protocol": "imap",
|
||||
"host": "localhost",
|
||||
"port": 3143,
|
||||
"user": "testuser1",
|
||||
"password": "password123",
|
||||
"mode": "archive",
|
||||
"folderFilter": {
|
||||
"include": ["*"],
|
||||
"exclude": ["Drafts", "Trash"]
|
||||
},
|
||||
"messageFilter": {
|
||||
"subjectKeywords": ["meeting", "important"],
|
||||
"senderKeywords": ["@company.com"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Rust Work Pattern Test",
|
||||
"enabled": true,
|
||||
"protocol": "imap",
|
||||
"host": "localhost",
|
||||
"port": 3143,
|
||||
"user": "syncuser",
|
||||
"password": "syncpass",
|
||||
"mode": "sync",
|
||||
"folderFilter": {
|
||||
"include": ["Work*", "Important*", "INBOX"],
|
||||
"exclude": ["*Temp*"]
|
||||
},
|
||||
"messageFilter": {
|
||||
"recipientKeywords": ["support@", "team@"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Rust Specific Folders Only",
|
||||
"enabled": true,
|
||||
"protocol": "imap",
|
||||
"host": "localhost",
|
||||
"port": 3143,
|
||||
"user": "archiveuser",
|
||||
"password": "archivepass",
|
||||
"mode": "archive",
|
||||
"folderFilter": {
|
||||
"include": ["INBOX", "Sent", "Personal"],
|
||||
"exclude": []
|
||||
},
|
||||
"messageFilter": {}
|
||||
},
|
||||
{
|
||||
"name": "Rust Subfolder Pattern Test",
|
||||
"enabled": false,
|
||||
"protocol": "imap",
|
||||
"host": "localhost",
|
||||
"port": 3143,
|
||||
"user": "testuser2",
|
||||
"password": "password456",
|
||||
"mode": "archive",
|
||||
"folderFilter": {
|
||||
"include": ["Work/*", "Archive/*"],
|
||||
"exclude": ["*/Drafts"]
|
||||
},
|
||||
"messageFilter": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue