Проверьте, что строка пустая или пустая.

Какой правильный способ проверить, является ли строка пустой или пустой для a) & str b) String? Раньше я делал это с помощью "aaa".len() == 0, но должен ли другой способ, как говорит мне моя кишка?

Ответ 1

И &str и String имеют метод is_empty:

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

assert_eq!("".is_empty(), true); // a)
assert_eq!(String::new().is_empty(), true); // b)

Ответ 2

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

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

tl; dr: s.is_whitespace(), если s: &str, s.as_slice().is_whitespace(), если s: String

Ответ 3

Найдено в документе:

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

Ответ 4

Пустая строка или строка с пробелами может быть проверена с помощью:

s.trim().is_empty()

где trim() возвращает фрагмент с пробельными символами, удаленными из начала и конца строки (https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim).