use crate::sealed::Sealed;
pub trait Residue: Sealed + Copy + 'static {
const N_CHI: usize;
const N_ROTAMERS: usize;
const NAME: &'static str;
type Rot: Copy + 'static;
type Iter: Iterator<Item = Self::Rot> + ExactSizeIterator;
fn rotamers(phi: f32, psi: f32) -> Self::Iter;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Arg;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Asn;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Asp;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Cpr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Cyd;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Cyh;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Cys;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Gln;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Glu;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct His;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Ile;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Leu;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Lys;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Met;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Phe;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Pro;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Ser;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Thr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Tpr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Trp;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Tyr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Val;