package Sietima::Role::WithMailStore; use Moo::Role; use Sietima::Policy; use Sietima::Types qw(MailStore MailStoreFromHashRef); use namespace::clean; # VERSION # ABSTRACT: role for lists with a store for messages =head1 SYNOPSIS my $sietima = Sietima->with_traits('WithMailStore')->new({ %args, mail_store => { class => 'Sietima::MailStore::FS', root => '/tmp', }, }); =head1 DESCRIPTION This role adds a L<< /C >> attribute. On its own, this role is not very useful, but other roles (like L<< C|Sietima::Role::SubscriberOnly::Moderate >>) can have uses for an object that can persistently store messages. =attr C Required instance of an object that consumes the L<< C >> role. Instead of passing an instance, you can pass a hashref (like in the L): the C key provides the class name, and the rest of the hash will be passed to its constructor. =cut has mail_store => ( is => 'ro', isa => MailStore, required => 1, coerce => MailStoreFromHashRef, ); 1;