content: [workspace]
  members = [
    "application/placeholder",
    "math/algebra",
    "math/geometry",
    "math/statistics",
    "utility/event-source",
    "utility/query",
    "utility/query-hook",
    "utility/arena",
    "utility/anymap",
    "utility/storage",
    "utility/abstract-tree",
    "utility/abstract-graph",
    "utility/database",
    "utility/heap-tools",
    "utility/interning",
    "utility/hook",
    "utility/fast-hash-collection",
    "utility/reuse-pool",
    "content/animation",
    "content/color",
    "content/mesh/core",
    "content/mesh/generator",
    "content/mesh/simplification",
    "content/mesh/segmentation",
    "content/mesh/lod-graph",
    "content/mesh/test-util",
    "content/texture/core",
    "content/texture/types",
    "content/texture/packer",
    "content/texture/gpu-base",
    "content/texture/gpu-process",
    "content/texture/gpu-system",
    "content/texture/loader",
    "content/texture/exporter",
    "content/lighting/core",
    "content/lighting/ltc",
    "content/lighting/ibl",
    "content/lighting/transport",
    "content/lighting/punctual",
    "content/lighting/gpu-system/shadow-map",
    "content/lighting/gpu-system/lighting-system",
    "content/space",
    "content/virtualization",
    "shader/api",
    "shader/derive",
    "shader/backends/naga",
    "shader/library",
    "shader/parallel-compute",
    "shader/task-graph",
    "shader/ray-tracing",
    "shader/fast-down-sampling-2d",
    "scene/core",
    "scene/rendering/gpu-base",
    "scene/rendering/gpu-gles",
    "scene/rendering/gpu-indirect",
    "scene/rendering/occlusion-culling",
    "scene/rendering/frustum-culling",
    "scene/rendering/gpu-ray-tracing",
    "scene/rendering/mesh-lod-graph",
    "scene/rendering/oit",
    "scene/io/obj/loader",
    "scene/io/gltf/loader",
    "scene/io/gltf/exporter",
    "scene/geometry-query",
    "platform/event-input",
    "platform/graphics/webgpu",
    "platform/graphics/webgpu-hook-utils",
    "platform/graphics/webgpu-virtual-buffer",
    "platform/graphics/webgpu-midc-downgrade",
    "platform/graphics/webgpu-texture-as-buffer",
    "extension/controller",
    "extension/view-override-model",
    "extension/barycentric-solid-line",
    "extension/gui-3d",
    "extension/state-override",
    "extension/infinity-primitive",
    "extension/wide-line",
    "extension/gizmo",
    "extension/area-lighting",
    "application/viewer",
    "xtask",
  ]
  
  # https://doc.rust-lang.org/nightly/cargo/reference/features.html#feature-resolver-version-2
  resolver = "2"
  
  # https://rust-lang.github.io/rfcs/2906-cargo-workspace-deduplicate.html
  [workspace.dependencies]
  serde = { version = "1", features = ["derive", "rc"] }
  facet = "0.27.16"
  rayon = "1.7.0"
  bitflags = "2.2"
  bumpalo = "3.17.0"
  disqualified = "1.0.0"
  image = "0.25.8"
  bytemuck = { version = "1.4.1", features = ["derive"] }
  dyn-clone = "1.0.5"
  walkdir = "2"
  dashmap = { version = "5.5.3", features = ["rayon"] }
  futures = "0.3.25"
  log = "0.4"
  once_cell = "1.4.0"
  paste = "1.0.2"
  pin-project = "1.0.12"
  smallvec = { version = "1.9.0", features = ["write", "serde"] }
  winit = "0.30.7"
  derivative = "2.2.0"
  proc-macro2 = "1.0.4"
  quote = "1.0.2"
  syn = { version = "1.0.11", features = ["full"] }
  tracing = "0.1"
  rand = "0.9.2"
  pollster = { version = "0.3.0", features = ["macro"] }
  thiserror = "1.0.43"
  anyhow = "1.0.93"
  parking_lot = { version = "0.12.1", features = ["send_guard"] }
  criterion = { version = "0.5.1", features = ["html_reports"] }
  wgpu-types = { version = "27", features = ["serde"] }
  wgpu = { version = "27", features = [
    "naga-ir",
    "fragile-send-sync-non-atomic-wasm",
  ] }
  naga = { version = "27", features = ["wgsl-out"] }
  web-time = "1.1.0"
  
  
  # https://doc.rust-lang.org/cargo/reference/profiles.html
  
  # currently our implementation not provide panic safety and panic recovery
  # and also, enable unwinding affect performance and bloat binary.
  
  [profile.dev]
  panic = "abort"
  
  [profile.dev.package.zune-jpeg]
  opt-level = 3
  [profile.dev.package.gltf]
  opt-level = 3
  
  
  [profile.release]
  panic = "abort"
  strip = "symbols" # see https://github.com/rust-lang/rust/issues/139950
  
  # used when you are profiling in release but want debug symbol enabled
  [profile.profiling]
  opt-level = 3
  inherits = "dev"
  
  [patch.crates-io]
  # wgpu = { path = "../references/wgpu/wgpu" }
  # wgpu-types = { path = "../references/wgpu/wgpu-types" }
  # wgpu-core = { path = "../references/wgpu/wgpu-core" }
  # wgpu-hal = { path = "../references/wgpu/wgpu-hal" }
  # naga = { path = "../references/wgpu/naga" }
  
  # https://github.com/rust-lang/rfcs/blob/master/text/3389-manifest-lint.md
  [workspace.lints.clippy]
  
  # we don't care the performance win if the Arc could be replaced by Rc
  arc_with_non_send_sync = "allow"
  type_complexity = "allow"
  box_default = "allow"
  too_many_arguments = "allow"
  # we may copy code from f64 codebase to f32 type, f32 may upgrade to f64 in future
  excessive_precision = "allow"
  # i know it's bad but..
  missing_transmute_annotations = "allow"
  
  large_futures = "warn"
  
  [workspace.lints.rust]
  # we trust incomplete rust feature than unsafe workaround
  incomplete_features = "allow"
  