pub struct BondData {
pub begin: u32,
pub end: u32,
pub order: BondOrder,
pub direction: BondDirection,
pub stereo: BondStereo,
pub stereo_atoms: [u32; 2],
pub flags: BondFlags,
}Expand description
单条键的可变数据。端点为分子内局部原子下标。
Fields§
§begin: u32起点原子(局部下标)
end: u32终点原子(局部下标)
order: BondOrder键级
direction: BondDirectionSMILES 方向键 / \
stereo: BondStereo双键立体。由 omgkit-io 的 stereo::perceive_bond_stereo 从 direction 感知,
与 stereo_atoms 配套。
stereo_atoms: [u32; 2]顺/反的参照原子:[begin 侧一个, end 侧一个]。
只有 stereo 不是 BondStereo::None 时有意义,那时两个下标都合法。
无参照时是 BondData::NO_STEREO_ATOM。
§为什么必须存
“顺“与“反“离开参照就没有意义 —— 一根双键两端各有两个取代基,说 “同侧“总得回答“谁和谁同侧”。
这也是它与 BondData::direction 的分工:方向是写法,依附于
某根单键,那根键被删掉信息就没了;顺反是双键自己的属性,只要
两个参照原子还在就一直成立。图编辑之后要重新写出方向键,靠的是这一对。
flags: BondFlags标志位
Implementations§
Source§impl BondData
impl BondData
Sourcepub const NO_STEREO_ATOM: u32 = u32::MAX
pub const NO_STEREO_ATOM: u32 = u32::MAX
BondData::stereo_atoms 里表示“没有参照原子“的值。
Sourcepub fn valence_contribution_to(&self, atom: u32) -> f32
pub fn valence_contribution_to(&self, atom: u32) -> f32
本键对端点 atom 的价贡献。
配位键的贡献是不对称的:对起点(给体)算 0,对终点(受体)算 1。
这与直觉相反,也与 BondOrder::as_double 不同 —— 后者对配位键
一律算 1。搞混会让隐式氢推断在有机金属分子上系统性出错。
atom 不是本键端点时返回 0。
Trait Implementations§
impl Copy for BondData
impl Eq for BondData
impl StructuralPartialEq for BondData
Auto Trait Implementations§
impl Freeze for BondData
impl RefUnwindSafe for BondData
impl Send for BondData
impl Sync for BondData
impl Unpin for BondData
impl UnsafeUnpin for BondData
impl UnwindSafe for BondData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more