Add rust::String(const char *, size_t) constructor
diff --git a/src/cxx.cc b/src/cxx.cc
index eb86d3d..8614d39 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -55,16 +55,11 @@
String::~String() noexcept { cxxbridge03$string$drop(this); }
-String::String(const std::string &s) {
- auto ptr = s.data();
- auto len = s.length();
- if (!cxxbridge03$string$from(this, ptr, len)) {
- panic<std::invalid_argument>("data for rust::String is not utf-8");
- }
-}
+String::String(const std::string &s) : String(s.data(), s.length()) {}
-String::String(const char *s) {
- auto len = std::strlen(s);
+String::String(const char *s) : String(s, std::strlen(s)) {}
+
+String::String(const char *s, size_t len) {
if (!cxxbridge03$string$from(this, s, len)) {
panic<std::invalid_argument>("data for rust::String is not utf-8");
}