Я думаю, что это что-то с SDK, потому что это тот же код, который раньше работал нормально. Он по-прежнему отлично работает в Linux.
Ошибка:
thread 'tokio-runtime-worker' panicked at library\core\src\panicking.rs:220:5:
unsafe precondition(s) violated: slice::from_raw_parts requires the pointer to be aligned and non-null, and the total size of the slice not to exceed `isize::MAX`
Эта ошибка новая, но это означает, что до этого код полагался на неопределенное поведение, от которого теперь вас защищает ошибка. Это исходит из вашего кода или библиотеки?
Ни один. Пожалуйста, смотрите ответ ниже от Mac.
Чтобы уточнить: вы должны, нет, вы должны это исправить. Запуск в режиме выпуска устраняет только симптомы, а не проблему.
@eggyal эй, ты прав. В итоге очистка и восстановление решили проблему. Это было как-то связано с ящиком с вольфрамитом в Windows. Я попробовал обновить его, и оно сработало, понизил версию и обязательно очистил/пересобрал, и все равно работало, так что я думаю, что это какая-то странная ошибка. Я также позаботился о том, чтобы понизить версию Rusc до стабильной версии (а не бета-версии).

Недавнее изменение стандартной библиотеки позволило активировать утверждения отладки в core/std, если пользователь компилирует в режиме отладки, даже если предварительно скомпилированная стандартная библиотека скомпилирована в режиме выпуска. См. раздел Утверждение небезопасных предварительных условий примечаний к выпуску Rust 1.78.0.
Это признак того, что до изменения в вашем коде или зависимости была UB, и теперь она обнаруживается, поскольку утверждение только сейчас компилируется.
Большое спасибо. Удаление точек останова работает, а также запуск Release. Как вы это поняли?
Что вы подразумеваете под УБ?
@SpaceMonkey UB — это неопределенное поведение.
Для тех, кто столкнется с этой проблемой в будущем. Попробуй:
cargo clean и cargo buildreqwest.Я не могу точно определить проблему, но это был один из этих шагов, который ее устранил. Код, который дал сбой, находился в коде функции tungstenite::connect.
Как минимум просмотрите/включите трассировку стека, чтобы определить, какой код (ошибочно) вызывает
slice::from_raw_parts.