Если Topping
мало (например, enum
), то вы можете просто скопировать его (например, в Vec<Topping>
).
Если Topping
велико и вам нужна только одна копия впамяти, с которой проще всего работать - это использовать Arc<Topping>
, который является общим указателем, и его можно дешево клонировать и легко передавать (например, в Vec<Arc<Topping>>
).
Если оба Pizza
и Topping
используются только в определенной статически известной области (например, вы создаете все начинки в main()
и не меняете их позже, или используете пул памяти), вы можете избежать использования &'a Topping
в Pizza<'a>
, но это, вероятно, незначительно улучшит производительность по сравнению с Rc
/ Arc
, и отслеживание временного срока службы будет раздражать.