# Rust bindings for the C++ standard library

Disclaimer: This project is experimental, under heavy development, and should
not be used yet.

This directory contains the `cc_std` Rust crate - the crate generated by
`rs_bindings_from_cc` and providing bindings for the C++ standard library.   For
example this crate provides:
- The `cc_std::std::string_view` type alias (corresponding to
  [`std::string_view`](https://en.cppreference.com/w/cpp/header/string_view)
  in C++)
- The `cc_std::tm` struct (corresponding to
  [`tm`](https://en.cppreference.com/w/c/chrono/tm)
  in C++)

In addition to automatically generated bindings, the crate also provides
manually authored trait implementations that supplement the automated bindings.
For example:
- `impl From<&'static str> for string_view`
