| Crates.io | owned_str |
| lib.rs | owned_str |
| version | 0.1.2 |
| created_at | 2025-01-29 23:26:41.848848+00 |
| updated_at | 2025-04-03 22:25:39.137985+00 |
| description | Provide a stack allocated String for no-std or const environement |
| homepage | |
| repository | https://github.com/Baptistemontan/owned_str |
| max_upload_size | |
| id | 1535891 |
| size | 60,153 |
This crate offers a stack equivalent to a String where you can choose the buffer size.
This as 2 benefits:
#![no_std].const, so you can create/manipulate strings at compile time.use owned_str::{OwnedStr, UnsizedStr};
const fn make_str() -> OwnedStr<16> {
let mut buff = OwnedStr::new();
// you can use `unsize_mut` to get a size erased handle
let s: &mut UnsizedStr = buff.unsize_mut();
s.push_str("hello");
push_world(s);
buff
}
const fn push_world(s: &mut UnsizedStr) {
s.push(' ');
s.push_str("world");
s.pop();
}
const S: &str = make_str().as_str();
fn main() {
assert_eq!(S, "hello worl");
// allow stack based string formatting
use std::fmt::Write;
let mut buff = OwnedStr::<32>::new();
write!(&mut buff, "format {} arguments", "some").unwrap();
assert_eq!(buff, "format some arguments");
}
If you would like to see a String method not already implemented, or a str method that could be made const, feel free to open an issue on github and PR are welcome!