rust-best-practices

द्वारा apollographql

अपोलो ग्राफक्यूएल की सर्वोत्तम प्रथाओं की हैंडबुक पर आधारित प्राकृतिक रस्ट कोडिंग मानक। नौ मुख्य क्षेत्रों को शामिल करता है: कोडिंग शैलियाँ और मुहावरे, क्लिप्पी लिंटिंग, प्रदर्शन अनुकूलन, त्रुटि प्रबंधन, परीक्षण पैटर्न, जेनेरिक्स और डिस्पैच, टाइप स्टेट पैटर्न, दस्तावेज़ीकरण, और पॉइंटर सुरक्षा। क्लोनिंग पर उधार लेने, thiserror/anyhow के साथ Result-आधारित त्रुटि प्रबंधन, और रिल

npx skills add https://github.com/apollographql/skills --skill rust-best-practices

Rust Best Practices

Apply these guidelines when writing or reviewing Rust code. Based on Apollo GraphQL's Rust Best Practices Handbook.

Best Practices Reference

Before reviewing, familiarize yourself with Apollo's Rust best practices. Read ALL relevant chapters in the same turn in parallel. Reference these files when providing feedback:

Quick Reference

Borrowing & Ownership

  • Prefer &T over .clone() unless ownership transfer is required
  • Use &str over String, &[T] over Vec<T> in function parameters
  • Small Copy types (≤24 bytes) can be passed by value
  • Use Cow<'_, T> when ownership is ambiguous

Error Handling

  • Return Result<T, E> for fallible operations; avoid panic! in production
  • Never use unwrap()/expect() outside tests
  • Use thiserror for library errors, anyhow for binaries only
  • Prefer ? operator over match chains for error propagation

Performance

  • Always benchmark with --release flag
  • Run cargo clippy -- -D clippy::perf for performance hints
  • Avoid cloning in loops; use .iter() instead of .into_iter() for Copy types
  • Prefer iterators over manual loops; avoid intermediate .collect() calls

Linting

Run regularly: cargo clippy --all-targets --all-features --locked -- -D warnings

Key lints to watch:

  • redundant_clone - unnecessary cloning
  • large_enum_variant - oversized variants (consider boxing)
  • needless_collect - premature collection

Use #[expect(clippy::lint)] over #[allow(...)] with justification comment.

Testing

  • Name tests descriptively: process_should_return_error_when_input_empty()
  • One assertion per test when possible
  • Use doc tests (///) for public API examples
  • Consider cargo insta for snapshot testing generated output

Generics & Dispatch

  • Prefer generics (static dispatch) for performance-critical code
  • Use dyn Trait only when heterogeneous collections are needed
  • Box at API boundaries, not internally

Type State Pattern

Encode valid states in the type system to catch invalid operations at compile time:

struct Connection<State> { /* ... */ _state: PhantomData<State> }
struct Disconnected;
struct Connected;

impl Connection<Connected> {
    fn send(&self, data: &[u8]) { /* only connected can send */ }
}

Documentation

  • // comments explain why (safety, workarounds, design rationale)
  • /// doc comments explain what and how for public APIs
  • Every TODO needs a linked issue: // TODO(#42): ...
  • Enable #![deny(missing_docs)] for libraries

apollographql की और Skills

apollo-federation
apollographql
Apollo Federation एकाधिक GraphQL API (उपग्राफ) को एक एकीकृत सुपरग्राफ में संयोजित करने में सक्षम बनाता है।
apollo-ios
apollographql
Apollo iOS एप्पल प्लेटफॉर्म के लिए एक मजबूत टाइप वाला GraphQL क्लाइंट है। यह आपके GraphQL ऑपरेशन और स्कीमा से Swift प्रकार उत्पन्न करता है, और एक async/await क्लाइंट, एक सामान्यीकृत कैश (इन-मेमोरी या SQLite-समर्थित), एक प्लग करने योग्य इंटरसेप्टर-आधारित HTTP ट्रांसपोर्ट जो क्वेरी, म्यूटेशन और मल्टीपार्ट सब्सक्रिप्शन को संभालता है, और एक वैकल्पिक WebSocket ट्रांसपोर्ट (graphql-transport-ws) जो किसी भी ऑपरेशन
apollo-router
apollographql
अपोलो राउटर एक उच्च-प्रदर्शन ग्राफ राउटर है जो रस्ट में लिखा गया है और अपोलो फेडरेशन 2 सुपरग्राफ चलाने के लिए है। यह आपके सबग्राफ के सामने बैठता है और क्वेरी योजना, निष्पादन और प्रतिक्रिया संरचना को संभालता है।
apollo-router-plugin-creator
apollographql
अपोलो राउटर के लिए मूल रस्ट प्लगइन बनाएं।
apollo-server
apollographql
Apollo Server 5.x के साथ विभिन्न फ्रेमवर्कों पर GraphQL सर्वर बनाने के लिए पूर्ण मार्गदर्शिका। इसमें स्कीमा परिभाषा, रिज़ॉल्वर, संदर्भ सेटअप, और TypeScript समर्थन के साथ त्रुटि प्रबंधन शामिल है। प्रोटोटाइपिंग के लिए स्टैंडअलोन मोड और Express, Fastify, Koa, तथा सर्वरलेस वातावरण के साथ एकीकरण का समर्थन करता है। इसमें रिज़ॉल्वर पैटर्न, प्रमाणीकरण/अधिकार, प्लगइन्स, N+1 रोकथाम के लिए DataLoader, और प्रदर्शन
graphql-operations
apollographql
कुशल, टाइप-सुरक्षित GraphQL ऑपरेशन लिखने और उन्हें फ्रैगमेंट के साथ व्यवस्थित करने के लिए सर्वोत्तम अभ्यास मार्गदर्शिका। इसमें नामकरण परंपराओं, वेरिएबल सिंटैक्स और डायरेक्टिव उपयोग के साथ क्वेरी, म्यूटेशन, सब्सक्रिप्शन और फ्रैगमेंट शामिल हैं। मुख्य सिद्धांतों पर जोर देती है: केवल आवश्यक फ़ील्ड का अनुरोध करें, सभी ऑपरेशनों को नाम दें, हार्डकोडेड मानों के बजाय वेरिएबल का उ
graphql-schema
apollographql
We need to translate the given English text to Hindi. The text is a description of a guide for GraphQL schema design. We must preserve the name "graphql-schema" but it's not in the text, so ignore. No extra labels. Translate only the text inside <text>. Output should be the translated text in Hindi. Let me translate: "Industry best practices guide for designing intuitive, performant, and maintainable GraphQL schemas. Covers core design principles including client-centric type organization, explicit nullability patterns, and backwards-compatible evolution strategies Provides reference documentation on types, naming conventions, cursor-based pagination, error modeling, and security considerations Includes practical patterns for interfaces, unions, input types, mutations, and ID strategies with code examples..." I'll translate into natural Hindi, keeping technical terms like GraphQL, cursor-based pagination, etc. as is or with appropriate Hindi transliteration. Ensure no extra commentary. Translation attempt: "सहज, उच्च प्रदर्शन और रखरखाव योग्य GraphQL स्कीम
rover
apollographql
Apollo Rover CLI ग्राफक्यूएल स्कीमा, फेडरेशन और स्थानीय सुपरग्राफ विकास के प्रबंधन के लिए है। सबग्राफ स्कीमा प्रकाशित करें, प्राप्त करें और मान्य करें; स्थानीय रूप से या GraphOS के माध्यम से फेडरेटेड सुपरग्राफ बनाएं। इसमें स्कीमा जाँच (प्री-डिप्लॉय मान्यकरण), लिंटिंग और चल रहे सर्वरों से इंट्रोस्पेक्शन शामिल है। rover dev कमांड विकास वर्कफ़्लो के लिए स्वचालित स्कीमा संयोजन के साथ एक स्थानीय