Я пытаюсь написать функцию, которая принимает любое значение RawRepresentable с помощью CustomStringConvertible. Я попытался написать это:
enum MyEnum: String {
case a = "someString"
}
func myFunction<R: RawRepresentable>(val: R) where R.RawValue == CustomStringConvertible {
print(val.rawValue.description)
}
myFunction(val: MyEnum.a)
Однако я получаю следующую ошибку:
Global function 'myFunction(val:)' requires the types 'String' and 'CustomStringConvertible' be equivalent
Что странно, поскольку String
соответствует CustomStringConvertible
.
Соответствие RawValue
просто String
работает, однако, я хотел бы сделать эту работу с другими CustomStringConvertible
.
Почему это не компилируется, и есть ли способ, которым я могу этого добиться