У меня есть Message<'a>
, у которого есть &'a str
ссылки на в основном недолговечный буфер. Эти ссылки предписывают определенный c программный поток, поскольку они гарантированно никогда не переживут время жизни 'a
буфера.
Теперь я также хочу иметь собственную версию Message
, так что она может перемещаться, отправляться через потоки и т. д. c.
Существует ли способ достижения этой цели? Я думал, что Cow<'a, str>
может помочь, но, к сожалению, Cow
магически не выделяется в случае, если &'a str
переживет время жизни буфера.
AFAIK, Cow
не является особенным в том смысле, что независимо от того, если Cow
содержит вариант Owned
, он все равно должен пройти проверку заимствования на 'a
.
Определение std::borrow::Cow
.
pub enum Cow<'a, B> {
Borrowed(&'a B),
Owned(<B as ToOwned>::Owned),
}
Есть идиоматизм c способ иметь собственный вариант Message
? По какой-то причине у нас есть &str
и String
, &[u8]
и Vec<u8>
, ... означает ли это, что люди обычно go для &msg
и Message
?
Полагаю Мне все еще нужно подумать о том, действительно ли нужен собственный вариант, но мой опыт показывает, что наличие аварийного люка для собственных вариантов обычно повышает скорость создания прототипов.