#[derive(Debug)]
struct ArenaHolder<'a, T: ?Sized> {
value: &'a T,
}
impl<'a, T: PartialEq + ?Sized> PartialEq<T> for ArenaHolder<'a, T> {
fn eq(&self, other: &T) -> bool {
self.value == other
}
}
struct Strukt {
a_field: String,
}
impl<'a> ArenaHolder<'a, Strukt> {
fn get_a_field(&self) -> ArenaHolder<'_, str> {
ArenaHolder { value: &self.value.a_field }
}
}
#[cfg(test)]
mod tests {
use super::*;
use googletest::prelude::*;
#[gtest]
fn test() {
let arena = [Strukt { a_field: "hello".into() }];
let holder = ArenaHolder { value: &arena[0] };
let inner_holder = holder.get_a_field();
expect_that!(inner_holder, eq("hello"));
}
}