title: Why non optional Any can hold nil?
body: <p>In Swift I can declare a constant of type <code>Any</code> and put a <code>String</code> into it.</p>
  
  <pre><code>let any: Any = "hello world"
  </code></pre>
  
  <p>Good. On the other hand I <strong>cannot</strong> put a <code>nil</code> value into <code>any</code> because it's not optional.</p>
  
  <pre><code>let any: Any = nil
  
  error: nil cannot initialize specified type 'Any' (aka 'protocol&lt;&gt;')
  let any: Any = nil
                ^
  </code></pre>
  
  <p>Perfect. But why does the compiler allow me do write the following code?</p>
  
  <pre><code>let couldBeNil: String? = nil
  let any: Any = couldBeNil
  print(any) // nil
  </code></pre>
  
  <p>Doesn't <code>Any</code> follow the Swift rule that only an Optional var/let can be populated with <code>nil</code>?</p>
  
  <blockquote>
    <p>Tested with Xcode Playground 7.2 + Swift 2.1.1</p>
  </blockquote>