#include #include String::String(const char* str) { this->_chars = Vec::from_ptr((char*)str, strlen(str)); } size_t String::len() { return this->_chars.len(); } void String::clear() { this->_chars.clear(); } Vec& String::chars() { return this->_chars; } String String::fmt_to_str() { return this->clone(); } char* const String::as_cstr() { return this->_chars.to_ptr(); } void String::push(char c) { this->_chars.push(c); } void String::push_str(String& str) { Vec chrs = str.chars(); for (size_t i = 0; i < chrs.len(); i++) { // SAFETY: Always Valid this->push(*chrs.nth(i).unwrap()); } } void String::push_str(const char* str) { for (size_t i = 0; i < strlen(str); i++) { this->push(str[i]); } } // IMPL: Clone String String::clone() { String s = String(); s._chars = this->_chars.clone(); return s; }