Как моя библиотека вежливо возвращает типы из другого ящика?

Я делаю игрушечный числовой ящик, и некоторые из моих типов возвращаемых значений представляют собой комплексные числа. Я полагаюсь на num-complex под капотом, но мои типы возвращаемых значений также являются комплексными числами. Я рассматривал вариант простого возврата кортежей значений f64, но это неправильно.

Если бы вы использовали ящик, как бы вы хотели, чтобы это было сделано? Я ненавижу заставлять кого-либо включать зависимость, которая ему не нужна, даже такую ​​хорошо поддерживаемую, как num-complex. Можно ли pub use сложный тип или есть более приемлемый способ?

Спасибо за ваше время!


pub use num_complex::Complex64;
// and return a Complex64 value...

или

use num_complex::Complex64;
// and return a tuple of `f64`?

Если они используют вашу библиотеку, а вы используете зависимость, они все равно включат эту транзитивность. Какую ценность, скрывая, вы пытаетесь достичь?

user1937198 28.07.2024 01:25

Сокрытие зависимости может предотвратить катастрофу semver.

user4815162342 28.07.2024 08:37
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
2
2
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это называется «общественная зависимость».

Правильный способ справиться с этим — в будущем, когда RFC 3516 стабилизируется, пометить зависимость как public = true в Cargo.toml.

Тем временем (а, возможно, и после этого) вы можете (и должны) повторно экспортировать эту зависимость из вашей библиотеки:

pub extern crate num_complex;

Тогда пользователи смогут называть его your_library::num_complex.

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