[![Actions Status](https://github.com/syohex/p5-List-Utils-By/workflows/CI/badge.svg)](https://github.com/syohex/p5-List-Utils-By/actions) [![MetaCPAN Release](https://badge.fury.io/pl/List-UtilsBy-XS.svg)](https://metacpan.org/release/List-UtilsBy-XS)
# NAME

List::UtilsBy::XS - XS implementation of List::UtilsBy

# SYNOPSIS

    use List::UtilsBy::XS qw(sort_by);

    sort_by { $_->{foo} } @hash_ref_list

You can use those functions same as List::UtilsBy ones,
but some functions have limitation. See [LIMITATION](https://metacpan.org/pod/LIMITATION) section.

# DESCRIPTION

List::UtilsBy::XS is XS implementation of List::UtilsBy.
Functions are more fast than original ones.

# FUNCTIONS

Same as [List::UtilsBy](https://metacpan.org/pod/List%3A%3AUtilsBy)

List::UtilsBy::XS implements following functions.

- sort\_by
- nsort\_by
- rev\_sort\_by
- rev\_nsort\_by
- max\_by (alias nmax\_by)
- min\_by (alias nmin\_by)
- uniq\_by
- partition\_by
- count\_by
- zip\_by
- unzip\_by
- extract\_by
- weighted\_shuffle\_by
- bundle\_by

# LIMITATIONS

Some functions are implemented by lightweight callback API.
`sort_by`, `rev_sort_by`, `nsort_by`, `rev_nsort_by`,
`min_by`, `max_by`, `nmin_by`, `nmax_by`, `uniq_by`, `partion_by`,
`count_by`, `extract_by`, `weighted_shuffle_by` are limited some features.

Limitations are:

## Don't change argument `$_` in code block

[List::UtilsBy](https://metacpan.org/pod/List%3A%3AUtilsBy) localizes `$_` in the code block, but List::UtilsBy::XS
doesn't localize it and it is only alias same as `map`, `grep`. So you
should not modify `$_` in callback subroutine.

## Can't access to arguments as `@_` in code block

You can access argument as only `$_` and cannot access as `@_`,
`$_[n]`.

# AUTHOR

Syohei YOSHIDA <syohex@gmail.com>

# COPYRIGHT

Copyright 2013- Syohei YOSHIDA

# LICENSE

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

# SEE ALSO

[List::UtilsBy](https://metacpan.org/pod/List%3A%3AUtilsBy)