mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	detects redundant imports that can be eliminated. for #117772 : In order to facilitate review and modification, split the checking code and removing redundant imports code into two PR.
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use std::borrow::Cow;
 | 
						|
use std::ffi::{CStr, OsStr};
 | 
						|
use std::path::Path;
 | 
						|
use std::rc::Rc;
 | 
						|
use std::sync::Arc;
 | 
						|
 | 
						|
macro_rules! test_from_cow {
 | 
						|
    ($value:ident => $($ty:ty),+) => {$(
 | 
						|
        let borrowed = <$ty>::from(Cow::Borrowed($value));
 | 
						|
        let owned = <$ty>::from(Cow::Owned($value.to_owned()));
 | 
						|
        assert_eq!($value, &*borrowed);
 | 
						|
        assert_eq!($value, &*owned);
 | 
						|
    )+};
 | 
						|
    ($value:ident : & $ty:ty) => {
 | 
						|
        test_from_cow!($value => Box<$ty>, Rc<$ty>, Arc<$ty>);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn test_from_cow_slice() {
 | 
						|
    let slice: &[i32] = &[1, 2, 3];
 | 
						|
    test_from_cow!(slice: &[i32]);
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn test_from_cow_str() {
 | 
						|
    let string = "hello";
 | 
						|
    test_from_cow!(string: &str);
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn test_from_cow_c_str() {
 | 
						|
    let string = CStr::from_bytes_with_nul(b"hello\0").unwrap();
 | 
						|
    test_from_cow!(string: &CStr);
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn test_from_cow_os_str() {
 | 
						|
    let string = OsStr::new("hello");
 | 
						|
    test_from_cow!(string: &OsStr);
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn test_from_cow_path() {
 | 
						|
    let path = Path::new("hello");
 | 
						|
    test_from_cow!(path: &Path);
 | 
						|
}
 | 
						|
 | 
						|
#[test]
 | 
						|
fn cow_const() {
 | 
						|
    // test that the methods of `Cow` are usable in a const context
 | 
						|
 | 
						|
    const COW: Cow<'_, str> = Cow::Borrowed("moo");
 | 
						|
 | 
						|
    const IS_BORROWED: bool = COW.is_borrowed();
 | 
						|
    assert!(IS_BORROWED);
 | 
						|
 | 
						|
    const IS_OWNED: bool = COW.is_owned();
 | 
						|
    assert!(!IS_OWNED);
 | 
						|
}
 |