| 102 | } |
| 103 | |
| 104 | fn sync_option_state(options: &mut Vec<OptionState>, option_state: OptionState) { |
| 105 | if let Some(position) = options |
| 106 | .iter() |
| 107 | .position(|option| option.id == option_state.id) |
| 108 | { |
| 109 | if options[position].index == option_state.index { |
| 110 | options[position] = option_state; |
| 111 | return; |
| 112 | } |
| 113 | options.remove(position); |
| 114 | } |
| 115 | insert_option(options, option_state); |
| 116 | } |
| 117 | |
| 118 | fn insert_option(options: &mut Vec<OptionState>, option_state: OptionState) { |
| 119 | let insert_at = options.partition_point(|option| option.index <= option_state.index); |