# pooled-writer

<p align="center">
  <a href="https://github.com/fulcrumgenomics/pooled-writer/actions?query=workflow%3ACheck"><img src="https://github.com/fulcrumgenomics/pooled-writer/actions/workflows/build_and_test.yml/badge.svg" alt="Build Status"></a>
  <img src="https://img.shields.io/crates/l/read_structure.svg" alt="license">
  <a href="https://crates.io/crates/pooled-writer"><img src="https://img.shields.io/crates/v/pooled-writer.svg?colorB=319e8c" alt="Version info"></a><br>
</p>

A pooled writer and compressor.

<p>
<a href="https://fulcrumgenomics.com">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset=".github/logos/fulcrumgenomics-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset=".github/logos/fulcrumgenomics-light.svg">
  <img alt="Fulcrum Genomics" src=".github/logos/fulcrumgenomics-light.svg" height="100">
</picture>
</a>
</p>

[Visit us at Fulcrum Genomics](https://www.fulcrumgenomics.com) to learn more about how we can power your Bioinformatics with pooled-writer and beyond.

<a href="mailto:contact@fulcrumgenomics.com?subject=[GitHub inquiry]"><img src="https://img.shields.io/badge/Email_us-%2338b44a.svg?&style=for-the-badge&logo=gmail&logoColor=white"/></a>
<a href="https://www.fulcrumgenomics.com"><img src="https://img.shields.io/badge/Visit_Us-%2326a8e0.svg?&style=for-the-badge&logo=wordpress&logoColor=white"/></a>

This library is intended for scenarios where the number of writers you have is >= the number of threads you want to use for writing.

Note that this is an alpha release and the API could change drastically in future releases.

## Documentation and Examples

Please see the generated [Rust Docs](https://docs.rs/pooled-writer).

## How to use in your project

Add the following to your `Cargo.toml` dependencies section, updating the version number as needed.

```toml
[dependencies]
pooled-writer = "*"
```

By default this will come with a BGZF compressor. If that is not needed then add the `default-features = true` specifier to the dependency declaration above (i.e. `pooled-writer = {version = "*", default-features = false}`).

## How to build and test locally

Assuming you have cloned the repo and are in the top level:

```bash
cargo test
# The following test is more comprehensive and may take up to 10 minutes to run
cargo test -- --ignored
```

## How to publish

This assumes that you have installed `cargo-release` via `cargo install cargo-release` and have set up credentials with `crates.io`.

```bash
cargo release <patch|minor|major>
```
