title: How to make an enum conform to a protocol in Swift?
body: <p>Swift documentation says that <em>classes</em>, <em>structs</em>, and <em>enums</em> can all conform to protocols, and I can get to a point where they all conform. But I can't get the <em>enum</em> to behave quite like the <em>class</em> and <em>struct</em> examples:</p>
  
  <pre><code>protocol ExampleProtocol {
      var simpleDescription: String { get set }
      mutating func adjust()
  }
  
  class SimpleClass: ExampleProtocol {
      var simpleDescription: String = "A very simple class."
      var anotherProperty: Int = 69105
  
      func adjust() {
          simpleDescription += " Now 100% adjusted."
      }
  }
  
  var a = SimpleClass()
  a.adjust()
  let aDescription = a.simpleDescription
  
  struct SimpleStructure: ExampleProtocol {
      var simpleDescription: String = "A simple structure"
  
      mutating func adjust() {
          simpleDescription += " (adjusted)"
      }
  }
  
  var b = SimpleStructure()
  b.adjust()
  let bDescription = b.simpleDescription
  
  enum SimpleEnum: ExampleProtocol {
      case Base
  
      var simpleDescription: String {
          get {
              return "A Simple Enum"
          }
          set {
              newValue
          }
      }
  
      mutating func adjust() {
          self.simpleDescription += ", adjusted"
      }
  }
  
  var c = SimpleEnum.Base
  c.adjust()
  let cDescription = c.simpleDescription
  </code></pre>
  
  <p>I haven't figured out how to get the <code>simpleDescription</code> to change as a result of calling <code>adjust()</code>.  My example obviously won't do that because the <em>getter</em> has a value hard-coded, but how can I set a value for the <code>simpleDescription</code> while still conforming to the <code>ExampleProtocol</code>?</p>