1#[macro_export]
40#[cfg_attr(feature = "nightly_doc", doc(cfg(feature = "std")))]
41#[cfg_attr(cargo_primary_package, doc(hidden))]
42macro_rules! cdbg {
43 (
45 # $v:expr $(,)?) => { match $v { v => { eprintln!("{} = {:#?}", stringify!($v), &v); v } } };
47 (# $($v:expr),+ $(,)?) => { ($($crate::cdbg![# $v]),+,) };
48 (
49 $(@)? $v:expr $(,)?) => { match $v { v => { eprintln!("{} = {:?}", stringify!($v), &v); v } } };
52 ($($v:expr),+ $(,)?) => { ($($crate::cdbg![$v]),+,) };
53 (
54
55 $n:literal @ $v:expr $(,)?) => {{
58 if $crate::cif!(diff($n, 0)) {
59 let (path, mut new_path) = (std::path::Path::new(file!()), std::path::PathBuf::new());
60 for c in path.components().rev().take($n).collect::<Vec<_>>().into_iter().rev() {
61 new_path.push(c.as_os_str()); }
62 eprint!("[{}:{}:{}] ", new_path.display(), line!(), column!());
63 }
64 $crate::cdbg![$v]
65 }};
66 ($n:literal @ $($v:expr),+ $(,)?) => { ($( $crate::cdbg![$n@ $v] ),+,) };
67 ($n:literal @) => {{
68 let (path, mut new_path) = (std::path::Path::new(file!()), std::path::PathBuf::new());
69 for c in path.components().rev().take($n).collect::<Vec<_>>().into_iter().rev() {
70 new_path.push(c.as_os_str()); }
71 eprintln!("[{}:{}:{}]", new_path.display(), line!(), column!())
72 }};
73 ($n:literal # $v:expr $(,)?) => {{
75 if $crate::cif!(diff($n, 0)) {
76 let (path, mut new_path) = (std::path::Path::new(file!()), std::path::PathBuf::new());
77 for c in path.components().rev().take($n).collect::<Vec<_>>().into_iter().rev() {
78 new_path.push(c.as_os_str()); }
79 eprint!("[{}:{}:{}] ", new_path.display(), line!(), column!());
80 }
81 $crate::cdbg![# $v]
82 }};
83 ($n:literal # $($v:expr),+ $(,)?) => { ($( $crate::cdbg![$n # $v] ),+,) };
84 ($n:literal #) => {{
85 let (path, mut new_path) = (std::path::Path::new(file!()), std::path::PathBuf::new());
86 for c in path.components().rev().take($n).collect::<Vec<_>>().into_iter().rev() {
87 new_path.push(c.as_os_str()); }
88 eprintln!("[{}:{}:{}]", new_path.display(), line!(), column!())
89 }};
90 (
91
92 f @ $v:expr $(,)?) => {{
94 eprint!("[{}:{}:{}] ", file!(), line!(), column!());
95 $crate::cdbg![$v]
96 }};
97 (f @ $($v:expr),+ $(,)?) => { ($($crate::cdbg![f @ $v]),+,) };
98 (f @) => { eprintln!("[{}:{}:{}]", file!(), line!(), column!()) };
99 (f # $v:expr $(,)?) => {{
101 eprint!("[{}:{}:{}] ", file!(), line!(), column!());
102 $crate::cdbg![# $v]
103 }};
104 (f # $($v:expr),+ $(,)?) => { ($($crate::cdbg![f # $v]),+,) };
105 (f #) => { eprintln!("[{}:{}:{}]", file!(), line!(), column!()) };
106 (
107 fln @ $v:expr $(,)?) => {{
109 eprintln!("[{}:{}:{}]", file!(), line!(), column!());
110 $crate::cdbg![$v]
111 }};
112 (fln @ $($v:expr),+ $(,)?) => { ($($crate::cdbg![fln @ $v]),+,) };
113 (fln @) => { eprintln!("[{}:{}:{}]", file!(), line!(), column!()) };
114 (fln # $v:expr $(,)?) => {{
116 eprintln!("[{}:{}:{}]", file!(), line!(), column!());
117 $crate::cdbg![# $v]
118 }};
119 (fln # $($v:expr),+ $(,)?) => { ($($crate::cdbg![fln # $v]),+,) };
120 (fln #) => { eprintln!("[{}:{}:{}]", file!(), line!(), column!()) };
121 () => { () };
123}
124#[doc(inline)]
125pub use cdbg;