Why non optional Any can hold nil?
<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>