Rust стремится быть языком общего назначения, который может работать на многих типах архитектур (x86_64, i686, PowerPC, ARM, RISC-V) и системах (Windows, macOS, Linux) и даже встраиваемых системах без O perating S ystem .
Но если у вас нет ОС, вам не обязательно иметь распределитель памяти или обработку файлов, потому чтоэто то, что ОС обычно делает.
Здесь #![no_std]
вступает в игру.Если вы поместите эту директиву в свой lib.rs , вы скажете компилятору Rust не связывать ящик std
, а вместо этого использовать только core
.Как вы сказали, core
является подмножеством std
и содержит (в основном) все, что не требует выделения памяти или других вещей, требующих базовой ОС.
Нет никакой разницы в фактической реализации.Если функция предоставляется в core
, функция в std
является просто реэкспортом .
TL; DR: используйте std
, если у вас работает операционная система, иначеиспользуйте core
.Нет необходимости смешивать их.