2015-05-28 3 views

ответ

7

std::rc::Rc всего лишь реэкспорт alloc::rc::Rc. Вы можете увидеть в src/std/lib.rs, что все rc модуля реэкспорт: pub use alloc::rc;

alloc клети для любого вида распределения памяти. Ссылка подсчитана, в штучной упаковке, исходные распределения и общий доступ к базовому распределителю (часто jemalloc в Rust). Так как тип Rc является таким распространенным типом, что он должен существовать в стандартной библиотеке, но ящик alloc не должен быть частью стандартной библиотеки, только модуль alloc реэкспортируется в стандартную библиотеку. Это избавляет пользователя от необходимости заботиться о ящике alloc и вместо этого предлагает чистую стандартную библиотеку без лишних вещей, которая может быть неудобной в использовании.

+0

Не могли бы вы объяснить, почему они реэкспортируются? –

+0

@ DanielFath: Это просто вопрос гибкости/удобства. С одной стороны, более гибко иметь несколько ящиков низкого уровня ('core',' alloc', 'collections', ...), чтобы низкоуровневые пользователи (например, авторы ядра) могли вишневать только ящики которые могут использоваться в их контексте, а с другой стороны, пользователям удобнее иметь единый ящик ('std'). –