# Overview

> What textlane is for and how the Rust crate is built.

Textlane is a Rust-native replacement for [unified](https://unifiedjs.com): a pipeline that
parses text into a syntax tree, runs plugins over it and serializes the result. The pipeline
and its most expensive plugins run in Rust; existing JavaScript plugins can still take part,
called only at the stage where they run.

## Installation

```bash
cargo add textlane
```

It needs Rust 1.88 or later; each domain is a cargo feature, all on by default.

## The Rust crate

`cargo add textlane` adds the crate that holds all of textlane's behaviour. It re-exports one
crate per domain as a module of its name: `textlane::md`, `textlane::html`,
`textlane::mdx` and `textlane::nl`. The npm package loads the same crate as a prebuilt native addon and the PyPI
package as a prebuilt extension, so each language gets the same pipeline at the same version.

## Conformance

Compatibility is defined by a language-neutral conformance suite: JSON cases, each naming a
pipeline, an input and the expected output, ported from the upstream unified, remark, rehype,
retext and MDX test suites. Every implementation runs the same cases.

## Status

Textlane is pre-release. In Rust, `Processor::new().with(plugin)` builds a typed pipeline;
the Node.js and Python packages drive `textlane::Pipeline`, which takes plugins by name with
JSON options and follows unified's `use`, `data` and `freeze`. A binding adds its own
functions as `{host: id}` descriptors: `start_process` and `start_run` pause before them with
the tree as JSON, and `Pause::resume` goes on with the tree they returned.

## Next steps

- [Getting started](/rust/getting-started/) — a first pipeline, syntax extensions and the result
- [Processor](/rust/processor/) — every method of the pipeline
- [Recipes](/rust/recipes/) — pipelines for common jobs
- [Markdown plugins](/rust/markdown-plugins/), [HTML plugins](/rust/html-plugins/),
  [MDX plugins](/rust/mdx-plugins/) and
  [natural language plugins](/rust/natural-language-plugins/) — each plugin and its options
