если у нее внутри есть какие-нибудь данные вроде
Foo.data: String, то Foo - монада, если для нее есть функция
fn modify(foo: &Self, modificator: Fn(String) -> Foo) -> Foo,
которая возвращает новый Foo с .data, полученной путем вызова modificator с аргументом foo,
ну и какой-нибудь способ вытащить потом эту .data для использования вне функции modify