Protocols mutating methods requirements in Swift

protocol Сhain {
    mutating func next()
}

enum Season: IntСhain {
    case Summer, Fall, Winter, Spring
    
    mutating func next() {
        let value = (self.rawValue + 1) % 4
        self = Season(rawValue: value)!
    }
}

var season = Season.Winter
season.next()
season.next()
//season is .Summer