# 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_printer.

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

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

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

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