Да, вам нужно отключить функцию rand std
, чтобы использовать ее в среде, где std
недоступен.Однако, если std
доступно , отключение функции std
все равно будет работать.
#![no_std]
изменяет прелюдию вашей корзины с прелюдии std
на core
прелюдия.Прелюдия std
выглядит следующим образом:
extern crate std;
use std::prelude::v1::*;
Прелюдия core
такая же, но с core
вместо std
.Это означает, что, если вы не напишите extern crate std;
, ваш ящик не будет зависеть от std
напрямую.
Однако #![no_std]
не влияет на ваши зависимости. Справочник по ржавчине имеет соответствующее предупреждение:
⚠️ Предупреждение. Использование no_std
не препятствует подключению стандартной библиотеки. По-прежнему допустимо вводить extern crate std;
в ящик и зависимости могут также связать его.
Поэтому, если для вашей цели доступно std
, а для одной из ваших зависимостей требуется std
, она сможет использовать ее,С другой стороны, если std
недоступно для цели, то ящики, которые пытаются использовать ее (неявно или явно), не будут компилироваться.