От порядка следования, конечно, результат меняется (при D=2 можно увеличивать первую «30», а можно последнюю).
Но порядок следования в моем коде сохраняется — Rust автоматически выводит порядок для пар, если есть порядок на каждой из компонент (естественным образом: сначала по первой компоненте, а если есть равенство, то по второй). В результате, мне достаточно определить порядок на дробях. А когда я сортирую пару из дроби и индекса, под капотом используется то самое сравнение, которое Вы реализовали явно (а у меня оно вывелось из явного порядка на дробях и стандартного на usize).
Написал собственную сортировку дробей на коленке, которая сравнивает дроби, а не их целые части (как это было сделано в референсе). Вроде, сравнивать дроби правильнее: первая строчка, например, должна быть с четвертой единичкой, а не с первой.
От порядка следования, конечно, результат меняется (при D=2 можно увеличивать первую «30», а можно последнюю).
Но порядок следования в моем коде сохраняется — Rust автоматически выводит порядок для пар, если есть порядок на каждой из компонент (естественным образом: сначала по первой компоненте, а если есть равенство, то по второй). В результате, мне достаточно определить порядок на дробях. А когда я сортирую пару из дроби и индекса, под капотом используется то самое сравнение, которое Вы реализовали явно (а у меня оно вывелось из явного порядка на дробях и стандартного на usize).
play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=466e2f5667ac1d9484bdbe5c99e65cb5
Написал собственную сортировку дробей на коленке, которая сравнивает дроби, а не их целые части (как это было сделано в референсе). Вроде, сравнивать дроби правильнее: первая строчка, например, должна быть с четвертой единичкой, а не с первой.