judgment_fn! {
/// `is_not_downstream(..., P)` means that `P` cannot be instantiated with a type from
/// a downstream crate (i.e., a crate that has us as a dependency).
///
/// NB. Since RFC 2451, the judgment applies to the outermost type only. In other words,
/// the judgment holds for (e.g.) `Vec<T>`, which could be instantiated
/// with something like `Vec<DownstreamType>`, but that is not considered downstream
/// as the outermost type (`Vec`) is upstream.
fn is_not_downstream(
_decls: Program,
env: Env,
assumptions: Predicates,
parameter: Parameter,
) => Constraints {
/* rules omitted */
}
}