(as) не транзитивен: as T as U нельзя сократить до as U. А вот для целых чисел и кастов между ними (напр. as i16 as u8) транзитивность выполняется?
Нет
Оператор as с интами работает как: Отбрасывание битов (truncation), sizeof(src) > sizeof(dest); Zero-extend, sizeof(src) ≤ sizeof(dst) для беззнаковых; Sign-extend, sizeof(src) ≤ sizeof(dst) для знаковых; Реинтерпретация битов при смене знаковости типа. Так что если sizeof(T) ≥ sizeof(U), то каст можно сократить до as U.
Обсуждают сегодня