Имена дефисных ящиков - это изменения в подчеркнутых именах - PullRequest
0 голосов
/ 22 марта 2020

Сценарий

Я создаю новый проект автомобиля go с командной строкой: cargo new --lib hyphen-crate.

Файл src/lib.rs содержит функцию:

pub fn add(a: u32, b: u32) -> u32 {
    a + b
}

Файл tests/addition.rs содержит функцию теста:

use hyphen_crate::add;

#[test]
fn addition_test() {
    assert_eq!(5, add(2, 3));
}

Автомобиль go .toml

[package]
name = "hyphen-crate"
version = "0.1.0"
authors = ["xolve"]
edition = "2018"

[dependencies]

Вопрос

Я искал его в Интернете и видел много дискуссий о том, следует ли разрешать дефисы в именах ящиков или пакетов, но ни одна ссылка не упоминает о решении.

Вот что я вижу, это имя ящика hyphen-crate автоматически преобразуется в подчеркивание как hyphen_crate и успешно компилируется и тестируется.

Почему это возможно и каковы правила именования в таком неоднозначном сценарии ios?

1 Ответ

2 голосов
/ 22 марта 2020

Дефисы разрешены в именах пакетов, но они внутренне преобразуются в подчеркивания, поскольку дефисы не являются допустимыми символами в Идентификаторы ржавчины .

Похоже, что это автоматическое преобразование c было не всегда так, и ящики с дефисами пришлось переименовывать вручную, чтобы импортировать их; например. extern crate "hyphen-crate" as hyphen_crate;. См. Дефис, считающийся вредным RF C для получения более подробной информации об этом.

...