pub struct MolBuilder { /* private fields */ }Expand description
可变的单分子构造器。
自带邻接索引;见模块文档。
Implementations§
Source§impl MolBuilder
impl MolBuilder
Sourcepub fn with_capacity(n_atoms: usize, n_bonds: usize) -> Self
pub fn with_capacity(n_atoms: usize, n_bonds: usize) -> Self
预分配容量的空分子。解析器已知大致规模时用这个避免反复扩容。
Sourcepub fn add_atom_data(&mut self, atom: AtomData) -> u32
pub fn add_atom_data(&mut self, atom: AtomData) -> u32
追加一个完整指定的原子,返回其局部下标。
Sourcepub fn add_bond_data(&mut self, bond: BondData) -> Result<u32>
pub fn add_bond_data(&mut self, bond: BondData) -> Result<u32>
Sourcepub fn swap_bond_ends(&mut self, bond: u32) -> Result<()>
pub fn swap_bond_ends(&mut self, bond: u32) -> Result<()>
交换一条键的两个端点。
端点顺序对配位键有语义(begin 是给电子的一端),这个接口就是为它
准备的。其余键型的端点顺序只是书写痕迹,交换它没有意义。
§为什么是整体重建索引
半边链表是单向的:把两条半边在两个原子的链表之间对调,要各自找到前驱 再改指针,还要顾及链首链尾 —— 几十行且容易出错。而整体重建只有几行, 显然正确,并且保持“邻居顺序 = 键的插入顺序“这条不变量(重建按键号 递增走,每个原子的相对顺序不变)。
代价是 O(原子数 + 键数)。这个接口的调用场景是净化第 2 步, 实测 8839 条语料里只触发 2 次 —— 为它做精细的指针手术不划算。
§Errors
键下标越界时返回 Error::BondIndexOutOfRange。
Sourcepub fn neighbors(&self, atom: u32) -> Neighbors<'_> ⓘ
pub fn neighbors(&self, atom: u32) -> Neighbors<'_> ⓘ
遍历某原子的邻居,产出 (邻居原子下标, 键下标)。O(度数)。
顺序即键的插入顺序,与 MolView::neighbors
一致 —— 手性语义依赖于这个顺序,两处必须给出同样的序列。
原子下标越界时产出空序列。
Trait Implementations§
Source§impl Clone for MolBuilder
impl Clone for MolBuilder
Source§fn clone(&self) -> MolBuilder
fn clone(&self) -> MolBuilder
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for MolBuilder
impl Debug for MolBuilder
Source§impl Default for MolBuilder
impl Default for MolBuilder
Source§fn default() -> MolBuilder
fn default() -> MolBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for MolBuilder
impl RefUnwindSafe for MolBuilder
impl Send for MolBuilder
impl Sync for MolBuilder
impl Unpin for MolBuilder
impl UnsafeUnpin for MolBuilder
impl UnwindSafe for MolBuilder
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