Определение члена структуры с закрытыми типами модулей - PullRequest
0 голосов
/ 26 октября 2019

Я использовал несколько модулей, которые имеют функцию build (), которая возвращает структуру. Однако, когда я пытаюсь создать свою собственную "супер" структуру для объединения их вместе, я сталкиваюсь с ошибкой module `xxx` is private rustc(E0603). Если есть черта, я могу передать отдельную переменную в качестве параметра, но не могу понять, как определить / упаковать ее для структуры.

Текущий пример этого я использую при создании гипер-клиента,

// Error due to privacy and cannot use the trait to define the member type
// Both the "hyper_rustls::connector" and "hyper::client::connect::http" modules are private.
struct SecureClient {
    client: hyper::client::Client<
                hyper_rustls::connector::HttpsConnector<hyper::client::connect::http::HttpConnector>> 
}

// Works, but passing the client everywhere as an individual variable is not realistic.
fn use_client(client: hyper::client::Client<impl hyper::client::connect::Connect>) -> () {
    ()
}

let https_conn = hyper_rustls::HttpsConnector::new(4);
let client: hyper::client::Client<_, hyper::Body> = hyper::Client::builder().build(https_conn);

Будучи новичком в Rust, я изо всех сил пытаюсь понять, что такое правильный жаргон для того, что я пытаюсь сделать, не говоря уже о том, чтобы заставить его работать. Будем благодарны за ссылки на любые документы или примеры кода.

Спасибо

1 Ответ

0 голосов
/ 26 октября 2019

Я не уверен, что вы хотите сделать, но вы можете использовать публичный реэкспорт hyper_rustls::HttpsConnector вместо частного hyper_rustls::connector::HttpsConnector и публичный реэкспорт hyper::client::HttpConnector вместо частного hyper::client::connect::http::HttpConnector. Вы можете прочитать о реэкспорте здесь: https://doc.rust -lang.org / book / ch07-04-принесение путей-в-область-с-использованием-ключевого слова.html # re-exporting-names-с-паба использования

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