---
name: "Type::Nano"
section: "3pm"
platform: "linux"
package: "libtype-tie-perl"
version: "0.015-1"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/Type::Nano"
---

# Type::Nano(3pm)

simple type constraint library for testing

## NAME

Type::Nano - simple type constraint library for testing

## SYNOPSIS

```
  use Type::Nano qw(Int);

  Int->check("42");  # true
```

## RATIONALE

This is a really basic implementation of Type::API::Constraint for testing modules that make use of type constraints, such as Type::Tie.

I'll stress that this module is *only* intended for use in testing. It was created to eliminate Type::Tie's testing dependency on Types::Standard. If your code supports Type::Nano, then your code should also **automatically** support Type::Tiny, Specio, MooseX::Types, and MouseX::Types with no extra effort. (Of course, some of those libraries do have some more features you may want to make extra effort to use! Inlining, for example.)

Type::Nano is not recommended for use in regular application code. Type::Tiny while bigger than Type::Nano, will be *much* faster at runtime, and offers better integration with Moo, Moose, Mouse, and a wide variety of other tools. Use that instead.

All that having been said, Type::Nano is compatible with: Type::Tie, Moo, Type::Tiny (e.g. you can use Type::Tiny's implementation of `"ArrayRef"` and Type::Nano's implementation of `"Int"`, and combine them as `"ArrayRef[Int]"`), Class::XSConstructor, and Variable::Declaration.

## DESCRIPTION

### Object-Oriented Interface

*Constructor*

- "Type::Nano-\>new(%parameters)"

  The constructor supports named parameters called `"name"` (a string), `"constraint"` (a coderef expected to return a boolean), and `"parent"` (a blessed Type::Nano object). Any other parameters passed to the constructor will be stored in the blessed hashred returned, but are ignored by Type::Nano.

*Methods*

Types support the following methods:

- "$type-\>check($value)"

  Checks the value against the constraint; returns a boolean.

- "$type-\>get\_message($failing\_value)"

  Returns an error message. Does not check the value.

Types overload `"&{}"` to do something like:

```
  $type->check($value) or croak($type->get_message($value))
```

### Exports

This module optionally exports the following type constraints:

- •

  Any

- •

  Defined

- •

  Undef

- •

  Ref

- •

  ArrayRef

- •

  HashRef

- •

  CodeRef

- •

  Object

- •

  Str

- •

  Bool

- •

  Num

- •

  Int

It also optionally exports the following functions for creating new type constraints:

- •

  `"type $name, $coderef"` or `"type $coderef"`

- •

  `"class_type $class"`

- •

  `"role_type $role"`

- •

  `"duck_type $name, \@methods"` or `"duck_type \@methods"`

- •

  `"enum $name, \@values"` or `"enum \@values"`

- •

  `"union $name, \@types"` or `"union \@types"`

- •

  `"intersection $name, \@types"` or `"intersection \@types"`

## BUGS

Please report any bugs to \<http://rt.cpan.org/Dist/Display.html?Queue=Type-Tie\>.

## SUPPORT

**IRC:** support is available through in the *#moops* channel on irc.perl.org \<http://www.irc.perl.org/channels.html\>.

## SEE ALSO

Type::API.

## AUTHOR

Toby Inkster \<tobyink@cpan.org\>.

## COPYRIGHT AND LICENCE

This software is copyright (c) 2018-2019 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

## DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
