Ben,
Create your role Persistent which requires a number of the methods
from MooseX::Storage and supplies the API that you want. If $storage
is something that does MooseX::Storage, you can then turn it into a
Persistent thing with:
Persistent->meta->apply($storage);
But this is hiding the implementation from the wrong thing, at least for
my purposes. :-)
That is, given that $storage is an instance of type Foo (let's say),
then Persistent doesn't know that Foo is implemented in terms of
MooseX::Storage. But what I'm looking for is a way that Foo won't know
that _Persistent_ is implemented in terms of MooseX::Storage.
That make sense? Beause then Foo's code won't need to change if I want
to swap out back-ends; only Persistent's code will need to change, and
then everything that is Persistent will magically use the new back-end.
-- Buddy
(PS: how's the new job going? :-) )