mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-28 12:53:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! Convenience macros.
 | |
| 
 | |
| #[macro_export]
 | |
| macro_rules! eprintln {
 | |
|     ($($tt:tt)*) => {{
 | |
|         if $crate::is_ci() {
 | |
|             panic!("Forgot to remove debug-print?")
 | |
|         }
 | |
|         std::eprintln!($($tt)*)
 | |
|     }}
 | |
| }
 | |
| 
 | |
| /// Appends formatted string to a `String`.
 | |
| #[macro_export]
 | |
| macro_rules! format_to {
 | |
|     ($buf:expr) => ();
 | |
|     ($buf:expr, $lit:literal $($arg:tt)*) => {
 | |
|         { use ::std::fmt::Write as _; let _ = ::std::write!($buf, $lit $($arg)*); }
 | |
|     };
 | |
| }
 | |
| 
 | |
| /// Generates `From` impls for `Enum E { Foo(Foo), Bar(Bar) }` enums
 | |
| ///
 | |
| /// # Example
 | |
| ///
 | |
| /// ```rust
 | |
| /// impl_from!(Struct, Union, Enum for Adt);
 | |
| /// ```
 | |
| #[macro_export]
 | |
| macro_rules! impl_from {
 | |
|     ($($variant:ident $(($($sub_variant:ident),*))?),* for $enum:ident) => {
 | |
|         $(
 | |
|             impl From<$variant> for $enum {
 | |
|                 fn from(it: $variant) -> $enum {
 | |
|                     $enum::$variant(it)
 | |
|                 }
 | |
|             }
 | |
|             $($(
 | |
|                 impl From<$sub_variant> for $enum {
 | |
|                     fn from(it: $sub_variant) -> $enum {
 | |
|                         $enum::$variant($variant::$sub_variant(it))
 | |
|                     }
 | |
|                 }
 | |
|             )*)?
 | |
|         )*
 | |
|     }
 | |
| }
 | 
