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

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

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

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

[dependencies]
arc_anyhow = { path = "../../../cargo/common/arc_anyhow"}
heck.workspace = true
phf.workspace = true
proc-macro2.workspace = true
quote.workspace = true
syn.workspace = true
unicode-ident.workspace = true
