title: What's the purpose of writing bindings for C libraries for Rust?
body: <p>I was under the impression that bindings are intermediate layers you write so that you may use a library written in one language in an application written in another. It seems that Rust may <a href="http://blog.rust-lang.org/2015/04/24/Rust-Once-Run-Everywhere.html">call C with zero overhead</a></p>
  
  <p>For a concrete example, Vulkan is a C API, yet people are working on bindings for Vulkan (<a href="https://github.com/kainino0x/rust-vulkan-bind">1</a>, <a href="https://gist.github.com/bonsairobo/a21b768c49989415251d">2</a>, <a href="https://github.com/tomaka/vulkano">3</a>).</p>
  
  <p>If C can be called directly from Rust, why would you want to create bindings? Have I misunderstood something?</p>