mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-11-03 13:13:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
//! See [`Label`]
 | 
						|
use std::fmt;
 | 
						|
 | 
						|
/// A type to specify UI label, like an entry in the list of assists. Enforces
 | 
						|
/// proper casing:
 | 
						|
///
 | 
						|
///    Frobnicate bar
 | 
						|
///
 | 
						|
/// Note the upper-case first letter and the absence of `.` at the end.
 | 
						|
#[derive(Clone)]
 | 
						|
pub struct Label(String);
 | 
						|
 | 
						|
impl PartialEq<str> for Label {
 | 
						|
    fn eq(&self, other: &str) -> bool {
 | 
						|
        self.0 == other
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl PartialEq<&'_ str> for Label {
 | 
						|
    fn eq(&self, other: &&str) -> bool {
 | 
						|
        self == *other
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl From<Label> for String {
 | 
						|
    fn from(label: Label) -> String {
 | 
						|
        label.0
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl Label {
 | 
						|
    pub fn new(label: impl Into<String>) -> Label {
 | 
						|
        let label = label.into();
 | 
						|
        assert!(label.starts_with(char::is_uppercase) && !label.ends_with('.'));
 | 
						|
        Label(label)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl fmt::Display for Label {
 | 
						|
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
						|
        fmt::Display::fmt(&self.0, f)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl fmt::Debug for Label {
 | 
						|
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
						|
        fmt::Debug::fmt(&self.0, f)
 | 
						|
    }
 | 
						|
}
 |