В чем разница между core :: str :: FromStr и std :: str :: FromStr? [Дубликат]

Синглтон - это шаблон, который можно использовать или злоупотреблять так же, как и любой другой инструмент.

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

6
задан Chris Morgan 11 March 2016 в 23:44
поделиться

2 ответа

Нет двух признаков. Существует одна черта, которая экспортируется под несколькими взаимозаменяемыми именами. Это далеко не единственный . Практически все в core также экспортируется из std и практически всегда находится на одном и том же пути (т. Е. Вы можете просто заменить префикс «core» на «std»).

которую вы должны использовать: Если у вас есть причина не ссылаться на стандартную библиотеку (#![no_std]), то std::* один из них недоступен, поэтому очевидно, что вы используете core::*. Если, с другой стороны, вы do используете стандартную библиотеку, вы должны использовать ремаркетинг std::*. Это более обычное дело и требует меньшего набора текста.

10
ответ дан user 18 August 2018 в 18:57
поделиться
  • 1
    Что делать, если я создаю библиотеку, которая не должна использовать материал std. Должен ли я всегда отмечать его как #![no_std], чтобы другие ящики не использовали его? Что делать, если я не отмечаю его #![no_std] и использую std::ops::Add: могут ли другие ящики-нет использовать мой ящик? – Lukas Kalbertodt 12 March 2016 в 00:40
  • 2
    @LukasKalbertodt Соглашения об этом до сих пор не ясны. Вы не можете использовать ящик std из no_std, даже если это используется для использования подмножества std, которое также находится в core, что было бы основанием для его применения. Но если ящик no_std позже найдет причину для начала в зависимости от std, это будет изменением, поэтому некоторые люди опасаются быть слишком no_std - счастливыми. – user 12 March 2016 в 00:57

Они на самом деле точно такие же, несмотря на то, что набор разработчиков представлен как немного отличающийся.

Библиотека core предназначена для задач с нечетным металлом / низким уровнем, и, таким образом, больше, чем std может предоставить, предположив, что существует операционная система. Тем не менее, люди, использующие std, захотят, чтобы материал, который находится в core тоже (например, Add или Option или что-то еще), и поэтому, чтобы не загружать как std, так и core, std реэкспорты все от core, через pub use . То есть, std предоставляет пути псевдонимов / импорта для вещей в core.

Есть некоторые неудачные сообщения об ошибках , где компилятор указывает на исходный источник элемента , а не реэкспорт, который может быть не в ящике extern crate.

11
ответ дан huon 18 August 2018 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: