#rust #compiler-errors
#Ржавчина #ошибки компилятора
Вопрос:
Я хочу использовать две внешние библиотеки (geo-types-0.6.0 и geo-offset-0.1.0) для выполнения геометрических алгоритмов.
Приведенный ниже пример кажется прекрасным: Line
тип определен в библиотеке geo_types
. Offset
Признак, кроме того, записан в geo_offset
. Включение этого признака должно привести к Line
типу, реализующему метод offset
. Однако я получаю следующую ошибку:
no method named `offset` found for struct `geo_types::line::Line<float>` in the current scope
В дополнение к этому, rust-analyzer
в VS Code мне сообщается, что включенный признак Offset
не используется. Почему это?
use geo_types::{Coordinate, Line};
use geo_offset::Offset;
let line = Line::new(
Coordinate { x: 0.0, y: 0.0 },
Coordinate { x: 1.0, y: 8.0 },
);
let line_with_offset = line.offset(2.0)?;
Ответ №1:
geo-offset
Ящик реализует Offset
признак для geo::Line
, а не geo_types::Line
(src — поиск geo::Line
). Так что даже в этом случае geo::Line
это просто реэкспорт geo_types::Line
, компилятор rust не видит этого глубоко и знает только о Offset
реализации для geo::Line
.
Комментарии:
1. Может быть, потому, что пример в geo-offset неверен и показывает только то, что вы сделали? Возможно, стоит сообщить об ошибке с ними…
2. @Nevsden также обычно принимает ответ, если он устраняет проблему. Это сигнализирует о том, что «эта проблема решена».
3. Еще раз спасибо, просто отметил ваш ответ как решение. К вашему другому комментарию: Да, это, вероятно, так, я сообщу об этом.