Как создать псевдоним в Rust 2018?

Я экспериментирую с Rust Edition 2018. У меня есть ящик foo_sys, В Rust 2015 я использовал extern crate foo_sys as foo для удобства, но это не влияет на Rust 2018, так как extern crate больше не нужен:

ошибка [E0463]: не удается найти ящик для foo

2 ответа

Решение

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

Функция переименования-зависимости позволяет импортировать зависимость с другим именем из источника. Это может быть полезно в нескольких сценариях:

  • В зависимости от ящиков с одинаковыми именами из разных реестров.
  • В зависимости от нескольких версий ящика.
  • Избегайте необходимости extern crate foo as bar в источнике ржавчины.

Вместо того чтобы писать

[dependencies]
foo_sys = "0.2"

package ключ может быть добавлен к зависимости в Cargo.toml:

[dependencies]
foo = { package = "foo_sys", version = "0.2" }

Эту функцию можно включить, добавив "rename-dependency" к cargo-features ключ на верхнем уровне манифеста:

cargo-features = ["rename-dependency"]

Это больше не нужно, но синтаксис не удаляется. Так что вы все еще можете сказать:

extern crate foo_sys as foo;

( Пример детской площадки)

Насколько я знаю, нет возможности указать псевдонимы в Cargo.tomlтак что используя extern crate это единственный способ. Я предположил бы, что псевдонимы ящиков становятся более однотипными в Rust 2018, потому что extern crate декларации предположительно станут однотипными.

Другие вопросы по тегам