pub fn with_left_right<D, L, R>(dir: D, left: L, right: R) -> Range<T>
    where
        RangeDir: From<D>,
        T: From<L> + From<R>,
    {
        Range {
            dir: dir.into(),
            left: left.into(),
            right: right.into(),
        }
    }
/// Create a range from left and right bounds.
///
/// # Example
///
/// ```
/// use moore_vhdl::ty2::{IntegerRange, RangeDir};
///
/// let a = IntegerRange::with_left_right(RangeDir::To, 0, 42);
/// let b = IntegerRange::with_left_right(RangeDir::Downto, 42, 0);
///
/// assert_eq!(format!("{}", a), "0 to 42");
/// assert_eq!(format!("{}", b), "42 downto 0");
/// ```
Create a range from left and right bounds.
Create a range from left and right bounds .
pub fn with_left_right<D, L, R>(dir: D, left: L, right: R) -> Range<T>
    where
        RangeDir: From<D>,
        T: From<L> + From<R>,
    {
        Range {
            dir: dir.into(),
            left: left.into(),
            right: right.into(),
        }
    }
pub fn with_left_right < D , L , R > ( dir : D , left : L , right : R ) -> Range < T > where RangeDir : From < D > , T : From < L > + From < R > , { Range { dir : dir . into ( ) , left : left . into ( ) , right : right . into ( ) , } }
Create a range from left and right bounds.
Create a range from left and right bounds .
dir
D
left
L
right
R
dir
D
left
L
right
R
example
```
use moore_vhdl::ty2::{IntegerRange, RangeDir}.

let a = IntegerRange::with_left_right(RangeDir::To, 0, 42);
let b = IntegerRange::with_left_right(RangeDir::Downto, 42, 0).


` ` ` use moore_vhdl :: ty2 :: { IntegerRange RangeDir } . let a = IntegerRange :: with_left_right ( RangeDir :: To 0 42 ) ; let b = IntegerRange :: with_left_right ( RangeDir :: Downto 42 0 ) .