Если у меня есть следующая программа:
struct Foo {
a: usize,
b: usize,
}
struct Bar(Foo);
fn unwrap_bars(bars: Vec<Bar>) -> Vec<Foo> {
bars.into_iter().map(|b| b.0).collect()
}
Будет ли unwrap_bars
скомпилирована в функцию идентификации?Если он не скомпилирован в функцию идентификации, то как я могу написать unwrap_bars
, чтобы я сохранил абстракцию нового типа и разрешил бесплатное развертывание коллекции Bar
s?
Я предполагаю, что оболочка нового типа похожаBar
компилируется непосредственно в Foo
без добавления дополнительной памяти.