Я делаю игрушечный числовой ящик, и некоторые из моих типов возвращаемых значений представляют собой комплексные числа. Я полагаюсь на 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`?
Сокрытие зависимости может предотвратить катастрофу semver.
Это называется «общественная зависимость».
Правильный способ справиться с этим — в будущем, когда RFC 3516 стабилизируется, пометить зависимость как public = true
в Cargo.toml.
Тем временем (а, возможно, и после этого) вы можете (и должны) повторно экспортировать эту зависимость из вашей библиотеки:
pub extern crate num_complex;
Тогда пользователи смогут называть его your_library::num_complex
.
Если они используют вашу библиотеку, а вы используете зависимость, они все равно включат эту транзитивность. Какую ценность, скрывая, вы пытаетесь достичь?