# Part of the Crubit project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# Automatically @generated Cargo.toml for the Rust crate token_stream_matchers.

[package]
name = "token_stream_matchers"
edition.workspace = true

license-file.workspace = true
repository.workspace = true
categories.workspace = true

[lib]
path = "../../../common/token_stream_matchers.rs"

[dependencies]
token_stream_matchers_fastpath = { path = "../../../cargo/common/token_stream_matchers_fastpath"}
token_stream_printer = { path = "../../../cargo/common/token_stream_printer"}
anyhow.workspace = true
indenter.workspace = true
proc-macro2.workspace = true
