Prosedürel makamın bazı BinaryOps'leri yöntemlerle değiştirmesini istiyorum. Hataları nasıl ayarlayabilirim ki, hatalar oluşursa, kullanıcılarm tamamen karışmazlar?Usul makroları ile doğru şekilde nasıl uyulur?
5
A
cevap
1
Bazıları, rustc
kaynağına baktıktan sonra, "genişleme" modelini izleyerek en iyi sonuçları veren sonuca vardım. Bu yüzden Span
orijinalini saklıyoruz, ancak numaralı telefonu arayarak alabileceğimiz expn_id
için.
Her iki durumda da bu soruda ana hatlarıyla belirtilmesi iyi bir fikir gibi görünüyor. operatörü, (işlev çağrısı) yoluna genişletildi ve işlev çağrısı olarak genişletilen orijinal ikili işlemi ifadesi olarak görülebilir. Kodda:
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
}
..
}
İlgili konular
- 1. Linux çekirdeğinde nasıl uyulur?
- 2. ManagedObjectID nasıl doğru şekilde kullanılır?
- 3. Aksanları doğru şekilde kodlamak nasıl?
- 4. Doğru şekilde nasıl kullanılırWindowsHookEx & CallNextHookEx
- 5. HttpResponseRedirect nasıl doğru şekilde yapılır?
- 6. DataTables Bootstrap modals ile doğru şekilde başlatılamıyor
- 7. ApplicationSettings doğru şekilde kaydedilmedi
- 8. Arraylist doğru şekilde ayrıştırılmadı
- 9. laravel bıçak doğru şekilde
- 10. Jinja2'de FunctionLoader ile makroları/diğer şablonları nasıl ekleyebilirim?
- 11. Persistence.xml doğru şekilde yapılandırılmamış
- 12. İletiler, core.async ile doğru şekilde nasıl toplu işlenir?
- 13. Erişilemez HTML içeriğini CSS ile doğru şekilde nasıl geçersiz kılarsınız?
- 14. Xamarin Doğru şekilde yüklenmiyor
- 15. Doğru bir şekilde kullanmak
- 16. Div öğesi, içeren td'nin yüksekliğine nasıl uyulur?
- 17. PresentationFramework aksamı GAC'den nasıl doğru şekilde yüklenir?
- 18. İyonik uygulamada doğru şekilde nasıl çalışır?
- 19. Maven'de Wildfly'den doğru şekilde kavanozlar nasıl kullanılır?
- 20. Devise Kurtarımı nasıl doğru şekilde genişletilir?
- 21. Haskell'de iki (IO) Strings'e nasıl uyulur?
- 22. ggplot'un nasıl doğru bir şekilde yorumlanacağı_ stat_density2d
- 23. Menü öğelerini doğru bir şekilde nasıl bağlarım?
- 24. ODBC nesnelerini doğru şekilde nasıl bırakılır?
- 25. Devtools zaman çizelgesi nasıl doğru şekilde anlaşılır?
- 26. Go'da MongoDB oturumuyla doğru şekilde nasıl çalışılır?
- 27. Nesne GSON'a (JSON) doğru şekilde nasıl dönüştürülür?
- 28. Qt programını nasıl doğru bir şekilde kapatırsınız?
- 29. Kaynak Sözlüklerinde Renkler nasıl doğru şekilde tanımlanır?
- 30. ajax istekleri doğru şekilde nasıl çözülür
Bir örnek verebilir misiniz? Açıklığın sadece BinaryOp'u veya tüm ikili ifadeyi vurgulamasını mı istiyorsunuz? – kennytm
Her Expr'nin bir süreye ihtiyacı var. Orijinal 'BinaryOp' Expr', 'Expr's operatör (değişmemiş, bu yüzden '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' "Expr" ve yöntemin "Ident". Bu, ilgilendiğim ikinci "Span" lar. – llogiq