# Build
rust-project.json
user.bazelrc
.bazelrc-site
/bazel-*
/out
target/rust-analyzer/

# Editors
.pw_ide/
.vscode/settings.json
.vscode/tasks.json
.vscode/pw_user_*.json
.vscode/*.bak.json
.idea/
.project
.cproject
.clangd
.clangd/
*.swp
*.swo
.#*

# Git
*.orig
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt

# Other
pw_console-*logs.txt
.pw_console.user.yaml



# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
# Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# OS files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Logs
*.log

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/
*.lcov

# nyc test coverage
.nyc_output

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.production
.env.local

# Backup files
*.bak
*.backup

# Temporary files
*.tmp
*.temp


# Local configuration
.cargo/config
!.cargo/config.toml

# Documentation build
/docs/book/

# Flamegraph output
flamegraph.svg
perf.data*

# Criterion benchmark output
criterion/

# Profiling data
*.profraw

# Cache directories
.cache/

# Local development
*.local

# Build scripts
build.rs.bk

# Python bytecode
__pycache__/
*.pyc
