S
Size: a a a
S
EG
EG
trait Foo {
fn takes_ref(&self);
fn takes_val(self);
}EG
<T: Foo> where &T: Bar тоже выразить нельзя, у тебя нет возможности дописать констрейнтыKR
KR
<T: Foo> where &T: Bar тоже выразить нельзя, у тебя нет возможности дописать констрейнтыEG
KR
EG
[]T, а вызывать интерфейсные функции на *T, то это не сработаетEG
T MyInterface, но это неправда — интерфейс реализован на *TEG
T сразу указатель, но это тоже неправда, так ты не получишь слайсEG
type Foo interface {
Bar()
}
type S struct{}
func (s *S) Bar() {}
func takesFoo[T Foo](vals []T) {
for _, val := range vals {
val.Bar()
}
}
func main() {
var baz []S
takesFoo[S](baz) // Нет, S не имплементирует Bar
takesFoo[*S](baz) // Нет, baz это []S, а не []*S
}KR
KR
KR
.iter() и .into_iter()EG
KR
.map(Into::into).collect()KR
ΑZ
S