2014-10-28 4 views

ответ

9

Оба &str и String имеют метод, называемый is_empty:

Это, как они используются:

assert_eq!("".is_empty(), true); 
assert_eq!("".to_string().is_empty(), true); 
+0

Версия «.to_string() является ненужным распределением строк. – pyrho

+7

@pyrho Я считаю, что намерение состояло в том, чтобы показать, что и '& str', и' String' имеют метод 'is_empty()'. – Manishearth

+1

Я так догадался, я просто указывал, что это была плохая практика (: – pyrho

1

Найдено в док:

impl Collection for String 
    fn len(&self) -> uint 
    fn is_empty(&self) -> bool 
+0

Len() возвращает блок? –

+0

@AlexanderSupertramp, что еще? –

+0

как насчет чего еще? –

4

Другие ответили, что Collection.is_empty могут быть использованы, чтобы знать, если строка пуста, но при условии, на «пустой» вы имеете в виду «состоит только из пробелов», то вы хотите UnicodeStrSlice.is_whitespace() , что будет верно как для пустых строк, так и для строк, состоящих исключительно из символов с набором свойств unicode .

Только набор кусочков ломтиков UnicodeStrSlice, поэтому вам нужно будет использовать .as_slice(), если вы начинаете с String.

TL; др: s.is_whitespace(), если s: &str, если s.as_slice().is_whitespace()s: String

+0

Кажется, что это неустойчивый внешний ящик, есть ли другой способ обхода? – PENGUINLIONG