मैं अपने प्रक्रियात्मक मैक्रो को कुछ बाइनरीऑप्स को विधियों के साथ प्रतिस्थापित करना चाहता हूं। मैं स्पैन कैसे सेट करूं ताकि अगर त्रुटियां उत्पन्न हों तो मेरे उपयोगकर्ता पूरी तरह उलझन में नहीं हैं?प्रक्रियात्मक मैक्रोज़ में स्पैन के साथ सही तरीके से कैसे निपटें?
5
A
उत्तर
1
कुछ rustc
के स्रोत को देखने के बाद, मैं निष्कर्ष पर आया कि "विस्तार" मॉडल के बाद सबसे अच्छे परिणाम पैदा होते हैं। इसलिए हम मूल Span
रखते हैं लेकिन expn_id
के लिए, जिसे हम ExtCtxt::backtrace()
पर कॉल करके प्राप्त कर सकते हैं।
प्रश्न में उल्लिखित दोनों मामलों में इसे स्थापित करना एक अच्छा विचार प्रतीत होता है। ऑपरेटर को फ़ंक्शन कॉल में विस्तारित (फ़ंक्शन कॉल) पथ में विस्तारित किया जा सकता है, और मूल बाइनरी ऑपरेशन अभिव्यक्ति के रूप में देखा जा सकता है। कोड में:
match expr.unwrap() {
..
Expr { node: ExprKind::Binary(Spanned { node: Add, span: op }, l, r), span, .. } => {
let bt = self.cx.backtrace(); // get the expansion ID
let path = self.cx.path(Span { expn_id: bt, ..op }, vec![crate_name, trait_name, fn_name]);
let epath = self.cx.expr_path(path); // path expression
let args_expanded = self.fold_exprs(args);
self.cx.expr_call(Span { expn_id: bt, ..span }, epath, args_expanded)
//^outer expression
}
..
}
संबंधित मुद्दे
- 1. रिवर्स के साथ HttpResponseRedirect सही तरीके से कैसे करें?
- 2. xlib के साथ स्क्रीनशॉट को सही तरीके से कैसे लें?
- 3. निम्नलिखित तरीके से सही तरीके से कैसे अनुक्रमणित करें?
- 4. सही तरीके से मतदान?
- 5. एक स्पैन टैग में सही शब्द लपेटें
- 6. क्रोनबॉज - इसे सही तरीके से कैसे करें?
- 7. LINQToSql कक्षाओं के सिस्टम.Nullable <T> फ़ील्ड के साथ सही ढंग से कैसे निपटें?
- 8. setProgressDrawable() सही तरीके से उपयोग कैसे करें?
- 9. लक्ष्यInvocationException को सही तरीके से कैसे खोलें?
- 10. ThreadInterruptedException को सही तरीके से कैसे संभालें?
- 11. UnsafeMutablePointer को सही तरीके से कैसे संभालें
- 12. भविष्य के साथ निकलने वाले स्रोत से कैसे निपटें [टी]?
- 13. कैसे ग्रूवी में सही तरीके से सब से
- 14. स्विफ्ट - uncaught अपवाद के साथ कैसे निपटें
- 15. LINQ में GroupBy का सही तरीके से उपयोग कैसे करें?
- 16. सी ++ में बिट्स को सही तरीके से कैसे बदलें?
- 17. वेबपैक में URLSearchParams को सही तरीके से पॉलीफ़िल कैसे करें?
- 18. एकता के साथ एक आईडीस्पोजेबल रिपोजिटरी से कैसे निपटें?
- 19. एक्सिस के साथ रेडक्स-वादा, और त्रुटियों से कैसे निपटें?
- 20. PHP में स्ट्रीमिंग डेटा से कैसे निपटें?
- 21. एमआईटीएमपीआरसी के साथ प्रॉक्सी के माध्यम से अनुरोधों को सही तरीके से कैसे आगे बढ़ाया जाए?
- 22. मैं स्विफ्ट में सही तरीके से फ़ंक्शंस कैसे भेजूं?
- 23. पायथन में cover.py का सही तरीके से उपयोग कैसे करें?
- 24. वैज्ञानिक कंप्यूटिंग में अंडरफ्लो से कैसे निपटें?
- 25. ggplot2 में facet_grid का सही तरीके से उपयोग कैसे करें?
- 26. WPF डेटाग्रिड में xml को सही तरीके से कैसे बांधें?
- 27. svn में [email protected] से कैसे निपटें?
- 28. दो सूचियों में एनए से कैसे निपटें?
- 29. बिटमैप को सही तरीके से घुमाने के लिए कैसे?
- 30. सर्विसस्टैक: त्रुटियों से कैसे निपटें?
क्या आप एक उदाहरण दे सकते हैं? आप चाहते हैं कि अवधि केवल बाइनरीओपी, या पूरी बाइनरी अभिव्यक्ति को हाइलाइट करे? – kennytm
प्रत्येक एक्सप्रो को एक अवधि की आवश्यकता होती है। हमारे पास मूल 'बाइनरीओपी' एक्सप्र 'है, ऑपरेटर' एक्सप्र '(जो अपरिवर्तित हैं, इसलिए वे अपना' स्पैन 'रखते हैं, नव निर्मित' मेथडकॉल 'एक्सप्रो' दोनों के लिए 'स्पैन' के साथ विधि का 'एक्सप्र' और 'पहचान'। यह उन दो 'स्पैन' है जिन्हें मैं रूचि रखता हूं। – llogiq