इस प्रोजेक्ट के बारे में

better-duck DuckDB के लिए एक Rust क्लाइंट है जो एम्बेडेड उपयोग के आसपास डिज़ाइन किया गया है, जहाँ डेटाबेस एक अलग सर्वर के बजाय एप्लिकेशन के भीतर चलता है। DuckDB C लाइब्रेरी संकलित है, इसलिए कोई सिस्टम पैकेज या रनटाइम निर्भरता की आवश्यकता नहीं है — यह डेस्कटॉप ऐप्स, मोबाइल क्रॉस-बिल्ड और समान वातावरण के लिए उपयुक्त है। परियोजना क्रेट्स में विभाजित है: better-duck-core (कनेक्शन, तैयार स्टेटमेंट, बल्क अपेंडर, टाइप कवरेज, उपयोगकर्ता-परिभाषित फ़ंक्शन), better-duck-diesel (Diesel 2.3 बैकएंड जिसमें क्वेरी DSL, माइग्रेशन, r2d2 पूल, और DuckDB-विशिष्ट SQL फ़ंक्शन, एग्रीगेट और ऑपरेटर शामिल हैं), better-duck-macros (UDF और डेटा डेराइव के लिए प्रोसीजरल मैक्रोज़, फीचर फ्लैग के माध्यम से खींचे गए), और better-duck-sys (वेंडर किए गए DuckDB C API बाइंडिंग)। मुख्य क्षमताओं में पंक्ति-उन्मुख, Arrow-मुक्त पहुँच शामिल है पंक्तियों और मानों तक; लिपटे FFI ताकि कोई असुरक्षित कोड उपयोगकर्ता कोड में लीक न हो; DuckDB प्रकारों का कवरेज जैसे हर चौड़ाई के पूर्णांक, DECIMAL, UUID, BIT, BIGNUM, टेम्पोरल, और समग्र LIST/ARRAY/STRUCT/MAP/UNION/ENUM प्रकार; पैरामीटरयुक्त क्वेरी; एक बल्क अपेंडर; r2d2 पूलिंग और Tokio async फेसडे के साथ साझा Database हैंडल; और एक्सटेंशन प्रबंधन सहायक। विशेषता मैक्रोज़ सादे Rust फ़ंक्शन को स्केलर, टेबल, एग्रीगेट, या कास्ट फ़ंक्शन के रूप में पंजीकृत करते हैं, जिनमें हस्ताक्षर से प्रकार अनुमानित होते हैं। डेराइव मैक्रोज़ स्ट्रक्चर और एनम को पंक्तियों और DuckDB प्रकारों (FromRow, ToRow, DuckEnum, DuckStruct) में मैप करते हैं, और सहायक मैक्रोज़ लेनदेन और पैरामीटर को कवर करते हैं। Diesel बैकएंड मानक CRUD, लेनदेन, DuckDB-विशिष्ट SQL प्रकार, DuckDB फ़ंक्शन और ऑपरेटरों का DSL, स्थानिक सहायक, और पूलिंग प्रबंधक जोड़ता है। फीचर फ्लैग बंडलिंग, chrono और decimal रूपांतरण, JSON और Parquet एक्सटेंशन, async, पूलिंग, UDF, डेराइव, और बिल्ड-टाइम bindgen को नियंत्रित करते हैं। README परियोजना को बीटा के रूप में चिह्नित करता है, यह ध्यान देते हुए कि 1.0 से पहले ब्रेकिंग परिवर्तन संभव हैं।