Можно ли использовать черту Rust только для внутреннего удобства? - PullRequest
0 голосов
/ 13 октября 2019

То есть, я просто хочу реализовать черту внутри и предоставить структуру, другими словами, я ищу способ не нуждаться в строке use foo::Internal; ниже.

mod foo {
    pub struct Foo {}

    pub trait Internal {
        fn foo(&self);
    }

    impl Internal for Foo {
        fn foo(&self) {}
    }
}

use foo::Internal; // <- !!!

fn main() {
    let f = foo::Foo {};
    f.foo();
}

Детская площадка

Теперь я подозреваю, что это невозможно, и если это так, то каковы мои альтернативы? Есть ли способ обернуть все в непрозрачный новый тип, чтобы все черты были сплющены и выставлены вместо этого?

Пропуск вышеупомянутой линии приводит к скважинеПодсказка об известной ошибке:

help: следующая черта реализована, но не входит в область действия, возможно, добавьте для нее `use`

К которой обращались много разно в основном это касается случаев, когда черта предназначена для реализации пользователем, вместо этого здесь мне не нужна способность impl foo::Internal for SomeUserType.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...