Hacker News Digest

Тег: #strings

Постов: 2

Python's splitlines does more than just newlines (yossarian.net)

Python действительно разбивает строку не только по \n, \r и \r\n, но и по целому ряду юникод-разделителей: \x1c, \x1d, \x1e, \x85, \u2028, \u2029 и другим. Это означает, что splitlines() может разбивать строку на части там, где вы этого не ожидаете.

by Bogdanp • 09 октября 2025 г. в 13:55 • 88 points

ОригиналHN

#python#strings#unicode#methods

Комментарии (35)

  • Обсуждение показало, что splitlines() и split() ведут себя неодинаково, особенно в отношении обработки символов перевода строки и других пробелов.
  • Участники отметили, что splitlines() может неожиданно удалять символы перевода строки, если они встречаются в конце строки, в то время как split() этого не делает.
  • Также было отмечено, что split() разделяет строку по любому пробельному символу, в то время как splitlines() только по символам перевода строки.
  • Несколько человек поделились личным опытом, что они узнали что-то новое из обсуждения, даже несмотря на то, что это уже было в документации.
  • В целом, обсуждение подчеркнуло важность внимательного чтения документации и понимания различий между похожими, но не идентичными функциями.

A clickable visual guide to the Rust type system (rustcurious.com)

### Скалярные типы
- `u8` 0…255  
- `i8` -128…127  
- `bool` true/false  
- `u16`, `i16`, `f32`, `u32`, `i32`, `u64`, `i64`, `f64`, `u128`, `i128`, `usize`, `isize`, `char`

### Составные
- `(T, U)` кортеж  
- `struct` именованные поля  
- `enum` варианты  
- `union` пересекающиеся данные  
- `[T; N]` массив фикс. длины  
- `()` юнит

### Безразмерные
- `[T]` слайс  
- `str` строковый слайс  
- `dyn Trait` трейт-объект  
- `&[T]`, `&mut [T]`, `&str`, `&mut str`, `&dyn Trait`, `&mut dyn Trait`

### Ссылки
- `&T` shared  
- `&mut T` mutable

### Диапазоны
- `a..b`, `..b`, `a..`, `a..=b`, `..=b`, `..`

### Утилиты
- `Option<T>`  
- `Result<T, E>`  
- `Ordering`  
- `Arguments` (format!)

### Асинхронность
- `Poll<T>`  
- `Context`  
- `Pin<T>`

### Анонимные
- `fn()` item  
- `|x| …` closure  
- `async fn` / `async ||`  
- `impl Trait`

### unsafe
- `UnsafeCell<T>`  
- `ManuallyDrop<T>`  
- `PhantomData<T>`

### Сырые указатели
- `*const T`, `*mut T`

### Указатели на функции
- `fn(T…) -> U`

### Паника
- `PanicInfo`, `Location`

### Недостижимый
- `!` never

by stmw • 05 сентября 2025 г. в 16:39 • 243 points

ОригиналHN

#rust#type-system#programming-languages#traits#asynchronous-programming#closures#unsafe#pointers#strings#json

Комментарии (39)

  • Пользователи сравнивают визуализацию «Elements of Rust» с периодической таблицей и другими подобными гайдами (например, cosmic.mearie.org), отмечая, что она выглядит красиво на десктопе, но неудобна на мобильных и требует горизонтального скролла.
  • Некоторые находят подборку полезной для быстрого погружения, особенно если уже знакомы со статически типизированными языками.
  • Критика: «таблица» кажется произвольной в группировке типов, не объясняет, почему важные концепты рядом, и из-за плотности информации может отпугнуть новичков.
  • Упоминаются аналоги из C/C++, а также ссылки на другие Rust-гайды, попадавшие на HN.
  • Для строковых представлений в стандартной библиотеке есть трейты Display и Debug; сериализация JSON доступна через сторонние крейты (например, serde).