Я понимаю, что это незаконно в Руст:Возможно наличие структуры/кортежа признаков в Rust?
trait A { }
struct S { a: A, b: A }
Причина заключается в том, что все члены, кроме последнего, должны иметь размеры, и черта не размера.
Означает ли это, что невозможно иметь структуру/кортеж черт? Как мне вернуть пару значений из функции, и я знаю только, что они реализуют определенный признак?
Спасибо. Я думаю, что S3 - это то, что я ищу, но как это объявление делает размер структуры таким, чтобы компилятор не жаловался? – rityzmon
@ rityzmon, это потому, что 'A1' и' A2' будут действительными типами при создании экземпляров, которые имеют размер, хотя черта 'A' не является. Вам нужно будет указать тип 'A1' и' A2', когда вы используете общую структуру вашего кода. Вот как (и когда) компилятор знает размер ваших типов, потому что вы буквально говорите компилятору, что именно такие типы. – WiSaGaN
Спасибо. И как бы я использовал ту же технику, если я хочу вернуть кортеж признаков из функции? Одна конкретная проблема, которую я пытаюсь выяснить, - это «trait T {fn func (& self, x: & Self) -> (Self, Self); } '. Единственная функция в признаке принимает другой объект того же типа и возвращает еще два объекта одного типа. – rityzmon