मैंने कुछ स्थानों पर assert_eq!(a, b, ) देखा और मैं मैक्रोज़ के साथ कोड को देखकर assert_eq!(a, b) से अंतर बताने में बहुत सहज नहीं हूं। क्या कोई समझा सकता है कि दोनों में कोई अंतर है या नहीं?

2
savx2 10 मई 2021, 20:33

1 उत्तर

सबसे बढ़िया उत्तर

जंग कई जगहों पर अनुगामी अल्पविराम की अनुमति देता है, और अधिकांश अंतर्निहित मैक्रो भी इस सम्मेलन का सम्मान करते हैं। दो assert_eq! कॉल में कोई अंतर नहीं है। इसी तरह, हम इस तरह की एक संरचना घोषित कर सकते हैं

struct Example {
  foo: i32,
  bar: i32, // Note: trailing comma on this line
}

आम तौर पर, कॉल सिंगल लाइन होने पर पिछला कॉमा कुछ भी उपयोगी नहीं होता है। तो मुझे यह अजीब लगेगा, लेकिन पूरी तरह से मान्य

assert_eq!(a, b, )

दूसरी ओर, यदि दो भाव अपनी लाइन पर होने के लिए पर्याप्त जटिल हैं, तो यह git diffs और पठनीयता में मदद करता है। मुझे निम्नलिखित बहुत मुहावरेदार लगता है

assert_eq!(
  some_complicated_expression(arg1, arg2, arg3),
  some_complicated_expression(argA, argB, argC),
)
6
Silvio Mayolo 10 मई 2021, 20:37
विशेष रूप से assert_eq में git diff सुधार पर त्वरित प्रश्न! मैक्रो। क्या यह कई तर्कों की अनुमति देता है क्योंकि अन्यथा यह git diff में सुधार कैसे करेगा?
 – 
khalilw1
10 मई 2021, 20:38
1
assert_eq! उपयोगकर्ता को निर्दिष्ट करने के लिए अतिरिक्त वैकल्पिक तर्क ले सकता है अनुकूल त्रुटि संदेश।
 – 
Silvio Mayolo
10 मई 2021, 20:39