usecrate::{prelude::*,};/// Target is a shape that is able to uniformly draw a random vector
/// pointing to itself from any given point in space.
pubtraitTarget: Pack + Instance<TargetClass> {}/// Device interface for target.
pubenumTargetClass{}implClass forTargetClass{fnname()-> String{"target".to_string()}fnmethods()->Vec<String>{vec!["sample".to_string(),]}}/// The shape that could be put inside the specified bound.
pubtraitTargeted<T: Target> {/// Returns target shape and the brightness.
////// Brightness is used to compute ray attraction probability
/// during the importance sampling process.
fntarget(&self)->Option<(T, f64)>;}