Files
Pocket-Poster/Pocket Poster/Extensions/Reorderable.swift
T
2025-06-22 15:59:01 -04:00

31 lines
660 B
Swift

//
// Reorderable.swift
// Pocket Poster
//
// Created by lemin on 6/22/25.
//
import Foundation
protocol Reorderable {
associatedtype OrderElement: Equatable
var orderElement: OrderElement { get }
}
extension Array where Element: Reorderable {
func reorder(by preferredOrder: [Element.OrderElement]) -> [Element] {
sorted {
guard let first = preferredOrder.firstIndex(of: $0.orderElement) else {
return false
}
guard let second = preferredOrder.firstIndex(of: $1.orderElement) else {
return true
}
return first < second
}
}
}