А нужно именно struct? Иногда пишут Wrapper(который является классом) над структурой. Тебе для SwifyUI? Там просто id точно должен быть разным - получишь кучу багов при анимации из-за diffable - механизма. При создании структ - генерируй свой UUID(), a hash вычисляй уже по полям вручную (в структурах синтезированные методы автоматом генерируются). SwiftUI забросил пока изучать, при анимации вроде именно на id - ориентируется для идентификации View.