Skip to content

Latest commit

 

History

History
18 lines (18 loc) · 2.34 KB

README.md

File metadata and controls

18 lines (18 loc) · 2.34 KB

Разработка приостановлена

В данный момент реализация приостановлена, поскольку на сегодняшний день в Rust отсутствует возможность контроля значения после присваивания. В C++ для этой цели можно перегрузить operator=, в Rust на данный момент сущесвует Pre-RFC на введение trait IndexAssing, который бы позволил контролировать присваиваемое значение. В данном проекте это является необходимостью, поскольку многочлен над некоторым конечным полем должен состоять из чисел только этого поля. В данный момент при реализации IndexMut была бы возможность присвоить многочлену над полем Gf::new(5) например число из поля Gf::new(3), если реализовывать многочлен как Vec<GfNum>. Если же реализовывать многочлен как Vec<usize> с операциями над заданным полем, то при присвоении нового значения по индексу будет возможность присвоить ненормированное значение, что может при последующем выполнении операций приводить к переполнению, к тому же такая реализация была бы очень трудоёмкой. Единственным выходом во втором случае было бы нормирование чисел в векторе перед выполнением любых операций, но это значительно повысило бы время выполнения программы, по сравнению с возможностью проверки значений в момент присвоения, а значит не дало бы выигрыша в производительности по сравнению с кодом на C++.