Возможно ли как-то сделать это? Я хочу захватить перечисление, где его rawValue == String, но также CaseIterable.
rawValue
String
CaseIterable
protocol StringCases: CaseIterable where AllCases.Type == String { }
CaseIterable не имеет необработанных значений. Это RawRepresentable .
protocol StringCase: CaseIterable, RawRepresentable where RawValue == String { }
Кроме того, каждый из них является "случаем", а не "делом", поэтому оставьте это "s"!