--- /dev/null
+package MooseX::Types::Data::GUID;
+
+use strict;
+use warnings;
+
+use Data::GUID;
+use MooseX::Types -declare => [qw/ GUID /];
+use Moose::Util::TypeConstraints;
+
+class_type 'Data::GUID';
+subtype GUID, as 'Data::GUID';
+
+coerce 'Data::GUID' =>
+ from Str => via { Data::GUID->from_any_string($_) };
+
+coerce GUID,
+ from Str => via { Data::GUID->from_any_string($_) };
+
+1;
+
+__END__;
+
+=head1 NAME
+
+MooseX::Types::Data::GUID - L<Data::GUID> related constraints and coercions for
+Moose
+
+=head1 SYNOPSIS
+
+Export Example:
+
+ use MooseX::Types::Data::GUID qw(TimeZone);
+
+ has guid => (
+ isa => GUID,
+ is => "rw",
+ coerce => 1,
+ );
+
+ Class->new( guid => "C6A9FE9A-72FE-11DD-B3B4-B2EC1DADD46B");
+
+Namespaced Example:
+
+ use MooseX::Types::Data::GUID;
+
+ has guid => (
+ isa => 'Data::GUID',
+ is => "rw",
+ coerce => 1,
+ );
+
+ Class->new( guid => "C6A9FE9A-72FE-11DD-B3B4-B2EC1DADD46B");
+
+=head1 DESCRIPTION
+
+This module packages several L<Moose::Util::TypeConstraints> with coercions,
+designed to work with L<Data::GUID>.
+
+=head1 AUTHOR
+
+Guillermo Roditi (groditi) E<lt>groditi@cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2008 Guillermo Roditi. This program is free software; you can
+redistribute it and/or modify it under the same terms as Perl itself.
+
+=cut