Я пытаюсь упаковать столбчатые данные, чтобы их можно было отправить на сервер.
Я хотел иметь возможность передавать любой подходящий вектор функции отправки, поэтому я сделал это (краткая версия) :
enum Column {
Short(Vec<i16>),
Int(Vec<i32>),
}
impl Column {
fn as_bytes(&mut self) -> &[u8] {
use Column::*; // weird
match self {
Short(vec) => unsafe { (vec.align_to::<u8>()).1 }, //why the ::?
Int(vec) => unsafe { (vec.align_to::<u8>()).1 },
}
}
}
Работает нормально. Однако, если я перепишу совпадение с помощью канала или:
impl Column {
fn as_bytes_succinct(&mut self) -> &[u8] {
use Column::*;
match self {
Short(vec) | Int(vec) => unsafe { (vec.align_to::<u8>()).1 },
}
}
}
, я получу
ожидаемое i16
, найдено i32
Чем / чем краткое написание отличается от явного?