2017-05-30 14 views

cevap

13

Evet unreachable! macro (ve unimplemented! çok) netlik için sadece destek. Doğrudan panic!'a yönlendirmek için implemented vardır.

#[macro_export] 
#[stable(feature = "rust1", since = "1.0.0")] 
macro_rules! unreachable { 
    () => ({ 
     panic!("internal error: entered unreachable code") 
    }); 
    ($msg:expr) => ({ 
     unreachable!("{}", $msg) 
    }); 
    ($fmt:expr, $($arg:tt)*) => ({ 
     panic!(concat!("internal error: entered unreachable code: ", $fmt), $($arg)*) 
    }); 
} 

#[macro_export] 
#[stable(feature = "rust1", since = "1.0.0")] 
macro_rules! unimplemented { 
    () => (panic!("not yet implemented")) 
} 

değil

güvenli olmayan bir şube tamamen ulaşılmaz olan ileri sürerken, ( unreachable veya debug_unreachable kasalar ile stabil Rust erişilebilir) unreachableintrinsic ile karıştırılmamalıdır. Bu, optimizasyon yaparken şubenin tamamen kaldırılmasına izin verir. iddiası yanlış olduğu ortaya çıkarsa bu unreachable!() hangi sadece panik ile karşılaştırıldığında, istenmeyen davranışlara yol açabilir.