From 7f507bba386d00acf656f318cb1bde64d65bbea6 Mon Sep 17 00:00:00 2001 From: ngtkana Date: Tue, 12 Nov 2024 10:44:34 +0000 Subject: [PATCH] deploy: cb985c76c5524549776ab9457b4a2869d0d3c676 --- accum/all.html | 4 +- accum/fn.add.html | 4 +- accum/fn.add_inv.html | 4 +- accum/fn.and.html | 4 +- accum/fn.for_each.html | 4 +- accum/fn.for_each_mut.html | 4 +- accum/fn.max.html | 4 +- accum/fn.min.html | 4 +- accum/fn.mul.html | 4 +- accum/fn.mul_inv.html | 4 +- accum/fn.or.html | 4 +- accum/fn.rfor_each.html | 4 +- accum/fn.rfor_each_mut.html | 4 +- accum/fn.skipped.html | 8 +- accum/fn.skipped_max.html | 4 +- accum/fn.skipped_min.html | 4 +- accum/fn.xor.html | 4 +- accum/fn.xor_inv.html | 4 +- accum/index.html | 4 +- accum/struct.Skipped.html | 411 +++++---- advance/all.html | 35 - advance/fn.advance_until.html | 47 -- advance/fn.advance_visit_until.html | 58 -- advance/index.html | 41 - advance/sidebar-items.js | 1 - avl_tree/all.html | 4 +- avl_tree/index.html | 18 +- avl_tree/struct.AvlTree.html | 194 ++--- avl_tree/struct.IntoIter.html | 374 +++++---- avl_tree/struct.Iter.html | 400 +++++---- bfs/all.html | 4 +- bfs/fn.calc_dist.html | 4 +- bfs/fn.calc_dist_restore.html | 10 +- bfs/fn.find_path.html | 12 +- bfs/fn.tree_diamter.html | 4 +- bfs/fn.tree_diamter_restore.html | 4 +- bfs/index.html | 4 +- bfs01/all.html | 4 +- bfs01/enum.Weight.html | 34 +- bfs01/fn.calc_dist.html | 4 +- bfs01/fn.calc_dist_restore.html | 10 +- bfs01/index.html | 4 +- binary/all.html | 4 +- binary/fn.operator_binary.html | 12 +- binary/fn.value_binary.html | 10 +- binary/index.html | 8 +- binary/trait.Pow.html | 20 +- bitutils/all.html | 35 - bitutils/combinations/fn.combinations.html | 11 - .../combinations/struct.Combinations.html | 11 - bitutils/fn.combinations.html | 42 - bitutils/fn.subsets.html | 42 - bitutils/index.html | 36 - bitutils/sidebar-items.js | 1 - bitutils/struct.Combinations.html | 234 ------ bitutils/struct.Subsets.html | 234 ------ bitutils/subsets/fn.subsets.html | 11 - bitutils/subsets/struct.Subsets.html | 11 - bitutils/trait.Unsigned.html | 69 -- bitvec/all.html | 4 +- bitvec/index.html | 6 +- bitvec/struct.BitVec.html | 125 ++- bitvec/struct.Iter.html | 366 ++++----- bsgs/all.html | 4 +- bsgs/index.html | 10 +- bsgs/struct.Bsgs.html | 77 +- cht/all.html | 4 +- cht/constant.X.html | 4 +- cht/enum.Concave.html | 31 +- cht/enum.Convex.html | 31 +- cht/index.html | 14 +- cht/struct.BTreeCht.html | 34 +- cht/struct.Quadratic.html | 34 +- cht/struct.VecCht.html | 34 +- cht/trait.ConvexOrConcave.html | 8 +- cipolla/all.html | 4 +- cipolla/fn.cipolla_sqrt.html | 4 +- cipolla/index.html | 4 +- cipolla/trait.Unsigned.html | 15 +- cmpmore/all.html | 35 - cmpmore/fn.change_max.html | 40 - cmpmore/fn.change_min.html | 40 - cmpmore/index.html | 36 - cmpmore/macro.change_max!.html | 11 - cmpmore/macro.change_max.html | 42 - cmpmore/macro.change_min!.html | 11 - cmpmore/macro.change_min.html | 42 - cmpmore/sidebar-items.js | 1 - cmpmore/trait.CmpMore.html | 50 -- convex_hull/all.html | 4 +- convex_hull/fn.caliper.html | 4 +- convex_hull/fn.ccw.html | 4 +- convex_hull/fn.convex_hull.html | 4 +- convex_hull/fn.is_convex.html | 4 +- convex_hull/fn.sqmag.html | 4 +- convex_hull/index.html | 8 +- crates.js | 3 +- dependencies.js | 2 +- dfs/all.html | 4 +- dfs/fn.calc_reachability.html | 4 +- dfs/index.html | 4 +- dijkstra_radix_heap/all.html | 4 +- dijkstra_radix_heap/fn.calc_dist.html | 4 +- dijkstra_radix_heap/fn.calc_dist_restore.html | 10 +- dijkstra_radix_heap/index.html | 6 +- dinic/all.html | 4 +- dinic/index.html | 16 +- dinic/struct.Dinic.html | 108 +-- dinic/struct.Edge.html | 53 +- dinic/struct.EdgeKey.html | 30 +- dinic/trait.Value.html | 18 +- dual_segtree/all.html | 4 +- dual_segtree/index.html | 8 +- dual_segtree/struct.DualSegtree.html | 74 +- dual_segtree/trait.Ops.html | 16 +- elim/all.html | 4 +- elim/fn.column_reduce.html | 10 +- elim/index.html | 4 +- erato/all.html | 4 +- erato/index.html | 12 +- erato/struct.LpdSieve.html | 79 +- erato/struct.PrimeFactorsByLookup.html | 381 +++++---- erato/struct.PrimeFactorsByTrialDivision.html | 377 +++++---- erato/struct.PrimeNumbers.html | 380 +++++---- erato/struct.Rle.html | 388 +++++---- erato/struct.Sieve.html | 75 +- erato/struct.Unique.html | 388 +++++---- erato/trait.Int.html | 33 +- erato/trait.PrimeFactors.html | 14 +- euclid/all.html | 4 +- euclid/fn.crt.html | 6 +- euclid/fn.ext_gcd.html | 6 +- euclid/fn.gcd.html | 4 +- euclid/index.html | 4 +- euclid/trait.Int.html | 35 +- euclid/trait.Signed.html | 6 +- euclid/trait.Unsigned.html | 6 +- fp/all.html | 4 +- fp/fn.any_mod_fps_mul.html | 4 +- fp/fn.fft.html | 12 +- fp/fn.fps_mul.html | 14 +- fp/fn.ifft.html | 12 +- fp/index.html | 12 +- fp/macro.fp.html | 6 +- fp/struct.Factorial.html | 74 +- fp/struct.Fp.html | 74 +- fp/trait.PrimitiveRoot.html | 8 +- fps/all.html | 4 +- fps/fn.fps_deriv.html | 16 +- fps/fn.fps_exp.html | 16 +- fps/fn.fps_int.html | 16 +- fps/fn.fps_inv.html | 18 +- fps/fn.fps_log.html | 18 +- fps/fn.fps_pow.html | 20 +- fps/fn.fps_sqrt.html | 18 +- fps/index.html | 12 +- fps/macro.fps.html | 6 +- gco/all.html | 4 +- gco/index.html | 14 +- gco/struct.Gco.html | 52 +- gco/struct.GcoResult.html | 42 +- gridnei/all.html | 35 - gridnei/fn.grid4.html | 42 - gridnei/fn.grid4encode.html | 42 - gridnei/index.html | 80 -- gridnei/macro.grid_iter!.html | 11 - gridnei/macro.grid_iter.html | 64 -- gridnei/sidebar-items.js | 1 - gridnei/struct.Encode.html | 257 ------ gridnei/struct.Grid0.html | 256 ------ gridnei/struct.Grid1.html | 256 ------ gridnei/struct.Grid2.html | 256 ------ gridnei/struct.Grid3.html | 256 ------ gridnei/struct.Grid4.html | 256 ------ gridnei/struct.Grid5.html | 256 ------ gridnei/struct.Grid6.html | 256 ------ gridnei/struct.Grid7.html | 256 ------ gridnei/struct.Grid8.html | 256 ------ gridnei/trait.GridIterator.html | 46 -- gss/all.html | 4 +- gss/fn.gss_by_absolute_eps.html | 10 +- gss/fn.gss_by_count.html | 8 +- gss/fn.gss_integer.html | 6 +- gss/fn.gss_on_slice.html | 4 +- gss/index.html | 14 +- gss/trait.Float.html | 27 +- gss/trait.Golden.html | 14 +- gss/trait.Int.html | 18 +- heap_slope_trick/all.html | 4 +- heap_slope_trick/fn.merge.html | 8 +- heap_slope_trick/index.html | 6 +- heap_slope_trick/struct.HeapSlopeTrick.html | 61 +- heap_slope_trick/struct.Summary.html | 34 +- heap_tricks/all.html | 4 +- heap_tricks/index.html | 20 +- heap_tricks/struct.DoubleHeap.html | 158 ++-- heap_tricks/struct.Nop.html | 34 +- heap_tricks/struct.RemovableHeap.html | 71 +- heap_tricks/struct.Sum.html | 47 +- heap_tricks/trait.Handler.html | 16 +- help.html | 4 +- hld/all.html | 4 +- hld/index.html | 8 +- hld/struct.Hld.html | 80 +- hld/struct.PathSegments.html | 366 ++++----- hopkarp/all.html | 4 +- hopkarp/fn.hopkarp.html | 6 +- hopkarp/index.html | 10 +- hopkarp/struct.HopkarpResult.html | 50 +- hungarian/all.html | 4 +- hungarian/fn.hungarian.html | 4 +- hungarian/index.html | 8 +- hungarian/struct.HungarianResult.html | 59 +- hungarian/trait.Value.html | 14 +- implementors/alloc/string/trait.ToString.js | 3 + implementors/binary/trait.Pow.js | 3 + implementors/cht/trait.ConvexOrConcave.js | 3 + implementors/cipolla/trait.Unsigned.js | 3 + implementors/core/clone/trait.Clone.js | 39 + implementors/core/cmp/trait.Eq.js | 27 + implementors/core/cmp/trait.Ord.js | 5 + implementors/core/cmp/trait.PartialEq.js | 34 + implementors/core/cmp/trait.PartialOrd.js | 5 + implementors/core/convert/trait.From.js | 8 + implementors/core/default/trait.Default.js | 28 + implementors/core/fmt/trait.Debug.js | 45 + implementors/core/fmt/trait.Display.js | 3 + implementors/core/hash/trait.Hash.js | 22 + .../core/iter/traits/accum/trait.Product.js | 5 + .../core/iter/traits/accum/trait.Sum.js | 4 + .../core/iter/traits/collect/trait.Extend.js | 5 + .../iter/traits/collect/trait.FromIterator.js | 17 + .../iter/traits/collect/trait.IntoIterator.js | 9 + .../double_ended/trait.DoubleEndedIterator.js | 4 + .../iter/traits/iterator/trait.Iterator.js | 12 + .../iter/traits/marker/trait.FusedIterator.js | 3 + implementors/core/marker/trait.Copy.js | 11 + implementors/core/marker/trait.Freeze.js | 49 ++ implementors/core/marker/trait.Send.js | 49 ++ .../core/marker/trait.StructuralEq.js | 24 + .../core/marker/trait.StructuralPartialEq.js | 30 + implementors/core/marker/trait.Sync.js | 49 ++ implementors/core/marker/trait.Unpin.js | 49 ++ implementors/core/ops/arith/trait.Add.js | 5 + .../core/ops/arith/trait.AddAssign.js | 4 + implementors/core/ops/arith/trait.Div.js | 4 + .../core/ops/arith/trait.DivAssign.js | 4 + implementors/core/ops/arith/trait.Mul.js | 6 + .../core/ops/arith/trait.MulAssign.js | 4 + implementors/core/ops/arith/trait.Neg.js | 5 + implementors/core/ops/arith/trait.Sub.js | 5 + .../core/ops/arith/trait.SubAssign.js | 4 + .../core/ops/bit/trait.BitAndAssign.js | 3 + .../core/ops/bit/trait.BitOrAssign.js | 3 + .../core/ops/bit/trait.BitXorAssign.js | 3 + implementors/core/ops/bit/trait.ShlAssign.js | 3 + implementors/core/ops/bit/trait.ShrAssign.js | 3 + implementors/core/ops/deref/trait.Deref.js | 4 + implementors/core/ops/deref/trait.DerefMut.js | 4 + implementors/core/ops/drop/trait.Drop.js | 4 + implementors/core/ops/index/trait.Index.js | 9 + implementors/core/ops/index/trait.IndexMut.js | 3 + .../panic/unwind_safe/trait.RefUnwindSafe.js | 49 ++ .../panic/unwind_safe/trait.UnwindSafe.js | 49 ++ implementors/core/str/traits/trait.FromStr.js | 3 + implementors/dinic/trait.Value.js | 3 + .../erato/converters/trait.PrimeFactors.js | 3 + implementors/erato/int/trait.Int.js | 3 + implementors/euclid/trait.Int.js | 3 + implementors/euclid/trait.Signed.js | 3 + implementors/euclid/trait.Unsigned.js | 3 + implementors/fp/trait.PrimitiveRoot.js | 3 + implementors/gss/trait.Float.js | 3 + implementors/gss/trait.Golden.js | 3 + implementors/gss/trait.Int.js | 3 + implementors/heap_tricks/trait.Handler.js | 3 + implementors/hungarian/trait.Value.js | 3 + implementors/io/trait.ParseLine.js | 3 + implementors/lazy_segbeats/trait.Elm.js | 3 + implementors/lin_ineq/trait.Signed.js | 3 + implementors/numeric_search/trait.Float.js | 3 + implementors/numeric_search/trait.Signed.js | 3 + implementors/numeric_search/trait.Unsigned.js | 3 + .../distribution/trait.Distribution.js | 3 + implementors/rational/trait.Signed.js | 3 + implementors/rbtree/trait.Op.js | 3 + .../riff/binary_search/trait.BinarySearch.js | 3 + .../riff/change_min_max/trait.ChangeMinMax.js | 3 + .../riff/numeric_traits/trait.Unsigned.js | 3 + implementors/riff/pop_if/trait.PopIf.js | 3 + implementors/segbeats/trait.Elm.js | 3 + implementors/segbeats_task3/trait.Elm.js | 3 + implementors/serde/ser/trait.Serialize.js | 3 + implementors/splay_tree/trait.LazyOps.js | 3 + implementors/splay_tree/trait.Value.js | 3 + implementors/trial/trait.Value.js | 3 + implementors/union_find/trait.Op.js | 3 + implementors/vec_lines/trait.Constraint.js | 3 + implementors/vec_lines/trait.Signed.js | 3 + interval_heap/all.html | 4 +- interval_heap/index.html | 6 +- interval_heap/struct.IntervalHeap.html | 52 +- io/all.html | 4 +- io/fn.input.html | 4 +- io/index.html | 14 +- io/trait.ParseLine.html | 8 +- lagrange/all.html | 4 +- lagrange/fn.evaluate.html | 8 +- lagrange/fn.interpolate.html | 10 +- lagrange/fn.interpolate_first_n.html | 10 +- .../fn.interpolate_one_point_first_n.html | 12 +- lagrange/index.html | 10 +- lazy_segbeats/all.html | 4 +- lazy_segbeats/fn.open.html | 35 + lazy_segbeats/index.html | 4 +- lazy_segbeats/sidebar-items.js | 2 +- lazy_segbeats/struct.Segbeats.html | 34 +- lazy_segbeats/trait.Elm.html | 16 +- lazy_segtree/all.html | 4 +- lazy_segtree/index.html | 10 +- lazy_segtree/struct.LazySegtree.html | 77 +- lazy_segtree/trait.Op.html | 22 +- lg/all.html | 4 +- lg/fn.align_of.html | 4 +- lg/fn.bools.html | 8 +- lg/fn.format.html | 4 +- lg/fn.hmap.html | 10 +- lg/fn.hvec.html | 4 +- lg/fn.remove_ampersand.html | 4 +- lg/fn.vec2.html | 10 +- lg/fn.vmap.html | 10 +- lg/fn.vvec.html | 4 +- lg/index.html | 4 +- lg/macro.hmap.html | 4 +- lg/macro.hvec.html | 4 +- lg/macro.lg.html | 4 +- lg/macro.table.html | 4 +- lg/macro.vmap.html | 4 +- lg/macro.vvec.html | 4 +- lin_ineq/all.html | 4 +- lin_ineq/fn.solve.html | 4 +- lin_ineq/fn.solve_squeeze.html | 6 +- lin_ineq/index.html | 18 +- lin_ineq/struct.Interval.html | 110 ++- lin_ineq/trait.Signed.html | 11 +- link_cut_tree/all.html | 4 +- link_cut_tree/index.html | 10 +- link_cut_tree/struct.LinkCutTreeBase.html | 66 +- link_cut_tree/trait.Op.html | 8 +- link_cut_tree/type.CommutLinkCutTree.html | 6 +- link_cut_tree/type.LinkCutTree.html | 6 +- link_cut_tree/type.NonCommutLinkCutTree.html | 6 +- low_link/all.html | 4 +- low_link/index.html | 6 +- low_link/struct.LowLink.html | 62 +- make_graph/all.html | 4 +- make_graph/fn.array_make_directed.html | 4 +- .../fn.array_make_directed_weighted.html | 10 +- make_graph/fn.array_make_undirected.html | 4 +- .../fn.array_make_undirected_weighted.html | 10 +- make_graph/fn.make_directed_by.html | 12 +- make_graph/fn.make_directed_weighted_by.html | 12 +- make_graph/fn.make_undirected_by.html | 12 +- .../fn.make_undirected_weighted_by.html | 12 +- make_graph/fn.tuple_make_directed.html | 10 +- .../fn.tuple_make_directed_weighted.html | 10 +- make_graph/fn.tuple_make_undirected.html | 10 +- .../fn.tuple_make_undirected_weighted.html | 10 +- make_graph/index.html | 6 +- manacher/all.html | 4 +- manacher/fn.manacher.html | 10 +- manacher/index.html | 4 +- mincost_flow/all.html | 4 +- mincost_flow/index.html | 6 +- mincost_flow/struct.Edge.html | 34 +- mincost_flow/struct.MinCostFlow.html | 70 +- monotone_minima/all.html | 4 +- .../fn.concave_maxplus_convolution.html | 6 +- .../fn.convex_minplus_convolution.html | 6 +- monotone_minima/fn.monotone_maxima.html | 12 +- monotone_minima/fn.monotone_maxima_by.html | 12 +- monotone_minima/fn.monotone_minima.html | 12 +- monotone_minima/fn.monotone_minima_by.html | 12 +- monotone_minima/index.html | 8 +- naive_poly/all.html | 4 +- naive_poly/fn.add.html | 6 +- naive_poly/fn.div.html | 6 +- naive_poly/fn.eval.html | 6 +- naive_poly/fn.mul.html | 6 +- naive_poly/fn.pow.html | 6 +- naive_poly/fn.sub.html | 6 +- naive_poly/index.html | 4 +- newton/all.html | 4 +- newton/fn.sqrt.html | 4 +- newton/fn.triangular_root.html | 4 +- newton/index.html | 4 +- next_permutation/all.html | 4 +- next_permutation/fn.for_each_pairing.html | 4 +- next_permutation/fn.for_each_partition.html | 4 +- .../fn.for_each_partition_rev.html | 4 +- next_permutation/fn.for_each_permutation.html | 4 +- next_permutation/fn.for_each_shuffle.html | 4 +- next_permutation/fn.next_pairing.html | 4 +- next_permutation/fn.next_partition.html | 4 +- next_permutation/fn.next_permutation.html | 4 +- next_permutation/fn.next_shuffle.html | 4 +- next_permutation/fn.pairings.html | 4 +- next_permutation/fn.partitions.html | 4 +- next_permutation/fn.partitions_rev.html | 4 +- next_permutation/fn.permutations.html | 4 +- next_permutation/fn.prev_partition.html | 4 +- next_permutation/fn.shuffles.html | 4 +- next_permutation/index.html | 6 +- numeric_search/all.html | 4 +- numeric_search/fn.binary_search_signed.html | 8 +- numeric_search/fn.binary_search_unsigned.html | 8 +- numeric_search/fn.exp_search_float.html | 6 +- numeric_search/fn.exp_search_signed.html | 8 +- numeric_search/fn.exp_search_unsigned.html | 6 +- numeric_search/index.html | 6 +- numeric_search/trait.Float.html | 25 +- numeric_search/trait.Signed.html | 19 +- numeric_search/trait.Unsigned.html | 22 +- open/all.html | 35 - open/fn.open.html | 35 - open/index.html | 35 - open/sidebar-items.js | 1 - partially_persistent_union_find/all.html | 4 +- partially_persistent_union_find/index.html | 6 +- .../struct.PartiallyPersistentUnionFind.html | 90 +- radix_heap/all.html | 4 +- radix_heap/index.html | 6 +- radix_heap/struct.RadixHeap.html | 38 +- randtools/all.html | 4 +- randtools/index.html | 4 +- randtools/struct.DistinctTwo.html | 34 +- randtools/struct.LogUniform.html | 34 +- randtools/struct.NonEmptySubRange.html | 34 +- randtools/struct.SimpleDigraph.html | 34 +- randtools/struct.SimpleDigraphEdges.html | 34 +- randtools/struct.SimpleGraph.html | 34 +- randtools/struct.SimpleGraphEdges.html | 34 +- randtools/struct.SubRange.html | 34 +- randtools/struct.Tree.html | 34 +- rational/all.html | 4 +- rational/index.html | 4 +- rational/struct.Rational.html | 60 +- rational/trait.Signed.html | 27 +- rb/all.html | 4 +- rb/index.html | 6 +- rb/struct.Multimap.html | 39 +- rb/struct.MultimapSeg.html | 50 +- rb/struct.Multiset.html | 32 +- rb/struct.Seg.html | 28 +- rb/trait.MultimapOp.html | 16 +- rb/trait.Op.html | 8 +- rbtree/all.html | 4 +- rbtree/index.html | 20 +- rbtree/struct.Iter.html | 382 +++++---- rbtree/struct.Nop.html | 24 +- rbtree/struct.RbTree.html | 119 ++- rbtree/trait.Op.html | 16 +- riff/all.html | 35 + riff/binary_search/trait.BinarySearch.html | 11 + .../fn.bitmask_combinations.html | 11 + .../bitmask_iterators/fn.bitmask_subsets.html | 11 + riff/change_min_max/trait.ChangeMinMax.html | 11 + riff/fn.bitmask_combinations.html | 45 + riff/fn.bitmask_subsets.html | 42 + riff/index.html | 36 + riff/numeric_traits/trait.Unsigned.html | 11 + riff/pop_if/trait.PopIf.html | 11 + riff/sidebar-items.js | 1 + riff/trait.BinarySearch.html | 59 ++ riff/trait.ChangeMinMax.html | 40 + riff/trait.PopIf.html | 45 + riff/trait.Unsigned.html | 44 + scc/all.html | 4 +- scc/index.html | 9 +- scc/struct.Scc.html | 90 +- search-index.js | 79 +- search.desc/accum/accum-desc-0-.js | 1 - search.desc/advance/advance-desc-0-.js | 1 - search.desc/avl_tree/avl_tree-desc-0-.js | 1 - search.desc/bfs/bfs-desc-0-.js | 1 - search.desc/bfs01/bfs01-desc-0-.js | 1 - search.desc/binary/binary-desc-0-.js | 1 - search.desc/bitutils/bitutils-desc-0-.js | 1 - search.desc/bitvec/bitvec-desc-0-.js | 1 - search.desc/bsgs/bsgs-desc-0-.js | 1 - search.desc/cht/cht-desc-0-.js | 1 - search.desc/cipolla/cipolla-desc-0-.js | 1 - search.desc/cmpmore/cmpmore-desc-0-.js | 1 - .../convex_hull/convex_hull-desc-0-.js | 1 - search.desc/dfs/dfs-desc-0-.js | 1 - .../dijkstra_radix_heap-desc-0-.js | 1 - search.desc/dinic/dinic-desc-0-.js | 1 - .../dual_segtree/dual_segtree-desc-0-.js | 1 - search.desc/elim/elim-desc-0-.js | 1 - search.desc/erato/erato-desc-0-.js | 1 - search.desc/euclid/euclid-desc-0-.js | 1 - search.desc/fp/fp-desc-0-.js | 1 - search.desc/fps/fps-desc-0-.js | 1 - search.desc/gco/gco-desc-0-.js | 1 - search.desc/gridnei/gridnei-desc-0-.js | 1 - search.desc/gss/gss-desc-0-.js | 1 - .../heap_slope_trick-desc-0-.js | 1 - .../heap_tricks/heap_tricks-desc-0-.js | 1 - search.desc/hld/hld-desc-0-.js | 1 - search.desc/hopkarp/hopkarp-desc-0-.js | 1 - search.desc/hungarian/hungarian-desc-0-.js | 1 - .../interval_heap/interval_heap-desc-0-.js | 1 - search.desc/io/io-desc-0-.js | 1 - search.desc/lagrange/lagrange-desc-0-.js | 1 - .../lazy_segbeats/lazy_segbeats-desc-0-.js | 1 - .../lazy_segtree/lazy_segtree-desc-0-.js | 1 - search.desc/lg/lg-desc-0-.js | 1 - search.desc/lin_ineq/lin_ineq-desc-0-.js | 1 - .../link_cut_tree/link_cut_tree-desc-0-.js | 1 - search.desc/low_link/low_link-desc-0-.js | 1 - search.desc/make_graph/make_graph-desc-0-.js | 1 - search.desc/manacher/manacher-desc-0-.js | 1 - .../mincost_flow/mincost_flow-desc-0-.js | 1 - .../monotone_minima-desc-0-.js | 1 - search.desc/naive_poly/naive_poly-desc-0-.js | 1 - search.desc/newton/newton-desc-0-.js | 1 - .../next_permutation-desc-0-.js | 1 - .../numeric_search/numeric_search-desc-0-.js | 1 - search.desc/open/open-desc-0-.js | 1 - ...partially_persistent_union_find-desc-0-.js | 1 - search.desc/radix_heap/radix_heap-desc-0-.js | 1 - search.desc/randtools/randtools-desc-0-.js | 1 - search.desc/rational/rational-desc-0-.js | 1 - search.desc/rb/rb-desc-0-.js | 1 - search.desc/rbtree/rbtree-desc-0-.js | 1 - search.desc/scc/scc-desc-0-.js | 1 - search.desc/segbeats/segbeats-desc-0-.js | 1 - .../segbeats_task3/segbeats_task3-desc-0-.js | 1 - search.desc/segtree/segtree-desc-0-.js | 1 - search.desc/skew_heap/skew_heap-desc-0-.js | 1 - search.desc/slicemore/slicemore-desc-0-.js | 1 - search.desc/snippetter/snippetter-desc-0-.js | 1 - search.desc/sort_tree/sort_tree-desc-0-.js | 1 - .../sparse_table/sparse_table-desc-0-.js | 1 - search.desc/splay_tree/splay_tree-desc-0-.js | 1 - .../suffix_array/suffix_array-desc-0-.js | 1 - search.desc/suffix_sum/suffix_sum-desc-0-.js | 1 - search.desc/swag/swag-desc-0-.js | 1 - search.desc/tree_fold/tree_fold-desc-0-.js | 1 - search.desc/trial/trial-desc-0-.js | 1 - search.desc/trie/trie-desc-0-.js | 1 - search.desc/two_sat/two_sat-desc-0-.js | 1 - .../uf_checklist/uf_checklist-desc-0-.js | 1 - search.desc/union_find/union_find-desc-0-.js | 1 - search.desc/veb/veb-desc-0-.js | 1 - search.desc/vec_lines/vec_lines-desc-0-.js | 1 - .../wavelet_matrix/wavelet_matrix-desc-0-.js | 1 - search.desc/z_algo/z_algo-desc-0-.js | 1 - search.desc/zeta/zeta-desc-0-.js | 1 - segbeats/all.html | 4 +- segbeats/fn.open.html | 35 + segbeats/index.html | 4 +- segbeats/sidebar-items.js | 2 +- segbeats/struct.Segbeats.html | 34 +- segbeats/trait.Elm.html | 16 +- segbeats_task3/all.html | 4 +- segbeats_task3/fn.open.html | 35 + segbeats_task3/index.html | 4 +- segbeats_task3/sidebar-items.js | 2 +- segbeats_task3/struct.Segbeats.html | 34 +- segbeats_task3/trait.Elm.html | 16 +- segtree/all.html | 4 +- segtree/index.html | 16 +- segtree/struct.Dense2dEntry.html | 30 +- segtree/struct.Dense2dSegtree.html | 54 +- segtree/struct.Entry.html | 32 +- segtree/struct.Segtree.html | 58 +- segtree/struct.SegtreeWithCompression.html | 72 +- segtree/struct.Sparse2dSegtree.html | 92 +-- segtree/trait.Op.html | 12 +- settings.html | 4 +- skew_heap/all.html | 4 +- skew_heap/fn.meld.html | 6 +- skew_heap/index.html | 12 +- skew_heap/struct.SkewHeap.html | 60 +- slicemore/all.html | 35 - slicemore/fn.lower_bound.html | 38 - slicemore/fn.lower_bound_by.html | 38 - slicemore/fn.lower_bound_by_key.html | 42 - slicemore/fn.partition_point.html | 40 - slicemore/fn.upper_bound.html | 38 - slicemore/fn.upper_bound_by.html | 38 - slicemore/fn.upper_bound_by_key.html | 42 - slicemore/index.html | 36 - slicemore/sidebar-items.js | 1 - slicemore/trait.SliceMore.html | 66 -- snippetter/all.html | 4 +- snippetter/fn.find_project_root_path.html | 4 +- snippetter/fn.main.html | 4 +- ...se_local_dependencies_from_cargo_toml.html | 8 +- snippetter/index.html | 4 +- snippetter/static.CRATE_METADATAS.html | 4 +- snippetter/static.PROJECT_ROOT.html | 4 +- snippetter/struct.CrateMetadata.html | 42 +- sort_tree/all.html | 35 - sort_tree/fn.remove_parent.html | 36 - sort_tree/fn.sort_tree.html | 36 - sort_tree/fn.sort_tree_by.html | 40 - sort_tree/fn.sort_tree_remove_parent.html | 39 - sort_tree/index.html | 36 - sort_tree/sidebar-items.js | 1 - source-files.js | 74 ++ sparse_table/all.html | 4 +- sparse_table/index.html | 8 +- sparse_table/struct.SparseTable.html | 58 +- sparse_table/struct.SparseTable2d.html | 62 +- sparse_table/trait.Op.html | 10 +- splay_tree/all.html | 4 +- splay_tree/index.html | 6 +- splay_tree/struct.Entry.html | 24 +- splay_tree/struct.Iter.html | 392 +++++---- splay_tree/struct.NoLazy.html | 24 +- splay_tree/struct.Nop.html | 24 +- splay_tree/struct.SplayTree.html | 133 ++- splay_tree/trait.LazyOps.html | 26 +- splay_tree/trait.Ops.html | 14 +- splay_tree/trait.Value.html | 9 +- src-files.js | 3 - src/accum/lib.rs.html | 28 +- src/advance/lib.rs.html | 267 ------ src/avl_tree/lib.rs.html | 42 +- src/bfs/lib.rs.html | 28 +- src/bfs01/lib.rs.html | 16 +- src/binary/lib.rs.html | 36 +- src/bitutils/combinations.rs.html | 165 ---- src/bitutils/subsets.rs.html | 177 ---- src/bitvec/lib.rs.html | 102 +-- src/bsgs/lib.rs.html | 22 +- src/cht/lib.rs.html | 62 +- src/cipolla/lib.rs.html | 8 +- src/cmpmore/lib.rs.html | 243 ------ src/convex_hull/lib.rs.html | 14 +- src/dfs/lib.rs.html | 6 +- src/dijkstra_radix_heap/lib.rs.html | 16 +- src/dinic/lib.rs.html | 108 +-- src/dual_segtree/lib.rs.html | 18 +- src/elim/lib.rs.html | 4 +- src/erato/converters.rs.html | 8 +- src/erato/int.rs.html | 8 +- src/erato/lib.rs.html | 6 +- src/erato/lpd_sieve.rs.html | 8 +- src/erato/sieve.rs.html | 8 +- src/erato/sieve_base.rs.html | 26 +- src/erato/sieve_kind.rs.html | 20 +- src/euclid/crt.rs.html | 4 +- src/euclid/ext_gcd.rs.html | 4 +- src/euclid/gcd.rs.html | 4 +- src/euclid/lib.rs.html | 12 +- src/fp/ext_gcd.rs.html | 6 +- src/fp/factorial.rs.html | 4 +- src/fp/fourier.rs.html | 4 +- src/fp/lib.rs.html | 42 +- src/fps/lib.rs.html | 20 +- src/gco/lib.rs.html | 8 +- src/gridnei/lib.rs.html | 581 ------------- src/gss/lib.rs.html | 30 +- src/heap_slope_trick/lib.rs.html | 40 +- src/heap_tricks/lib.rs.html | 62 +- src/hld/lib.rs.html | 18 +- src/hopkarp/lib.rs.html | 150 ++-- src/hungarian/lib.rs.html | 36 +- src/interval_heap/lib.rs.html | 6 +- src/io/lib.rs.html | 8 +- src/lagrange/lib.rs.html | 22 +- src/lazy_segbeats/lib.rs.html | 48 +- src/lazy_segtree/lib.rs.html | 4 +- src/lg/lib.rs.html | 120 +-- src/lg/map.rs.html | 36 +- src/lg/table.rs.html | 34 +- src/lg/vec2.rs.html | 12 +- src/lg/vecs.rs.html | 6 +- src/lin_ineq/lib.rs.html | 78 +- src/link_cut_tree/base.rs.html | 8 +- src/link_cut_tree/lib.rs.html | 4 +- src/low_link/lib.rs.html | 4 +- src/make_graph/lib.rs.html | 4 +- src/manacher/lib.rs.html | 10 +- src/mincost_flow/lib.rs.html | 28 +- src/monotone_minima/lib.rs.html | 12 +- src/naive_poly/lib.rs.html | 12 +- src/newton/lib.rs.html | 10 +- src/next_permutation/lib.rs.html | 4 +- src/numeric_search/lib.rs.html | 88 +- src/open/lib.rs.html | 71 -- .../lib.rs.html | 38 +- src/radix_heap/lib.rs.html | 4 +- src/randtools/algo.rs.html | 4 +- src/randtools/lib.rs.html | 6 +- src/rational/lib.rs.html | 54 +- src/rb/balance.rs.html | 128 +-- src/rb/lib.rs.html | 4 +- src/rb/map.rs.html | 124 +-- src/rb/seq.rs.html | 148 ++-- src/rbtree/lib.rs.html | 20 +- src/rbtree/nonempty.rs.html | 22 +- src/riff/binary_search.rs.html | 155 ++++ src/riff/bitmask_iterators.rs.html | 205 +++++ src/riff/change_min_max.rs.html | 67 ++ src/riff/lib.rs.html | 63 ++ .../numeric_traits.rs.html} | 30 +- src/riff/pop_if.rs.html | 203 +++++ src/scc/lib.rs.html | 8 +- src/segbeats/lib.rs.html | 48 +- src/segbeats_task3/lib.rs.html | 54 +- src/segtree/lib.rs.html | 88 +- src/skew_heap/lib.rs.html | 12 +- src/slicemore/lib.rs.html | 339 -------- src/snippetter/main.rs.html | 28 +- src/sort_tree/lib.rs.html | 205 ----- src/sparse_table/lib.rs.html | 24 +- src/splay_tree/lib.rs.html | 48 +- src/splay_tree/node.rs.html | 10 +- src/suffix_array/lib.rs.html | 16 +- src/suffix_sum/lib.rs.html | 777 ------------------ src/swag/lib.rs.html | 44 +- src/tree_fold/lib.rs.html | 8 +- src/trial/divisors.rs.html | 6 +- src/trial/lib.rs.html | 8 +- src/trial/prime_factors.rs.html | 8 +- src/trie/lib.rs.html | 4 +- src/trie/trie_map.rs.html | 94 +-- src/trie/trie_set.rs.html | 18 +- src/two_sat/lib.rs.html | 18 +- src/uf_checklist/lib.rs.html | 26 +- src/union_find/lib.rs.html | 14 +- src/veb/lib.rs.html | 160 ++-- src/vec_lines/lib.rs.html | 12 +- src/wavelet_matrix/lib.rs.html | 50 +- src/z_algo/lib.rs.html | 12 +- src/zeta/lib.rs.html | 22 +- static.files/ayu-614652228113ac93.css | 1 + static.files/clipboard-7571035ce49a181d.svg | 1 + static.files/dark-1097f8e92a01e3cf.css | 1 + .../favicon-16x16-8b506e7a72182f1c.png | Bin 0 -> 715 bytes static.files/light-0f8c037637f9eb3e.css | 1 + static.files/main-921df33f47b8780c.js | 11 - static.files/main-f61008743c98d196.js | 7 + static.files/noscript-13285aec31fa243e.css | 1 + static.files/noscript-3b12f09e550e0385.css | 1 - static.files/rustdoc-492a78a4a87dcc01.css | 47 -- static.files/rustdoc-ba5701c5741a7b69.css | 8 + static.files/search-a99f1315e7cc5121.js | 5 - static.files/search-e077946657036a58.js | 1 + static.files/settings-298e1ea74db45b39.js | 17 + static.files/settings-4313503d2e1961c2.js | 17 - static.files/settings-7bfb4c59cc6bc502.css | 3 + .../source-script-905937fbbdc8e9ea.js | 1 + static.files/src-script-e66d777a5a92e9b2.js | 1 - static.files/storage-118b08c4c78b968e.js | 24 - static.files/storage-62ce34ea385b278a.js | 1 + static.files/wheel-7b819b6101059cd0.svg | 1 + suffix_array/all.html | 4 +- suffix_array/fn.lcp_array.html | 6 +- suffix_array/fn.suffix_array.html | 8 +- suffix_array/index.html | 6 +- suffix_sum/all.html | 35 - suffix_sum/index.html | 43 - suffix_sum/sidebar-items.js | 1 - suffix_sum/struct.SuffixSum.html | 59 -- suffix_sum/struct.SuffixSum2d.html | 64 -- suffix_sum/trait.Op.html | 47 -- swag/all.html | 4 +- swag/index.html | 12 +- swag/struct.DequeueSwag.html | 96 +-- swag/trait.Op.html | 10 +- trait.impl/binary/trait.Pow.js | 9 - trait.impl/bitutils/trait.Unsigned.js | 9 - trait.impl/cht/trait.ConvexOrConcave.js | 9 - trait.impl/cipolla/trait.Unsigned.js | 9 - trait.impl/cmpmore/trait.CmpMore.js | 9 - trait.impl/core/clone/trait.Clone.js | 9 - trait.impl/core/cmp/trait.Eq.js | 9 - trait.impl/core/cmp/trait.Ord.js | 9 - trait.impl/core/cmp/trait.PartialEq.js | 9 - trait.impl/core/cmp/trait.PartialOrd.js | 9 - trait.impl/core/convert/trait.From.js | 9 - trait.impl/core/default/trait.Default.js | 9 - trait.impl/core/fmt/trait.Debug.js | 9 - trait.impl/core/fmt/trait.Display.js | 9 - trait.impl/core/hash/trait.Hash.js | 9 - .../core/iter/traits/accum/trait.Product.js | 9 - .../core/iter/traits/accum/trait.Sum.js | 9 - .../core/iter/traits/collect/trait.Extend.js | 9 - .../iter/traits/collect/trait.FromIterator.js | 9 - .../iter/traits/collect/trait.IntoIterator.js | 9 - .../double_ended/trait.DoubleEndedIterator.js | 9 - .../iter/traits/iterator/trait.Iterator.js | 9 - .../iter/traits/marker/trait.FusedIterator.js | 9 - trait.impl/core/marker/trait.Copy.js | 9 - trait.impl/core/marker/trait.Freeze.js | 9 - trait.impl/core/marker/trait.Send.js | 9 - .../core/marker/trait.StructuralPartialEq.js | 9 - trait.impl/core/marker/trait.Sync.js | 9 - trait.impl/core/marker/trait.Unpin.js | 9 - trait.impl/core/ops/arith/trait.Add.js | 9 - trait.impl/core/ops/arith/trait.AddAssign.js | 9 - trait.impl/core/ops/arith/trait.Div.js | 9 - trait.impl/core/ops/arith/trait.DivAssign.js | 9 - trait.impl/core/ops/arith/trait.Mul.js | 9 - trait.impl/core/ops/arith/trait.MulAssign.js | 9 - trait.impl/core/ops/arith/trait.Neg.js | 9 - trait.impl/core/ops/arith/trait.Sub.js | 9 - trait.impl/core/ops/arith/trait.SubAssign.js | 9 - trait.impl/core/ops/bit/trait.BitAndAssign.js | 9 - trait.impl/core/ops/bit/trait.BitOrAssign.js | 9 - trait.impl/core/ops/bit/trait.BitXorAssign.js | 9 - trait.impl/core/ops/bit/trait.ShlAssign.js | 9 - trait.impl/core/ops/bit/trait.ShrAssign.js | 9 - trait.impl/core/ops/deref/trait.Deref.js | 9 - trait.impl/core/ops/deref/trait.DerefMut.js | 9 - trait.impl/core/ops/drop/trait.Drop.js | 9 - trait.impl/core/ops/index/trait.Index.js | 9 - trait.impl/core/ops/index/trait.IndexMut.js | 9 - .../panic/unwind_safe/trait.RefUnwindSafe.js | 9 - .../panic/unwind_safe/trait.UnwindSafe.js | 9 - trait.impl/core/str/traits/trait.FromStr.js | 9 - trait.impl/dinic/trait.Value.js | 9 - .../erato/converters/trait.PrimeFactors.js | 9 - trait.impl/erato/int/trait.Int.js | 9 - trait.impl/euclid/trait.Int.js | 9 - trait.impl/euclid/trait.Signed.js | 9 - trait.impl/euclid/trait.Unsigned.js | 9 - trait.impl/fp/trait.PrimitiveRoot.js | 9 - trait.impl/gridnei/trait.GridIterator.js | 9 - trait.impl/gss/trait.Float.js | 9 - trait.impl/gss/trait.Golden.js | 9 - trait.impl/gss/trait.Int.js | 9 - trait.impl/heap_tricks/trait.Handler.js | 9 - trait.impl/hungarian/trait.Value.js | 9 - trait.impl/io/trait.ParseLine.js | 9 - trait.impl/lazy_segbeats/trait.Elm.js | 9 - trait.impl/lin_ineq/trait.Signed.js | 9 - trait.impl/numeric_search/trait.Float.js | 9 - trait.impl/numeric_search/trait.Signed.js | 9 - trait.impl/numeric_search/trait.Unsigned.js | 9 - .../distribution/trait.Distribution.js | 9 - trait.impl/rational/trait.Signed.js | 9 - trait.impl/rbtree/trait.Op.js | 9 - trait.impl/segbeats/trait.Elm.js | 9 - trait.impl/segbeats_task3/trait.Elm.js | 9 - trait.impl/serde/ser/trait.Serialize.js | 9 - trait.impl/slicemore/trait.SliceMore.js | 9 - trait.impl/splay_tree/trait.LazyOps.js | 9 - trait.impl/splay_tree/trait.Value.js | 9 - trait.impl/trial/trait.Value.js | 9 - trait.impl/union_find/trait.Op.js | 9 - trait.impl/vec_lines/trait.Constraint.js | 9 - trait.impl/vec_lines/trait.Signed.js | 9 - tree_fold/all.html | 4 +- tree_fold/fn.two_way_tree_fold.html | 14 +- tree_fold/index.html | 14 +- tree_fold/struct.TwoWayTreeFoldResult.html | 46 +- tree_fold/trait.Op.html | 32 +- trial/all.html | 4 +- trial/fn.divisors.html | 6 +- trial/fn.divisors_unordered.html | 10 +- trial/fn.prime_factors.html | 8 +- trial/fn.prime_factors_rle.html | 8 +- trial/index.html | 8 +- trial/struct.Divisors.html | 377 +++++---- trial/struct.PrimeFactors.html | 377 +++++---- trial/struct.PrimeFactorsRle.html | 377 +++++---- trial/trait.Value.html | 29 +- trie/all.html | 4 +- trie/constant.DEGREE.html | 4 +- trie/index.html | 6 +- trie/struct.TrieMap.html | 176 ++-- trie/struct.TrieSet.html | 58 +- two_sat/all.html | 4 +- two_sat/index.html | 14 +- two_sat/struct.TwoSat.html | 40 +- .../link_cut_tree/struct.LinkCutTreeBase.js | 9 - type.impl/vec_lines/struct.VecLines.js | 9 - uf_checklist/all.html | 4 +- uf_checklist/index.html | 22 +- uf_checklist/struct.Iter.html | 366 ++++----- uf_checklist/struct.UfChecklist.html | 69 +- union_find/all.html | 4 +- union_find/enum.EdgeCount.html | 24 +- union_find/enum.HasCycle.html | 24 +- union_find/enum.VertexCount.html | 24 +- union_find/index.html | 16 +- union_find/struct.UnionFind.html | 54 +- union_find/trait.Op.html | 16 +- veb/all.html | 4 +- veb/enum.VebSet.html | 84 +- veb/index.html | 14 +- veb/struct.VebMap.html | 268 +++--- vec_lines/all.html | 4 +- vec_lines/enum.DecreasingTilt.html | 34 +- vec_lines/enum.IncreasingTilt.html | 34 +- vec_lines/index.html | 6 +- vec_lines/struct.Line.html | 53 +- vec_lines/struct.VecLines.html | 82 +- vec_lines/trait.Constraint.html | 14 +- vec_lines/trait.Signed.html | 15 +- vec_lines/type.VecLinesDecreasing.html | 6 +- vec_lines/type.VecLinesIncreasing.html | 6 +- wavelet_matrix/all.html | 4 +- wavelet_matrix/index.html | 16 +- wavelet_matrix/struct.SpanInNode.html | 48 +- wavelet_matrix/struct.Spans.html | 378 +++++---- wavelet_matrix/struct.StaticBitVec.html | 44 +- wavelet_matrix/struct.WaveletMatrix.html | 112 +-- z_algo/all.html | 4 +- z_algo/fn.z_algo.html | 8 +- z_algo/index.html | 4 +- zeta/all.html | 4 +- zeta/fn.add.html | 4 +- zeta/fn.add_inv.html | 4 +- zeta/fn.add_rinv.html | 4 +- zeta/fn.aggr.html | 4 +- zeta/fn.bitand.html | 4 +- zeta/fn.bitor.html | 4 +- zeta/fn.bitxor.html | 4 +- zeta/fn.for_each.html | 4 +- zeta/fn.max.html | 4 +- zeta/fn.min.html | 4 +- zeta/fn.radd.html | 4 +- zeta/fn.rbitand.html | 4 +- zeta/fn.rbitor.html | 4 +- zeta/fn.rbitxor.html | 4 +- zeta/fn.rmax.html | 4 +- zeta/fn.rmin.html | 4 +- zeta/fn.rzeta.html | 12 +- zeta/fn.zeta.html | 12 +- zeta/index.html | 12 +- 937 files changed, 11000 insertions(+), 17773 deletions(-) delete mode 100644 advance/all.html delete mode 100644 advance/fn.advance_until.html delete mode 100644 advance/fn.advance_visit_until.html delete mode 100644 advance/index.html delete mode 100644 advance/sidebar-items.js delete mode 100644 bitutils/all.html delete mode 100644 bitutils/combinations/fn.combinations.html delete mode 100644 bitutils/combinations/struct.Combinations.html delete mode 100644 bitutils/fn.combinations.html delete mode 100644 bitutils/fn.subsets.html delete mode 100644 bitutils/index.html delete mode 100644 bitutils/sidebar-items.js delete mode 100644 bitutils/struct.Combinations.html delete mode 100644 bitutils/struct.Subsets.html delete mode 100644 bitutils/subsets/fn.subsets.html delete mode 100644 bitutils/subsets/struct.Subsets.html delete mode 100644 bitutils/trait.Unsigned.html delete mode 100644 cmpmore/all.html delete mode 100644 cmpmore/fn.change_max.html delete mode 100644 cmpmore/fn.change_min.html delete mode 100644 cmpmore/index.html delete mode 100644 cmpmore/macro.change_max!.html delete mode 100644 cmpmore/macro.change_max.html delete mode 100644 cmpmore/macro.change_min!.html delete mode 100644 cmpmore/macro.change_min.html delete mode 100644 cmpmore/sidebar-items.js delete mode 100644 cmpmore/trait.CmpMore.html delete mode 100644 gridnei/all.html delete mode 100644 gridnei/fn.grid4.html delete mode 100644 gridnei/fn.grid4encode.html delete mode 100644 gridnei/index.html delete mode 100644 gridnei/macro.grid_iter!.html delete mode 100644 gridnei/macro.grid_iter.html delete mode 100644 gridnei/sidebar-items.js delete mode 100644 gridnei/struct.Encode.html delete mode 100644 gridnei/struct.Grid0.html delete mode 100644 gridnei/struct.Grid1.html delete mode 100644 gridnei/struct.Grid2.html delete mode 100644 gridnei/struct.Grid3.html delete mode 100644 gridnei/struct.Grid4.html delete mode 100644 gridnei/struct.Grid5.html delete mode 100644 gridnei/struct.Grid6.html delete mode 100644 gridnei/struct.Grid7.html delete mode 100644 gridnei/struct.Grid8.html delete mode 100644 gridnei/trait.GridIterator.html create mode 100644 implementors/alloc/string/trait.ToString.js create mode 100644 implementors/binary/trait.Pow.js create mode 100644 implementors/cht/trait.ConvexOrConcave.js create mode 100644 implementors/cipolla/trait.Unsigned.js create mode 100644 implementors/core/clone/trait.Clone.js create mode 100644 implementors/core/cmp/trait.Eq.js create mode 100644 implementors/core/cmp/trait.Ord.js create mode 100644 implementors/core/cmp/trait.PartialEq.js create mode 100644 implementors/core/cmp/trait.PartialOrd.js create mode 100644 implementors/core/convert/trait.From.js create mode 100644 implementors/core/default/trait.Default.js create mode 100644 implementors/core/fmt/trait.Debug.js create mode 100644 implementors/core/fmt/trait.Display.js create mode 100644 implementors/core/hash/trait.Hash.js create mode 100644 implementors/core/iter/traits/accum/trait.Product.js create mode 100644 implementors/core/iter/traits/accum/trait.Sum.js create mode 100644 implementors/core/iter/traits/collect/trait.Extend.js create mode 100644 implementors/core/iter/traits/collect/trait.FromIterator.js create mode 100644 implementors/core/iter/traits/collect/trait.IntoIterator.js create mode 100644 implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js create mode 100644 implementors/core/iter/traits/iterator/trait.Iterator.js create mode 100644 implementors/core/iter/traits/marker/trait.FusedIterator.js create mode 100644 implementors/core/marker/trait.Copy.js create mode 100644 implementors/core/marker/trait.Freeze.js create mode 100644 implementors/core/marker/trait.Send.js create mode 100644 implementors/core/marker/trait.StructuralEq.js create mode 100644 implementors/core/marker/trait.StructuralPartialEq.js create mode 100644 implementors/core/marker/trait.Sync.js create mode 100644 implementors/core/marker/trait.Unpin.js create mode 100644 implementors/core/ops/arith/trait.Add.js create mode 100644 implementors/core/ops/arith/trait.AddAssign.js create mode 100644 implementors/core/ops/arith/trait.Div.js create mode 100644 implementors/core/ops/arith/trait.DivAssign.js create mode 100644 implementors/core/ops/arith/trait.Mul.js create mode 100644 implementors/core/ops/arith/trait.MulAssign.js create mode 100644 implementors/core/ops/arith/trait.Neg.js create mode 100644 implementors/core/ops/arith/trait.Sub.js create mode 100644 implementors/core/ops/arith/trait.SubAssign.js create mode 100644 implementors/core/ops/bit/trait.BitAndAssign.js create mode 100644 implementors/core/ops/bit/trait.BitOrAssign.js create mode 100644 implementors/core/ops/bit/trait.BitXorAssign.js create mode 100644 implementors/core/ops/bit/trait.ShlAssign.js create mode 100644 implementors/core/ops/bit/trait.ShrAssign.js create mode 100644 implementors/core/ops/deref/trait.Deref.js create mode 100644 implementors/core/ops/deref/trait.DerefMut.js create mode 100644 implementors/core/ops/drop/trait.Drop.js create mode 100644 implementors/core/ops/index/trait.Index.js create mode 100644 implementors/core/ops/index/trait.IndexMut.js create mode 100644 implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js create mode 100644 implementors/core/panic/unwind_safe/trait.UnwindSafe.js create mode 100644 implementors/core/str/traits/trait.FromStr.js create mode 100644 implementors/dinic/trait.Value.js create mode 100644 implementors/erato/converters/trait.PrimeFactors.js create mode 100644 implementors/erato/int/trait.Int.js create mode 100644 implementors/euclid/trait.Int.js create mode 100644 implementors/euclid/trait.Signed.js create mode 100644 implementors/euclid/trait.Unsigned.js create mode 100644 implementors/fp/trait.PrimitiveRoot.js create mode 100644 implementors/gss/trait.Float.js create mode 100644 implementors/gss/trait.Golden.js create mode 100644 implementors/gss/trait.Int.js create mode 100644 implementors/heap_tricks/trait.Handler.js create mode 100644 implementors/hungarian/trait.Value.js create mode 100644 implementors/io/trait.ParseLine.js create mode 100644 implementors/lazy_segbeats/trait.Elm.js create mode 100644 implementors/lin_ineq/trait.Signed.js create mode 100644 implementors/numeric_search/trait.Float.js create mode 100644 implementors/numeric_search/trait.Signed.js create mode 100644 implementors/numeric_search/trait.Unsigned.js create mode 100644 implementors/rand/distributions/distribution/trait.Distribution.js create mode 100644 implementors/rational/trait.Signed.js create mode 100644 implementors/rbtree/trait.Op.js create mode 100644 implementors/riff/binary_search/trait.BinarySearch.js create mode 100644 implementors/riff/change_min_max/trait.ChangeMinMax.js create mode 100644 implementors/riff/numeric_traits/trait.Unsigned.js create mode 100644 implementors/riff/pop_if/trait.PopIf.js create mode 100644 implementors/segbeats/trait.Elm.js create mode 100644 implementors/segbeats_task3/trait.Elm.js create mode 100644 implementors/serde/ser/trait.Serialize.js create mode 100644 implementors/splay_tree/trait.LazyOps.js create mode 100644 implementors/splay_tree/trait.Value.js create mode 100644 implementors/trial/trait.Value.js create mode 100644 implementors/union_find/trait.Op.js create mode 100644 implementors/vec_lines/trait.Constraint.js create mode 100644 implementors/vec_lines/trait.Signed.js create mode 100644 lazy_segbeats/fn.open.html delete mode 100644 open/all.html delete mode 100644 open/fn.open.html delete mode 100644 open/index.html delete mode 100644 open/sidebar-items.js create mode 100644 riff/all.html create mode 100644 riff/binary_search/trait.BinarySearch.html create mode 100644 riff/bitmask_iterators/fn.bitmask_combinations.html create mode 100644 riff/bitmask_iterators/fn.bitmask_subsets.html create mode 100644 riff/change_min_max/trait.ChangeMinMax.html create mode 100644 riff/fn.bitmask_combinations.html create mode 100644 riff/fn.bitmask_subsets.html create mode 100644 riff/index.html create mode 100644 riff/numeric_traits/trait.Unsigned.html create mode 100644 riff/pop_if/trait.PopIf.html create mode 100644 riff/sidebar-items.js create mode 100644 riff/trait.BinarySearch.html create mode 100644 riff/trait.ChangeMinMax.html create mode 100644 riff/trait.PopIf.html create mode 100644 riff/trait.Unsigned.html delete mode 100644 search.desc/accum/accum-desc-0-.js delete mode 100644 search.desc/advance/advance-desc-0-.js delete mode 100644 search.desc/avl_tree/avl_tree-desc-0-.js delete mode 100644 search.desc/bfs/bfs-desc-0-.js delete mode 100644 search.desc/bfs01/bfs01-desc-0-.js delete mode 100644 search.desc/binary/binary-desc-0-.js delete mode 100644 search.desc/bitutils/bitutils-desc-0-.js delete mode 100644 search.desc/bitvec/bitvec-desc-0-.js delete mode 100644 search.desc/bsgs/bsgs-desc-0-.js delete mode 100644 search.desc/cht/cht-desc-0-.js delete mode 100644 search.desc/cipolla/cipolla-desc-0-.js delete mode 100644 search.desc/cmpmore/cmpmore-desc-0-.js delete mode 100644 search.desc/convex_hull/convex_hull-desc-0-.js delete mode 100644 search.desc/dfs/dfs-desc-0-.js delete mode 100644 search.desc/dijkstra_radix_heap/dijkstra_radix_heap-desc-0-.js delete mode 100644 search.desc/dinic/dinic-desc-0-.js delete mode 100644 search.desc/dual_segtree/dual_segtree-desc-0-.js delete mode 100644 search.desc/elim/elim-desc-0-.js delete mode 100644 search.desc/erato/erato-desc-0-.js delete mode 100644 search.desc/euclid/euclid-desc-0-.js delete mode 100644 search.desc/fp/fp-desc-0-.js delete mode 100644 search.desc/fps/fps-desc-0-.js delete mode 100644 search.desc/gco/gco-desc-0-.js delete mode 100644 search.desc/gridnei/gridnei-desc-0-.js delete mode 100644 search.desc/gss/gss-desc-0-.js delete mode 100644 search.desc/heap_slope_trick/heap_slope_trick-desc-0-.js delete mode 100644 search.desc/heap_tricks/heap_tricks-desc-0-.js delete mode 100644 search.desc/hld/hld-desc-0-.js delete mode 100644 search.desc/hopkarp/hopkarp-desc-0-.js delete mode 100644 search.desc/hungarian/hungarian-desc-0-.js delete mode 100644 search.desc/interval_heap/interval_heap-desc-0-.js delete mode 100644 search.desc/io/io-desc-0-.js delete mode 100644 search.desc/lagrange/lagrange-desc-0-.js delete mode 100644 search.desc/lazy_segbeats/lazy_segbeats-desc-0-.js delete mode 100644 search.desc/lazy_segtree/lazy_segtree-desc-0-.js delete mode 100644 search.desc/lg/lg-desc-0-.js delete mode 100644 search.desc/lin_ineq/lin_ineq-desc-0-.js delete mode 100644 search.desc/link_cut_tree/link_cut_tree-desc-0-.js delete mode 100644 search.desc/low_link/low_link-desc-0-.js delete mode 100644 search.desc/make_graph/make_graph-desc-0-.js delete mode 100644 search.desc/manacher/manacher-desc-0-.js delete mode 100644 search.desc/mincost_flow/mincost_flow-desc-0-.js delete mode 100644 search.desc/monotone_minima/monotone_minima-desc-0-.js delete mode 100644 search.desc/naive_poly/naive_poly-desc-0-.js delete mode 100644 search.desc/newton/newton-desc-0-.js delete mode 100644 search.desc/next_permutation/next_permutation-desc-0-.js delete mode 100644 search.desc/numeric_search/numeric_search-desc-0-.js delete mode 100644 search.desc/open/open-desc-0-.js delete mode 100644 search.desc/partially_persistent_union_find/partially_persistent_union_find-desc-0-.js delete mode 100644 search.desc/radix_heap/radix_heap-desc-0-.js delete mode 100644 search.desc/randtools/randtools-desc-0-.js delete mode 100644 search.desc/rational/rational-desc-0-.js delete mode 100644 search.desc/rb/rb-desc-0-.js delete mode 100644 search.desc/rbtree/rbtree-desc-0-.js delete mode 100644 search.desc/scc/scc-desc-0-.js delete mode 100644 search.desc/segbeats/segbeats-desc-0-.js delete mode 100644 search.desc/segbeats_task3/segbeats_task3-desc-0-.js delete mode 100644 search.desc/segtree/segtree-desc-0-.js delete mode 100644 search.desc/skew_heap/skew_heap-desc-0-.js delete mode 100644 search.desc/slicemore/slicemore-desc-0-.js delete mode 100644 search.desc/snippetter/snippetter-desc-0-.js delete mode 100644 search.desc/sort_tree/sort_tree-desc-0-.js delete mode 100644 search.desc/sparse_table/sparse_table-desc-0-.js delete mode 100644 search.desc/splay_tree/splay_tree-desc-0-.js delete mode 100644 search.desc/suffix_array/suffix_array-desc-0-.js delete mode 100644 search.desc/suffix_sum/suffix_sum-desc-0-.js delete mode 100644 search.desc/swag/swag-desc-0-.js delete mode 100644 search.desc/tree_fold/tree_fold-desc-0-.js delete mode 100644 search.desc/trial/trial-desc-0-.js delete mode 100644 search.desc/trie/trie-desc-0-.js delete mode 100644 search.desc/two_sat/two_sat-desc-0-.js delete mode 100644 search.desc/uf_checklist/uf_checklist-desc-0-.js delete mode 100644 search.desc/union_find/union_find-desc-0-.js delete mode 100644 search.desc/veb/veb-desc-0-.js delete mode 100644 search.desc/vec_lines/vec_lines-desc-0-.js delete mode 100644 search.desc/wavelet_matrix/wavelet_matrix-desc-0-.js delete mode 100644 search.desc/z_algo/z_algo-desc-0-.js delete mode 100644 search.desc/zeta/zeta-desc-0-.js create mode 100644 segbeats/fn.open.html create mode 100644 segbeats_task3/fn.open.html delete mode 100644 slicemore/all.html delete mode 100644 slicemore/fn.lower_bound.html delete mode 100644 slicemore/fn.lower_bound_by.html delete mode 100644 slicemore/fn.lower_bound_by_key.html delete mode 100644 slicemore/fn.partition_point.html delete mode 100644 slicemore/fn.upper_bound.html delete mode 100644 slicemore/fn.upper_bound_by.html delete mode 100644 slicemore/fn.upper_bound_by_key.html delete mode 100644 slicemore/index.html delete mode 100644 slicemore/sidebar-items.js delete mode 100644 slicemore/trait.SliceMore.html delete mode 100644 sort_tree/all.html delete mode 100644 sort_tree/fn.remove_parent.html delete mode 100644 sort_tree/fn.sort_tree.html delete mode 100644 sort_tree/fn.sort_tree_by.html delete mode 100644 sort_tree/fn.sort_tree_remove_parent.html delete mode 100644 sort_tree/index.html delete mode 100644 sort_tree/sidebar-items.js create mode 100644 source-files.js delete mode 100644 src-files.js delete mode 100644 src/advance/lib.rs.html delete mode 100644 src/bitutils/combinations.rs.html delete mode 100644 src/bitutils/subsets.rs.html delete mode 100644 src/cmpmore/lib.rs.html delete mode 100644 src/gridnei/lib.rs.html delete mode 100644 src/open/lib.rs.html create mode 100644 src/riff/binary_search.rs.html create mode 100644 src/riff/bitmask_iterators.rs.html create mode 100644 src/riff/change_min_max.rs.html create mode 100644 src/riff/lib.rs.html rename src/{bitutils/lib.rs.html => riff/numeric_traits.rs.html} (62%) create mode 100644 src/riff/pop_if.rs.html delete mode 100644 src/slicemore/lib.rs.html delete mode 100644 src/sort_tree/lib.rs.html delete mode 100644 src/suffix_sum/lib.rs.html create mode 100644 static.files/ayu-614652228113ac93.css create mode 100644 static.files/clipboard-7571035ce49a181d.svg create mode 100644 static.files/dark-1097f8e92a01e3cf.css create mode 100644 static.files/favicon-16x16-8b506e7a72182f1c.png create mode 100644 static.files/light-0f8c037637f9eb3e.css delete mode 100644 static.files/main-921df33f47b8780c.js create mode 100644 static.files/main-f61008743c98d196.js create mode 100644 static.files/noscript-13285aec31fa243e.css delete mode 100644 static.files/noscript-3b12f09e550e0385.css delete mode 100644 static.files/rustdoc-492a78a4a87dcc01.css create mode 100644 static.files/rustdoc-ba5701c5741a7b69.css delete mode 100644 static.files/search-a99f1315e7cc5121.js create mode 100644 static.files/search-e077946657036a58.js create mode 100644 static.files/settings-298e1ea74db45b39.js delete mode 100644 static.files/settings-4313503d2e1961c2.js create mode 100644 static.files/settings-7bfb4c59cc6bc502.css create mode 100644 static.files/source-script-905937fbbdc8e9ea.js delete mode 100644 static.files/src-script-e66d777a5a92e9b2.js delete mode 100644 static.files/storage-118b08c4c78b968e.js create mode 100644 static.files/storage-62ce34ea385b278a.js create mode 100644 static.files/wheel-7b819b6101059cd0.svg delete mode 100644 suffix_sum/all.html delete mode 100644 suffix_sum/index.html delete mode 100644 suffix_sum/sidebar-items.js delete mode 100644 suffix_sum/struct.SuffixSum.html delete mode 100644 suffix_sum/struct.SuffixSum2d.html delete mode 100644 suffix_sum/trait.Op.html delete mode 100644 trait.impl/binary/trait.Pow.js delete mode 100644 trait.impl/bitutils/trait.Unsigned.js delete mode 100644 trait.impl/cht/trait.ConvexOrConcave.js delete mode 100644 trait.impl/cipolla/trait.Unsigned.js delete mode 100644 trait.impl/cmpmore/trait.CmpMore.js delete mode 100644 trait.impl/core/clone/trait.Clone.js delete mode 100644 trait.impl/core/cmp/trait.Eq.js delete mode 100644 trait.impl/core/cmp/trait.Ord.js delete mode 100644 trait.impl/core/cmp/trait.PartialEq.js delete mode 100644 trait.impl/core/cmp/trait.PartialOrd.js delete mode 100644 trait.impl/core/convert/trait.From.js delete mode 100644 trait.impl/core/default/trait.Default.js delete mode 100644 trait.impl/core/fmt/trait.Debug.js delete mode 100644 trait.impl/core/fmt/trait.Display.js delete mode 100644 trait.impl/core/hash/trait.Hash.js delete mode 100644 trait.impl/core/iter/traits/accum/trait.Product.js delete mode 100644 trait.impl/core/iter/traits/accum/trait.Sum.js delete mode 100644 trait.impl/core/iter/traits/collect/trait.Extend.js delete mode 100644 trait.impl/core/iter/traits/collect/trait.FromIterator.js delete mode 100644 trait.impl/core/iter/traits/collect/trait.IntoIterator.js delete mode 100644 trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js delete mode 100644 trait.impl/core/iter/traits/iterator/trait.Iterator.js delete mode 100644 trait.impl/core/iter/traits/marker/trait.FusedIterator.js delete mode 100644 trait.impl/core/marker/trait.Copy.js delete mode 100644 trait.impl/core/marker/trait.Freeze.js delete mode 100644 trait.impl/core/marker/trait.Send.js delete mode 100644 trait.impl/core/marker/trait.StructuralPartialEq.js delete mode 100644 trait.impl/core/marker/trait.Sync.js delete mode 100644 trait.impl/core/marker/trait.Unpin.js delete mode 100644 trait.impl/core/ops/arith/trait.Add.js delete mode 100644 trait.impl/core/ops/arith/trait.AddAssign.js delete mode 100644 trait.impl/core/ops/arith/trait.Div.js delete mode 100644 trait.impl/core/ops/arith/trait.DivAssign.js delete mode 100644 trait.impl/core/ops/arith/trait.Mul.js delete mode 100644 trait.impl/core/ops/arith/trait.MulAssign.js delete mode 100644 trait.impl/core/ops/arith/trait.Neg.js delete mode 100644 trait.impl/core/ops/arith/trait.Sub.js delete mode 100644 trait.impl/core/ops/arith/trait.SubAssign.js delete mode 100644 trait.impl/core/ops/bit/trait.BitAndAssign.js delete mode 100644 trait.impl/core/ops/bit/trait.BitOrAssign.js delete mode 100644 trait.impl/core/ops/bit/trait.BitXorAssign.js delete mode 100644 trait.impl/core/ops/bit/trait.ShlAssign.js delete mode 100644 trait.impl/core/ops/bit/trait.ShrAssign.js delete mode 100644 trait.impl/core/ops/deref/trait.Deref.js delete mode 100644 trait.impl/core/ops/deref/trait.DerefMut.js delete mode 100644 trait.impl/core/ops/drop/trait.Drop.js delete mode 100644 trait.impl/core/ops/index/trait.Index.js delete mode 100644 trait.impl/core/ops/index/trait.IndexMut.js delete mode 100644 trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js delete mode 100644 trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js delete mode 100644 trait.impl/core/str/traits/trait.FromStr.js delete mode 100644 trait.impl/dinic/trait.Value.js delete mode 100644 trait.impl/erato/converters/trait.PrimeFactors.js delete mode 100644 trait.impl/erato/int/trait.Int.js delete mode 100644 trait.impl/euclid/trait.Int.js delete mode 100644 trait.impl/euclid/trait.Signed.js delete mode 100644 trait.impl/euclid/trait.Unsigned.js delete mode 100644 trait.impl/fp/trait.PrimitiveRoot.js delete mode 100644 trait.impl/gridnei/trait.GridIterator.js delete mode 100644 trait.impl/gss/trait.Float.js delete mode 100644 trait.impl/gss/trait.Golden.js delete mode 100644 trait.impl/gss/trait.Int.js delete mode 100644 trait.impl/heap_tricks/trait.Handler.js delete mode 100644 trait.impl/hungarian/trait.Value.js delete mode 100644 trait.impl/io/trait.ParseLine.js delete mode 100644 trait.impl/lazy_segbeats/trait.Elm.js delete mode 100644 trait.impl/lin_ineq/trait.Signed.js delete mode 100644 trait.impl/numeric_search/trait.Float.js delete mode 100644 trait.impl/numeric_search/trait.Signed.js delete mode 100644 trait.impl/numeric_search/trait.Unsigned.js delete mode 100644 trait.impl/rand/distributions/distribution/trait.Distribution.js delete mode 100644 trait.impl/rational/trait.Signed.js delete mode 100644 trait.impl/rbtree/trait.Op.js delete mode 100644 trait.impl/segbeats/trait.Elm.js delete mode 100644 trait.impl/segbeats_task3/trait.Elm.js delete mode 100644 trait.impl/serde/ser/trait.Serialize.js delete mode 100644 trait.impl/slicemore/trait.SliceMore.js delete mode 100644 trait.impl/splay_tree/trait.LazyOps.js delete mode 100644 trait.impl/splay_tree/trait.Value.js delete mode 100644 trait.impl/trial/trait.Value.js delete mode 100644 trait.impl/union_find/trait.Op.js delete mode 100644 trait.impl/vec_lines/trait.Constraint.js delete mode 100644 trait.impl/vec_lines/trait.Signed.js delete mode 100644 type.impl/link_cut_tree/struct.LinkCutTreeBase.js delete mode 100644 type.impl/vec_lines/struct.VecLines.js diff --git a/accum/all.html b/accum/all.html index ea198e5d..4ac5380e 100644 --- a/accum/all.html +++ b/accum/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-
\ No newline at end of file +
\ No newline at end of file diff --git a/accum/fn.add.html b/accum/fn.add.html index abbc157a..75c8aca9 100644 --- a/accum/fn.add.html +++ b/accum/fn.add.html @@ -1,4 +1,4 @@ -add in accum - Rustadd in accum - Rust
-

Function accum::add

source ·
pub fn add<T: Copy + AddAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::add

source ·
pub fn add<T: Copy + AddAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.add_inv.html b/accum/fn.add_inv.html index f9916854..e08629d7 100644 --- a/accum/fn.add_inv.html +++ b/accum/fn.add_inv.html @@ -1,4 +1,4 @@ -add_inv in accum - Rustadd_inv in accum - Rust
-

Function accum::add_inv

source ·
pub fn add_inv<T: Copy + SubAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::add_inv

source ·
pub fn add_inv<T: Copy + SubAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.and.html b/accum/fn.and.html index a3ee7fd4..8d56f551 100644 --- a/accum/fn.and.html +++ b/accum/fn.and.html @@ -1,4 +1,4 @@ -and in accum - Rustand in accum - Rust
-

Function accum::and

source ·
pub fn and<T: Copy + BitAndAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::and

source ·
pub fn and<T: Copy + BitAndAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.for_each.html b/accum/fn.for_each.html index ba75889d..30afdb82 100644 --- a/accum/fn.for_each.html +++ b/accum/fn.for_each.html @@ -1,4 +1,4 @@ -for_each in accum - Rustfor_each in accum - Rust
-

Function accum::for_each

source ·
pub fn for_each<T>(a: &[T], f: impl FnMut(&T, &T))
\ No newline at end of file +

Function accum::for_each

source ·
pub fn for_each<T>(a: &[T], f: impl FnMut(&T, &T))
\ No newline at end of file diff --git a/accum/fn.for_each_mut.html b/accum/fn.for_each_mut.html index 26bfa40b..ca5e0f98 100644 --- a/accum/fn.for_each_mut.html +++ b/accum/fn.for_each_mut.html @@ -1,4 +1,4 @@ -for_each_mut in accum - Rustfor_each_mut in accum - Rust
-

Function accum::for_each_mut

source ·
pub fn for_each_mut<T>(a: &mut [T], f: impl FnMut(&mut T, &mut T))
\ No newline at end of file +

Function accum::for_each_mut

source ·
pub fn for_each_mut<T>(a: &mut [T], f: impl FnMut(&mut T, &mut T))
\ No newline at end of file diff --git a/accum/fn.max.html b/accum/fn.max.html index 772f6325..980deedc 100644 --- a/accum/fn.max.html +++ b/accum/fn.max.html @@ -1,4 +1,4 @@ -max in accum - Rustmax in accum - Rust
-

Function accum::max

source ·
pub fn max<T: Copy + Ord>(a: &mut [T])
\ No newline at end of file +

Function accum::max

source ·
pub fn max<T: Copy + Ord>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.min.html b/accum/fn.min.html index c6826291..d2384f0e 100644 --- a/accum/fn.min.html +++ b/accum/fn.min.html @@ -1,4 +1,4 @@ -min in accum - Rustmin in accum - Rust
-

Function accum::min

source ·
pub fn min<T: Copy + Ord>(a: &mut [T])
\ No newline at end of file +

Function accum::min

source ·
pub fn min<T: Copy + Ord>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.mul.html b/accum/fn.mul.html index bf95e485..2eadbc11 100644 --- a/accum/fn.mul.html +++ b/accum/fn.mul.html @@ -1,4 +1,4 @@ -mul in accum - Rustmul in accum - Rust
-

Function accum::mul

source ·
pub fn mul<T: Copy + MulAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::mul

source ·
pub fn mul<T: Copy + MulAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.mul_inv.html b/accum/fn.mul_inv.html index 1c832eaa..72291263 100644 --- a/accum/fn.mul_inv.html +++ b/accum/fn.mul_inv.html @@ -1,4 +1,4 @@ -mul_inv in accum - Rustmul_inv in accum - Rust
-

Function accum::mul_inv

source ·
pub fn mul_inv<T: Copy + DivAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::mul_inv

source ·
pub fn mul_inv<T: Copy + DivAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.or.html b/accum/fn.or.html index d8438e5c..1a24f510 100644 --- a/accum/fn.or.html +++ b/accum/fn.or.html @@ -1,4 +1,4 @@ -or in accum - Rustor in accum - Rust
-

Function accum::or

source ·
pub fn or<T: Copy + BitOrAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::or

source ·
pub fn or<T: Copy + BitOrAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.rfor_each.html b/accum/fn.rfor_each.html index 08b7b93e..9c090ff1 100644 --- a/accum/fn.rfor_each.html +++ b/accum/fn.rfor_each.html @@ -1,4 +1,4 @@ -rfor_each in accum - Rustrfor_each in accum - Rust
-

Function accum::rfor_each

source ·
pub fn rfor_each<T>(a: &[T], f: impl FnMut(&T, &T))
\ No newline at end of file +

Function accum::rfor_each

source ·
pub fn rfor_each<T>(a: &[T], f: impl FnMut(&T, &T))
\ No newline at end of file diff --git a/accum/fn.rfor_each_mut.html b/accum/fn.rfor_each_mut.html index f07c4cfd..76098675 100644 --- a/accum/fn.rfor_each_mut.html +++ b/accum/fn.rfor_each_mut.html @@ -1,4 +1,4 @@ -rfor_each_mut in accum - Rustrfor_each_mut in accum - Rust
-

Function accum::rfor_each_mut

source ·
pub fn rfor_each_mut<T>(a: &mut [T], f: impl FnMut(&mut T, &mut T))
\ No newline at end of file +

Function accum::rfor_each_mut

source ·
pub fn rfor_each_mut<T>(a: &mut [T], f: impl FnMut(&mut T, &mut T))
\ No newline at end of file diff --git a/accum/fn.skipped.html b/accum/fn.skipped.html index 5727c4ce..b126c84a 100644 --- a/accum/fn.skipped.html +++ b/accum/fn.skipped.html @@ -1,4 +1,4 @@ -skipped in accum - Rustskipped in accum - Rust
-

Function accum::skipped

source ·
pub fn skipped<T, F, I>(a: &[T], f: F, identity: I) -> Skipped<'_, T, F, I> 
where - F: FnMut(&T, &T) -> T, - I: FnMut() -> T,
\ No newline at end of file +

Function accum::skipped

source ·
pub fn skipped<T, F, I>(a: &[T], f: F, identity: I) -> Skipped<'_, T, F, I> where
+    F: FnMut(&T, &T) -> T,
+    I: FnMut() -> T,
\ No newline at end of file diff --git a/accum/fn.skipped_max.html b/accum/fn.skipped_max.html index 1b3860c0..709c5224 100644 --- a/accum/fn.skipped_max.html +++ b/accum/fn.skipped_max.html @@ -1,4 +1,4 @@ -skipped_max in accum - Rustskipped_max in accum - Rust
-

Function accum::skipped_max

source ·
pub fn skipped_max<T: Copy + Ord>(a: &[T], min: T) -> Vec<T>
\ No newline at end of file +

Function accum::skipped_max

source ·
pub fn skipped_max<T: Copy + Ord>(a: &[T], min: T) -> Vec<T>
\ No newline at end of file diff --git a/accum/fn.skipped_min.html b/accum/fn.skipped_min.html index e3998a55..03d90b8c 100644 --- a/accum/fn.skipped_min.html +++ b/accum/fn.skipped_min.html @@ -1,4 +1,4 @@ -skipped_min in accum - Rustskipped_min in accum - Rust
-

Function accum::skipped_min

source ·
pub fn skipped_min<T: Copy + Ord>(a: &[T], max: T) -> Vec<T>
\ No newline at end of file +

Function accum::skipped_min

source ·
pub fn skipped_min<T: Copy + Ord>(a: &[T], max: T) -> Vec<T>
\ No newline at end of file diff --git a/accum/fn.xor.html b/accum/fn.xor.html index 792eeb02..fc368cc1 100644 --- a/accum/fn.xor.html +++ b/accum/fn.xor.html @@ -1,4 +1,4 @@ -xor in accum - Rustxor in accum - Rust
-

Function accum::xor

source ·
pub fn xor<T: Copy + BitXorAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::xor

source ·
pub fn xor<T: Copy + BitXorAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/fn.xor_inv.html b/accum/fn.xor_inv.html index 9944e685..e944372f 100644 --- a/accum/fn.xor_inv.html +++ b/accum/fn.xor_inv.html @@ -1,4 +1,4 @@ -xor_inv in accum - Rustxor_inv in accum - Rust
-

Function accum::xor_inv

source ·
pub fn xor_inv<T: Copy + BitXorAssign>(a: &mut [T])
\ No newline at end of file +

Function accum::xor_inv

source ·
pub fn xor_inv<T: Copy + BitXorAssign>(a: &mut [T])
\ No newline at end of file diff --git a/accum/index.html b/accum/index.html index 9ea38f8c..afefcf14 100644 --- a/accum/index.html +++ b/accum/index.html @@ -1,4 +1,4 @@ -accum - Rustaccum - Rust
-
\ No newline at end of file +
\ No newline at end of file diff --git a/accum/struct.Skipped.html b/accum/struct.Skipped.html index 2d9706e0..5e99db16 100644 --- a/accum/struct.Skipped.html +++ b/accum/struct.Skipped.html @@ -1,4 +1,4 @@ -Skipped in accum - RustSkipped in accum - Rust
-

Struct accum::Skipped

source ·
pub struct Skipped<'a, T, F, I> { /* private fields */ }

Trait Implementations§

source§

impl<'a, T: Clone, F: Clone, I: Clone> Clone for Skipped<'a, T, F, I>

source§

fn clone(&self) -> Skipped<'a, T, F, I>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a, T: Debug, F: Debug, I: Debug> Debug for Skipped<'a, T, F, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T: Default, F: Default, I: Default> Default for Skipped<'a, T, F, I>

source§

fn default() -> Skipped<'a, T, F, I>

Returns the “default value” for a type. Read more
source§

impl<'a, T: Hash, F: Hash, I: Hash> Hash for Skipped<'a, T, F, I>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>
where - F: FnMut(&T, &T) -> T, - I: FnMut() -> T,

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct accum::Skipped

source ·
pub struct Skipped<'a, T, F, I> { /* private fields */ }

Trait Implementations§

source§

impl<'a, T: Clone, F: Clone, I: Clone> Clone for Skipped<'a, T, F, I>

source§

fn clone(&self) -> Skipped<'a, T, F, I>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a, T: Debug, F: Debug, I: Debug> Debug for Skipped<'a, T, F, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T: Default, F: Default, I: Default> Default for Skipped<'a, T, F, I>

source§

fn default() -> Skipped<'a, T, F, I>

Returns the “default value” for a type. Read more
source§

impl<'a, T: Hash, F: Hash, I: Hash> Hash for Skipped<'a, T, F, I>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>where + F: FnMut(&T, &T) -> T, + I: FnMut() -> T,

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
source§

impl<'a, T: PartialEq, F: PartialEq, I: PartialEq> PartialEq for Skipped<'a, T, F, I>

source§

fn eq(&self, other: &Skipped<'a, T, F, I>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<'a, T: Eq, F: Eq, I: Eq> Eq for Skipped<'a, T, F, I>

source§

impl<'a, T, F, I> StructuralPartialEq for Skipped<'a, T, F, I>

Auto Trait Implementations§

§

impl<'a, T, F, I> Freeze for Skipped<'a, T, F, I>
where - T: Freeze, - F: Freeze, - I: Freeze,

§

impl<'a, T, F, I> RefUnwindSafe for Skipped<'a, T, F, I>
where - T: RefUnwindSafe, - F: RefUnwindSafe, - I: RefUnwindSafe,

§

impl<'a, T, F, I> Send for Skipped<'a, T, F, I>
where - T: Send + Sync, - F: Send, - I: Send,

§

impl<'a, T, F, I> Sync for Skipped<'a, T, F, I>
where - T: Sync, - F: Sync, - I: Sync,

§

impl<'a, T, F, I> Unpin for Skipped<'a, T, F, I>
where - T: Unpin, - F: Unpin, - I: Unpin,

§

impl<'a, T, F, I> UnwindSafe for Skipped<'a, T, F, I>
where - T: UnwindSafe + RefUnwindSafe, - F: UnwindSafe, - I: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more
source§

impl<'a, T: PartialEq, F: PartialEq, I: PartialEq> PartialEq<Skipped<'a, T, F, I>> for Skipped<'a, T, F, I>

source§

fn eq(&self, other: &Skipped<'a, T, F, I>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<'a, T: Eq, F: Eq, I: Eq> Eq for Skipped<'a, T, F, I>

source§

impl<'a, T, F, I> StructuralEq for Skipped<'a, T, F, I>

source§

impl<'a, T, F, I> StructuralPartialEq for Skipped<'a, T, F, I>

Auto Trait Implementations§

§

impl<'a, T, F, I> RefUnwindSafe for Skipped<'a, T, F, I>where + F: RefUnwindSafe, + I: RefUnwindSafe, + T: RefUnwindSafe,

§

impl<'a, T, F, I> Send for Skipped<'a, T, F, I>where + F: Send, + I: Send, + T: Send + Sync,

§

impl<'a, T, F, I> Sync for Skipped<'a, T, F, I>where + F: Sync, + I: Sync, + T: Sync,

§

impl<'a, T, F, I> Unpin for Skipped<'a, T, F, I>where + F: Unpin, + I: Unpin, + T: Unpin,

§

impl<'a, T, F, I> UnwindSafe for Skipped<'a, T, F, I>where + F: UnwindSafe, + I: UnwindSafe, + T: UnwindSafe + RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/advance/all.html b/advance/all.html deleted file mode 100644 index f4179061..00000000 --- a/advance/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -

List of all items

Functions

\ No newline at end of file diff --git a/advance/fn.advance_until.html b/advance/fn.advance_until.html deleted file mode 100644 index df532205..00000000 --- a/advance/fn.advance_until.html +++ /dev/null @@ -1,47 +0,0 @@ -advance_until in advance - Rust - - - - - -

Function advance::advance_until

source ·
pub fn advance_until<T>(i: &mut usize, a: &[T], checker: impl FnMut(&T) -> bool)
Expand description

checkertrue になるか配列をはみ出すまで添字を進めます。

-

§効果

-

checker(i)true になるか a.len() == i となるまで、i をインクリメントし続けます。

-

§Examples

-
use advance::advance_until;
-
-let a = [0, 1, 3, 6, 10, 15];
-
-let mut i = 0;
-advance_until(&mut i, &a, |&x| 10 <= x);
-
-assert_eq!(i, 4); // 添字が 4 まで進みます。
-
\ No newline at end of file diff --git a/advance/fn.advance_visit_until.html b/advance/fn.advance_visit_until.html deleted file mode 100644 index 993c43af..00000000 --- a/advance/fn.advance_visit_until.html +++ /dev/null @@ -1,58 +0,0 @@ -advance_visit_until in advance - Rust - - - - - -

Function advance::advance_visit_until

source ·
pub fn advance_visit_until<T>(
-    i: &mut usize,
-    a: &[T],
-    checker: impl FnMut(&T) -> bool,
-    visitor: impl FnMut(usize, &T),
-)
Expand description

advance_until を呼んだあと、進んだ箇所すべてを訪問します。

-

§効果

-

次の 2 つが順に起こります。

-
    -
  1. advance_until が呼ばれます。
  2. -
  3. 変化する前の iorig_i とするとき、orig_i <= j < i なる各 j に対して、visitor(j, &a[j]) を呼びます。
  4. -
-

§Examples

-
use advance::advance_visit_until;
-
-let a = [0, 1, 3, 6, 10, 15];
-
-let mut i = 0;
-let mut visited = Vec::new();
-advance_visit_until(&mut i, &a, |&x| 10 <= x, |i, &x| visited.push((i, x)));
-
-assert_eq!(i, 4);   // 添字が 4 まで進みます。
-assert_eq!(visited, vec![(0, 0), (1, 1), (2, 3), (3, 6)]);  // 添字 0, 1, 2, 3 を訪問します。
-
\ No newline at end of file diff --git a/advance/index.html b/advance/index.html deleted file mode 100644 index 8424e847..00000000 --- a/advance/index.html +++ /dev/null @@ -1,41 +0,0 @@ -advance - Rust - - - - - -

Crate advance

source ·
Expand description

しゃくとり法ユーティルです。

-

§Contents

- -

Functions§

\ No newline at end of file diff --git a/advance/sidebar-items.js b/advance/sidebar-items.js deleted file mode 100644 index ce631d72..00000000 --- a/advance/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["advance_until","advance_visit_until"]}; \ No newline at end of file diff --git a/avl_tree/all.html b/avl_tree/all.html index 5e742a8d..11f11e26 100644 --- a/avl_tree/all.html +++ b/avl_tree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

\ No newline at end of file +

List of all items

Structs

\ No newline at end of file diff --git a/avl_tree/index.html b/avl_tree/index.html index 6dd9d549..75570192 100644 --- a/avl_tree/index.html +++ b/avl_tree/index.html @@ -1,4 +1,4 @@ -avl_tree - Rustavl_tree - Rust
-

Crate avl_tree

source ·
Expand description

AVL 木により二分探索可能な列を実現します。

-

§できないこと

+

Crate avl_tree

source ·
Expand description

AVL 木により二分探索可能な列を実現します。

+

できないこと

-

§できること

§二分探索してインデックスを返す系

+

できること

二分探索してインデックスを返す系

-

§ランダムアクセス系

+

ランダムアクセス系

-

§挿入・削除・併合・分割系

+

挿入・削除・併合・分割系

-

§先頭・末尾系

+

先頭・末尾系

-

§走査系

+

走査系

-

Structs§

  • AVL 木本体です。
  • AvlTree の要素を前から順にすべて走査するイテレータです。
  • AvlTree の要素を前から順にすべて走査するイテレータです。
\ No newline at end of file +

Structs

  • AVL 木本体です。
  • AvlTree の要素を前から順にすべて走査するイテレータです。
  • AvlTree の要素を前から順にすべて走査するイテレータです。
\ No newline at end of file diff --git a/avl_tree/struct.AvlTree.html b/avl_tree/struct.AvlTree.html index 8e7e3dda..f424ea75 100644 --- a/avl_tree/struct.AvlTree.html +++ b/avl_tree/struct.AvlTree.html @@ -1,4 +1,4 @@ -AvlTree in avl_tree - RustAvlTree in avl_tree - Rust
-

Struct avl_tree::AvlTree

source ·
pub struct AvlTree<T> { /* private fields */ }
Expand description

AVL 木本体です。

-

Implementations§

source§

impl<T> AvlTree<T>

source

pub fn new() -> Self

空列を構築します。

-
§Examples
+

Struct avl_tree::AvlTree

source ·
pub struct AvlTree<T> { /* private fields */ }
Expand description

AVL 木本体です。

+

Implementations§

source§

impl<T> AvlTree<T>

source

pub fn new() -> Self

空列を構築します。

+
Examples
let avl = AvlTree::<()>::new();
 assert!(avl.is_empty());
-
source

pub fn is_empty(&self) -> bool

空列であれば true を返します。

-
§Examples
+
source

pub fn is_empty(&self) -> bool

空列であれば true を返します。

+
Examples
let avl = AvlTree::<()>::new();
 assert!(avl.is_empty());
-
source

pub fn len(&self) -> usize

列の要素数を返します。

-
§Examples
+
source

pub fn len(&self) -> usize

列の要素数を返します。

+
Examples
use std::iter::repeat;
 assert_eq!(AvlTree::<()>::new().len(), 0);
 assert_eq!(repeat(()).take(3).collect::<AvlTree::<_>>().len(), 3);
-
source

pub fn push_back(&mut self, value: T)

列の末尾に要素を追加します。

-
§Examples
+
source

pub fn push_back(&mut self, value: T)

列の末尾に要素を追加します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_back(1);
 avl.push_back(3);
 assert_eq!(3, *avl.back().unwrap());
-
source

pub fn push_front(&mut self, value: T)

列の先頭に要素を追加します。

-
§Examples
+
source

pub fn push_front(&mut self, value: T)

列の先頭に要素を追加します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_front(1);
 avl.push_front(2);
 assert_eq!(avl.front(), Some(&2));
-
source

pub fn pop_back(&mut self) -> Option<T>

列の末尾の要素があれば削除して返し、空なら None を返します。

-
§Examples
+
source

pub fn pop_back(&mut self) -> Option<T>

列の末尾の要素があれば削除して返し、空なら None を返します。

+
Examples
let mut avl = AvlTree::new();
 assert_eq!(avl.pop_back(), None);
 avl.push_back(1);
 avl.push_back(3);
 assert_eq!(avl.pop_back(), Some(3));
-
source

pub fn pop_front(&mut self) -> Option<T>

列の先頭の要素があれば削除して返し、空なら None を返します。

-
§Examples
+
source

pub fn pop_front(&mut self) -> Option<T>

列の先頭の要素があれば削除して返し、空なら None を返します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_front(1);
 avl.push_front(2);
 assert_eq!(avl.front(), Some(&2));
-
source

pub fn back(&self) -> Option<&T>

列の末尾の要素があれば返し、空なら None を返します。

-
§Examples
+
source

pub fn back(&self) -> Option<&T>

列の末尾の要素があれば返し、空なら None を返します。

+
Examples
let mut avl = AvlTree::new();
 assert_eq!(avl.back(), None);
 
 avl.push_back(1);
 avl.push_back(2);
 assert_eq!(avl.back(), Some(&2));
-
source

pub fn front(&self) -> Option<&T>

列の先頭の要素があれば返し、空なら None を返します。

-
§Examples
+
source

pub fn front(&self) -> Option<&T>

列の先頭の要素があれば返し、空なら None を返します。

+
Examples
let mut avl = AvlTree::new();
 assert_eq!(avl.front(), None);
 
 avl.push_back(1);
 avl.push_back(2);
 assert_eq!(avl.front(), Some(&1));
-
source

pub fn back_mut(&mut self) -> Option<&mut T>

列の末尾の要素があれば返し、空なら None を返します。

-
§Examples
+
source

pub fn back_mut(&mut self) -> Option<&mut T>

列の末尾の要素があれば返し、空なら None を返します。

+
Examples
let mut avl_tree = AvlTree::new();
 assert_eq!(avl_tree.back(), None);
 
@@ -99,8 +99,8 @@ 
§Examples
None => (), } assert_eq!(avl_tree.back(), Some(&9));
-
source

pub fn front_mut(&mut self) -> Option<&mut T>

列の先頭の要素があれば返し、空なら None を返します。

-
§Examples
+
source

pub fn front_mut(&mut self) -> Option<&mut T>

列の先頭の要素があれば返し、空なら None を返します。

+
Examples
let mut avl = AvlTree::new();
 assert_eq!(avl.front_mut(), None);
 
@@ -111,35 +111,35 @@ 
§ExamplesNone => (), } assert_eq!(avl.front(), Some(&9));
-
source

pub fn append(&mut self, other: &mut Self)

other のすべての要素を self の後ろに挿入します。

-
§Examples
+
source

pub fn append(&mut self, other: &mut Self)

other のすべての要素を self の後ろに挿入します。

+
Examples
let mut buf: AvlTree<_> = vec![1, 2].into_iter().collect();
 let mut buf2: AvlTree<_> = vec![3, 4].into_iter().collect();
 buf.append(&mut buf2);
 assert_eq!(buf, [1, 2, 3, 4][..]);
 assert_eq!(buf2, [][..]);
-
source

pub fn split_off(&mut self, index: usize) -> Self

other の第 index 成分以降を切り離します。

-
§Panics
+
source

pub fn split_off(&mut self, index: usize) -> Self

other の第 index 成分以降を切り離します。

+
Panics

範囲外

-
§Examples
+
Examples
let mut buf: AvlTree<_> = vec![1, 2, 3].into_iter().collect();
 let buf2 = buf.split_off(1);
 assert_eq!(buf, [1][..]);
 assert_eq!(buf2, [2, 3][..]);
-
source

pub fn insert(&mut self, index: usize, value: T)

other の第 index 成分に value を挿入します。

-
§Panics
+
source

pub fn insert(&mut self, index: usize, value: T)

other の第 index 成分に value を挿入します。

+
Panics

範囲外

-
§Examples
+
Examples
let mut avl = AvlTree::new();
-avl.push_back('a');
-avl.push_back('b');
-avl.push_back('c');
-assert_eq!(avl, ['a', 'b', 'c'][..]);
+avl.push_back('a');
+avl.push_back('b');
+avl.push_back('c');
+assert_eq!(avl, ['a', 'b', 'c'][..]);
 
-avl.insert(1, 'd');
-assert_eq!(avl, ['a', 'd', 'b', 'c'][..]);
-
source

pub fn remove(&mut self, index: usize) -> Option<T>

other の第 index 成分があれば削除して返し、なければ None を返します。

-
§Examples
+avl.insert(1, 'd'); +assert_eq!(avl, ['a', 'd', 'b', 'c'][..]);
+
source

pub fn remove(&mut self, index: usize) -> Option<T>

other の第 index 成分があれば削除して返し、なければ None を返します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_back(1);
 avl.push_back(2);
@@ -148,15 +148,15 @@ 
§Examplesassert_eq!(avl.remove(1), Some(2)); assert_eq!(avl, [1, 3][..]);
-
source

pub fn get(&self, index: usize) -> Option<&T>

other の第 index 成分があれば返し、なければ None を返します。

-
§Examples
+
source

pub fn get(&self, index: usize) -> Option<&T>

other の第 index 成分があれば返し、なければ None を返します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_back(3);
 avl.push_back(4);
 avl.push_back(5);
 assert_eq!(avl.get(1), Some(&4));
-
source

pub fn get_mut(&mut self, index: usize) -> Option<&mut T>

other の第 index 成分があれば返し、なければ None を返します。

-
§Examples
+
source

pub fn get_mut(&mut self, index: usize) -> Option<&mut T>

other の第 index 成分があれば返し、なければ None を返します。

+
Examples
let mut avl = AvlTree::new();
 avl.push_back(3);
 avl.push_back(4);
@@ -166,13 +166,13 @@ 
§Examplesassert_eq!(avl[1], 7);
-
source

pub fn binary_search_by( +

source

pub fn binary_search_by( &self, - f: impl FnMut(&T) -> Ordering, -) -> Result<usize, usize>

fEqual を返す要素があれば、なければ挿入箇所のインデックスを返します。

-
§Requirements
+ f: impl FnMut(&T) -> Ordering +) -> Result<usize, usize>

fEqual を返す要素があれば、なければ挿入箇所のインデックスを返します。

+
Requirements

f の結果が Less, Equal, Greater とこの順に分割されていること。

-
§Examples
+
Examples
let avl: AvlTree<_> = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
     .into_iter()
     .collect();
@@ -182,14 +182,14 @@ 
§Examplesassert_eq!(avl.binary_search_by(|x| x.cmp(&100)), Err(13)); let r = avl.binary_search_by(|x| x.cmp(&1)); assert!(matches!(r, Ok(1..=4)));
-
source

pub fn binary_search_by_key<B: Ord>( +

source

pub fn binary_search_by_key<B: Ord>( &self, - b: &B, - f: impl FnMut(&T) -> B, -) -> Result<usize, usize>

fEqual を返す要素があれば、なければ挿入箇所のインデックスを返します。

-
§Requirements
+ b: &B, + f: impl FnMut(&T) -> B +) -> Result<usize, usize>

fEqual を返す要素があれば、なければ挿入箇所のインデックスを返します。

+
Requirements

f による射影が b と比べて小なる、等しい、大なる要素がこの順に分割されていること。

-
§Examples
+
Examples
let avl: AvlTree<_> = vec![
     (0, 0),
     (2, 1),
@@ -213,11 +213,11 @@ 
§Examplesassert_eq!(avl.binary_search_by_key(&100, |&(a, b)| b), Err(13)); let r = avl.binary_search_by_key(&1, |&(a, b)| b); assert!(matches!(r, Ok(1..=4)));
-

value に等しい要素があればそのインデックスを返し、なければ挿入箇所のインデックスを返します。

-
§Requirements
+

value に等しい要素があればそのインデックスを返し、なければ挿入箇所のインデックスを返します。

+
Requirements

value よりも小なる、等しい、大なる要素がこの順に分割されていること。

-
§Examples
+
Examples
let avl: AvlTree<_> = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
     .into_iter()
     .collect();
@@ -227,12 +227,12 @@ 
§Examplesassert_eq!(avl.binary_search(&100), Err(13)); let r = avl.binary_search(&1); assert!(matches!(r, Ok(1..=4)));
-
source

pub fn partition_point(&self, is_right: impl FnMut(&T) -> bool) -> usize

source

pub fn lower_bound<Q: Ord>(&self, value: &Q) -> usize
where - T: Borrow<Q>,

value 以上の要素があればそおインデックスを、なければ要素数を返します。

-
§Requirements
+
source

pub fn partition_point(&self, is_right: impl FnMut(&T) -> bool) -> usize

source

pub fn lower_bound<Q: Ord>(&self, value: &Q) -> usizewhere + T: Borrow<Q>,

value 以上の要素があればそおインデックスを、なければ要素数を返します。

+
Requirements

要素が全てソート済みであること。 ただしソート済みでなくてもそれらしいところを返します。

-
§Examples
+
Examples
let a: AvlTree<_> = [10, 11, 13, 13, 15].iter().copied().collect();
 assert_eq!(a.lower_bound(&9), 0);
 assert_eq!(a.lower_bound(&10), 0);
@@ -242,12 +242,12 @@ 
§Examplesassert_eq!(a.lower_bound(&14), 4); assert_eq!(a.lower_bound(&15), 4); assert_eq!(a.lower_bound(&16), 5);
-
source

pub fn upper_bound<Q: Ord>(&self, value: &Q) -> usize
where - T: Borrow<Q>,

value より大きな要素があればそおインデックスを、なければ要素数を返します。

-
§Requirements
+
source

pub fn upper_bound<Q: Ord>(&self, value: &Q) -> usizewhere + T: Borrow<Q>,

value より大きな要素があればそおインデックスを、なければ要素数を返します。

+
Requirements

要素が全てソート済みであること。 ただしソート済みでなくてもそれらしいところを返します。

-
§Examples
+
Examples
let a: AvlTree<_> = [10, 11, 13, 13, 15].iter().copied().collect();
 assert_eq!(a.upper_bound(&9), 0);
 assert_eq!(a.upper_bound(&10), 1);
@@ -257,9 +257,9 @@ 
§Examplesassert_eq!(a.upper_bound(&14), 4); assert_eq!(a.upper_bound(&15), 5); assert_eq!(a.upper_bound(&16), 5);
-
source

pub fn iter(&self) -> Iter<'_, T>

要素を前から順にすべて走査するイテレータを返します。

-

なお IterDoubleEndedIterator を実装しています。

-
§Examples
+
source

pub fn iter(&self) -> Iter<'_, T>

要素を前から順にすべて走査するイテレータを返します。

+

なお IterDoubleEndedIterator を実装しています。

+
Examples
let mut buf = AvlTree::new();
 buf.push_back(5);
 buf.push_back(3);
@@ -267,31 +267,31 @@ 
§Exampleslet b: &[_] = &[&5, &3, &4]; let c: Vec<&i32> = buf.iter().collect(); assert_eq!(&c[..], b);
-

Trait Implementations§

source§

impl<T: Clone> Clone for AvlTree<T>

source§

fn clone(&self) -> AvlTree<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for AvlTree<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Default for AvlTree<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T> FromIterator<T> for AvlTree<T>

source§

fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<T: Hash> Hash for AvlTree<T>

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T> Index<usize> for AvlTree<T>

source§

type Output = T

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'a, T> IntoIterator for &'a AvlTree<T>

source§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
source§

type Item = &'a T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> IntoIterator for AvlTree<T>

source§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
source§

type Item = T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T: Ord> Ord for AvlTree<T>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<T, A> PartialEq<[A]> for AvlTree<T>
where - T: PartialEq<A> + PartialEq,

source§

fn eq(&self, other: &[A]) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T: PartialEq> PartialEq for AvlTree<T>

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T: PartialOrd> PartialOrd for AvlTree<T>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the -<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > -operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl<T: Eq> Eq for AvlTree<T>

Auto Trait Implementations§

§

impl<T> Freeze for AvlTree<T>

§

impl<T> RefUnwindSafe for AvlTree<T>
where - T: RefUnwindSafe,

§

impl<T> Send for AvlTree<T>
where - T: Send,

§

impl<T> Sync for AvlTree<T>
where - T: Sync,

§

impl<T> Unpin for AvlTree<T>

§

impl<T> UnwindSafe for AvlTree<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<T: Clone> Clone for AvlTree<T>

source§

fn clone(&self) -> AvlTree<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for AvlTree<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Default for AvlTree<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T> FromIterator<T> for AvlTree<T>

source§

fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

Creates a value from an iterator. Read more
source§

impl<T: Hash> Hash for AvlTree<T>

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T> Index<usize> for AvlTree<T>

§

type Output = T

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'a, T> IntoIterator for &'a AvlTree<T>

§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
§

type Item = &'a T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> IntoIterator for AvlTree<T>

§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
§

type Item = T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T: Ord> Ord for AvlTree<T>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl<T, A> PartialEq<[A]> for AvlTree<T>where + T: PartialEq<A> + PartialEq,

source§

fn eq(&self, other: &[A]) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<T: PartialEq> PartialEq<AvlTree<T>> for AvlTree<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<T: PartialOrd> PartialOrd<AvlTree<T>> for AvlTree<T>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl<T: Eq> Eq for AvlTree<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for AvlTree<T>where + T: RefUnwindSafe,

§

impl<T> Send for AvlTree<T>where + T: Send,

§

impl<T> Sync for AvlTree<T>where + T: Sync,

§

impl<T> Unpin for AvlTree<T>

§

impl<T> UnwindSafe for AvlTree<T>where + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/avl_tree/struct.IntoIter.html b/avl_tree/struct.IntoIter.html index 390846df..0ebc8fcf 100644 --- a/avl_tree/struct.IntoIter.html +++ b/avl_tree/struct.IntoIter.html @@ -1,4 +1,4 @@ -IntoIter in avl_tree - RustIntoIter in avl_tree - Rust
-

Struct avl_tree::IntoIter

source ·
pub struct IntoIter<T> { /* private fields */ }
Expand description

AvlTree の要素を前から順にすべて走査するイテレータです。

-

Trait Implementations§

source§

impl<T> Iterator for IntoIter<T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct avl_tree::IntoIter

source ·
pub struct IntoIter<T> { /* private fields */ }
Expand description

AvlTree の要素を前から順にすべて走査するイテレータです。

+

Trait Implementations§

source§

impl<T> Iterator for IntoIter<T>

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<T> Freeze for IntoIter<T>

§

impl<T> RefUnwindSafe for IntoIter<T>
where - T: RefUnwindSafe,

§

impl<T> Send for IntoIter<T>
where - T: Send,

§

impl<T> Sync for IntoIter<T>
where - T: Sync,

§

impl<T> Unpin for IntoIter<T>

§

impl<T> UnwindSafe for IntoIter<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for IntoIter<T>where + T: RefUnwindSafe,

§

impl<T> Send for IntoIter<T>where + T: Send,

§

impl<T> Sync for IntoIter<T>where + T: Sync,

§

impl<T> Unpin for IntoIter<T>

§

impl<T> UnwindSafe for IntoIter<T>where + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/avl_tree/struct.Iter.html b/avl_tree/struct.Iter.html index 28b7c596..4891be43 100644 --- a/avl_tree/struct.Iter.html +++ b/avl_tree/struct.Iter.html @@ -1,4 +1,4 @@ -Iter in avl_tree - RustIter in avl_tree - Rust
-

Struct avl_tree::Iter

source ·
pub struct Iter<'a, T> { /* private fields */ }
Expand description

AvlTree の要素を前から順にすべて走査するイテレータです。

-

Trait Implementations§

source§

impl<'a, T> DoubleEndedIterator for Iter<'a, T>

source§

fn next_back(&mut self) -> Option<Self::Item>

Removes and returns an element from the end of the iterator. Read more
source§

fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator from the back by n elements. Read more
1.37.0 · source§

fn nth_back(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element from the end of the iterator. Read more
1.27.0 · source§

fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
1.27.0 · source§

fn rfold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
1.27.0 · source§

fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
source§

impl<'a, T> Iterator for Iter<'a, T>

source§

type Item = &'a T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct avl_tree::Iter

source ·
pub struct Iter<'a, T> { /* private fields */ }
Expand description

AvlTree の要素を前から順にすべて走査するイテレータです。

+

Trait Implementations§

source§

impl<'a, T> DoubleEndedIterator for Iter<'a, T>

source§

fn next_back(&mut self) -> Option<Self::Item>

Removes and returns an element from the end of the iterator. Read more
source§

fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator from the back by n elements. Read more
1.37.0 · source§

fn nth_back(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element from the end of the iterator. Read more
1.27.0 · source§

fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
1.27.0 · source§

fn rfold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
1.27.0 · source§

fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
source§

impl<'a, T> Iterator for Iter<'a, T>

§

type Item = &'a T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
where +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

🔬This is a nightly-only experimental API. (iter_partition_in_place)
Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
🔬This is a nightly-only experimental API. (iter_partition_in_place)
Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +Returns the number of true elements found. Read more

source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn rev(self) -> Rev<Self>
where - Self: Sized + DoubleEndedIterator,

Reverses an iterator’s direction. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn rev(self) -> Rev<Self>where + Self: Sized + DoubleEndedIterator,

Reverses an iterator’s direction. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for Iter<'a, T>

§

impl<'a, T> RefUnwindSafe for Iter<'a, T>
where - T: RefUnwindSafe,

§

impl<'a, T> Send for Iter<'a, T>
where - T: Sync,

§

impl<'a, T> Sync for Iter<'a, T>
where - T: Sync,

§

impl<'a, T> Unpin for Iter<'a, T>

§

impl<'a, T> UnwindSafe for Iter<'a, T>
where - T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'a, T> RefUnwindSafe for Iter<'a, T>where + T: RefUnwindSafe,

§

impl<'a, T> Send for Iter<'a, T>where + T: Sync,

§

impl<'a, T> Sync for Iter<'a, T>where + T: Sync,

§

impl<'a, T> Unpin for Iter<'a, T>

§

impl<'a, T> UnwindSafe for Iter<'a, T>where + T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bfs/all.html b/bfs/all.html index 79cf3a7e..653d86c1 100644 --- a/bfs/all.html +++ b/bfs/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-
\ No newline at end of file +
\ No newline at end of file diff --git a/bfs/fn.calc_dist.html b/bfs/fn.calc_dist.html index 31e098c1..2d1bad89 100644 --- a/bfs/fn.calc_dist.html +++ b/bfs/fn.calc_dist.html @@ -1,4 +1,4 @@ -calc_dist in bfs - Rustcalc_dist in bfs - Rust
-

Function bfs::calc_dist

source ·
pub fn calc_dist(start: usize, g: &[Vec<usize>]) -> Vec<u32>
Expand description

一点からの距離配列を作ります。

+

Function bfs::calc_dist

source ·
pub fn calc_dist(start: usize, g: &[Vec<usize>]) -> Vec<u32>
Expand description

一点からの距離配列を作ります。

\ No newline at end of file diff --git a/bfs/fn.calc_dist_restore.html b/bfs/fn.calc_dist_restore.html index e44115dd..87c6eaad 100644 --- a/bfs/fn.calc_dist_restore.html +++ b/bfs/fn.calc_dist_restore.html @@ -1,4 +1,4 @@ -calc_dist_restore in bfs - Rustcalc_dist_restore in bfs - Rust
-

Function bfs::calc_dist_restore

source ·
pub fn calc_dist_restore(
-    start: usize,
-    g: &[Vec<usize>],
-) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。

+

Function bfs::calc_dist_restore

source ·
pub fn calc_dist_restore(
+    start: usize,
+    g: &[Vec<usize>]
+) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。

\ No newline at end of file diff --git a/bfs/fn.find_path.html b/bfs/fn.find_path.html index d863cb17..4782a359 100644 --- a/bfs/fn.find_path.html +++ b/bfs/fn.find_path.html @@ -1,4 +1,4 @@ -find_path in bfs - Rustfind_path in bfs - Rust
-

Function bfs::find_path

source ·
pub fn find_path(
-    start: usize,
-    end: usize,
-    g: &[Vec<usize>],
-) -> Option<Vec<usize>>
Expand description

start から end が到達可能ならば最短経路の頂点列を返し、不能ならば None を返します。

+

Function bfs::find_path

source ·
pub fn find_path(
+    start: usize,
+    end: usize,
+    g: &[Vec<usize>]
+) -> Option<Vec<usize>>
Expand description

start から end が到達可能ならば最短経路の頂点列を返し、不能ならば None を返します。

\ No newline at end of file diff --git a/bfs/fn.tree_diamter.html b/bfs/fn.tree_diamter.html index a13a811e..2cccf53e 100644 --- a/bfs/fn.tree_diamter.html +++ b/bfs/fn.tree_diamter.html @@ -1,4 +1,4 @@ -tree_diamter in bfs - Rusttree_diamter in bfs - Rust
-

Function bfs::tree_diamter

source ·
pub fn tree_diamter(g: &[Vec<usize>]) -> ([usize; 2], u32)
Expand description

木の直径を一つ探し、その両端点とその間の距離を返します。

+

Function bfs::tree_diamter

source ·
pub fn tree_diamter(g: &[Vec<usize>]) -> ([usize; 2], u32)
Expand description

木の直径を一つ探し、その両端点とその間の距離を返します。

\ No newline at end of file diff --git a/bfs/fn.tree_diamter_restore.html b/bfs/fn.tree_diamter_restore.html index 88d9471e..f852ed09 100644 --- a/bfs/fn.tree_diamter_restore.html +++ b/bfs/fn.tree_diamter_restore.html @@ -1,4 +1,4 @@ -tree_diamter_restore in bfs - Rusttree_diamter_restore in bfs - Rust
-

Function bfs::tree_diamter_restore

source ·
pub fn tree_diamter_restore(g: &[Vec<usize>]) -> (Vec<usize>, u32)
Expand description

木の直径を一つ探し、頂点列とパスの長さ(辺の個数)を返します。

+

Function bfs::tree_diamter_restore

source ·
pub fn tree_diamter_restore(g: &[Vec<usize>]) -> (Vec<usize>, u32)
Expand description

木の直径を一つ探し、頂点列とパスの長さ(辺の個数)を返します。

\ No newline at end of file diff --git a/bfs/index.html b/bfs/index.html index 1af26f6c..7b4fdd1a 100644 --- a/bfs/index.html +++ b/bfs/index.html @@ -1,4 +1,4 @@ -bfs - Rustbfs - Rust
-

Crate bfs

source ·

Functions§

  • 一点からの距離配列を作ります。
  • 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
  • start から end が到達可能ならば最短経路の頂点列を返し、不能ならば None を返します。
  • 木の直径を一つ探し、その両端点とその間の距離を返します。
  • 木の直径を一つ探し、頂点列とパスの長さ(辺の個数)を返します。
\ No newline at end of file +

Crate bfs

source ·

Functions

  • 一点からの距離配列を作ります。
  • 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
  • start から end が到達可能ならば最短経路の頂点列を返し、不能ならば None を返します。
  • 木の直径を一つ探し、その両端点とその間の距離を返します。
  • 木の直径を一つ探し、頂点列とパスの長さ(辺の個数)を返します。
\ No newline at end of file diff --git a/bfs01/all.html b/bfs01/all.html index 5aa48c5b..8d74879e 100644 --- a/bfs01/all.html +++ b/bfs01/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Enums

Functions

\ No newline at end of file +

List of all items

Enums

Functions

\ No newline at end of file diff --git a/bfs01/enum.Weight.html b/bfs01/enum.Weight.html index 25ae0ca2..7b2bba86 100644 --- a/bfs01/enum.Weight.html +++ b/bfs01/enum.Weight.html @@ -1,4 +1,4 @@ -Weight in bfs01 - RustWeight in bfs01 - Rust
-

Enum bfs01::Weight

source ·
pub enum Weight {
+

Enum bfs01::Weight

source ·
pub enum Weight {
     Zero,
     One,
-}

Variants§

§

Zero

§

One

Trait Implementations§

source§

impl Clone for Weight

source§

fn clone(&self) -> Weight

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Weight

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Weight

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Weight

source§

fn eq(&self, other: &Weight) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Copy for Weight

source§

impl Eq for Weight

source§

impl StructuralPartialEq for Weight

Auto Trait Implementations§

§

impl Freeze for Weight

§

impl RefUnwindSafe for Weight

§

impl Send for Weight

§

impl Sync for Weight

§

impl Unpin for Weight

§

impl UnwindSafe for Weight

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Variants§

§

Zero

§

One

Trait Implementations§

source§

impl Clone for Weight

source§

fn clone(&self) -> Weight

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Weight

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Weight

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Weight> for Weight

source§

fn eq(&self, other: &Weight) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Copy for Weight

source§

impl Eq for Weight

source§

impl StructuralEq for Weight

source§

impl StructuralPartialEq for Weight

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bfs01/fn.calc_dist.html b/bfs01/fn.calc_dist.html index 92142b15..0836e8ef 100644 --- a/bfs01/fn.calc_dist.html +++ b/bfs01/fn.calc_dist.html @@ -1,4 +1,4 @@ -calc_dist in bfs01 - Rustcalc_dist in bfs01 - Rust
-

Function bfs01::calc_dist

source ·
pub fn calc_dist(s: usize, g: &[Vec<(usize, Weight)>]) -> Vec<u32>
Expand description

一点からの距離配列を作ります。

+

Function bfs01::calc_dist

source ·
pub fn calc_dist(s: usize, g: &[Vec<(usize, Weight)>]) -> Vec<u32>
Expand description

一点からの距離配列を作ります。

\ No newline at end of file diff --git a/bfs01/fn.calc_dist_restore.html b/bfs01/fn.calc_dist_restore.html index 105c30d5..4a4e52be 100644 --- a/bfs01/fn.calc_dist_restore.html +++ b/bfs01/fn.calc_dist_restore.html @@ -1,4 +1,4 @@ -calc_dist_restore in bfs01 - Rustcalc_dist_restore in bfs01 - Rust
-

Function bfs01::calc_dist_restore

source ·
pub fn calc_dist_restore(
-    s: usize,
-    g: &[Vec<(usize, Weight)>],
-) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。

+

Function bfs01::calc_dist_restore

source ·
pub fn calc_dist_restore(
+    s: usize,
+    g: &[Vec<(usize, Weight)>]
+) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。

\ No newline at end of file diff --git a/bfs01/index.html b/bfs01/index.html index 39602663..027aa2ba 100644 --- a/bfs01/index.html +++ b/bfs01/index.html @@ -1,4 +1,4 @@ -bfs01 - Rustbfs01 - Rust
-

Crate bfs01

source ·

Enums§

Functions§

  • 一点からの距離配列を作ります。
  • 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
\ No newline at end of file +

Crate bfs01

source ·

Enums

Functions

  • 一点からの距離配列を作ります。
  • 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
\ No newline at end of file diff --git a/binary/all.html b/binary/all.html index 500b757f..be0400f6 100644 --- a/binary/all.html +++ b/binary/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Traits

Functions

\ No newline at end of file +

List of all items

Traits

Functions

\ No newline at end of file diff --git a/binary/fn.operator_binary.html b/binary/fn.operator_binary.html index cf5d98a8..cca832ea 100644 --- a/binary/fn.operator_binary.html +++ b/binary/fn.operator_binary.html @@ -1,4 +1,4 @@ -operator_binary in binary - Rustoperator_binary in binary - Rust
-

Function binary::operator_binary

source ·
pub fn operator_binary<T, U>(
+

Function binary::operator_binary

source ·
pub fn operator_binary<T, U>(
     a: T,
     n: impl Pow,
     x: U,
-    square: impl FnMut(&T) -> T,
-    apply: impl FnMut(&T, U) -> U,
+    square: impl FnMut(&T) -> T,
+    apply: impl FnMut(&T, U) -> U
 ) -> U
Expand description

aⁿ(x) を計算します。

-

§Requirements

+

Requirements

  • T が積と U への作用を持つ
  • squareT における2乗
  • applyTU への作用
-

§Examples

+

Examples

use binary::operator_binary;
 
 let a = 2;
diff --git a/binary/fn.value_binary.html b/binary/fn.value_binary.html
index 71b89d5f..be182538 100644
--- a/binary/fn.value_binary.html
+++ b/binary/fn.value_binary.html
@@ -1,4 +1,4 @@
-value_binary in binary - Rustvalue_binary in binary - Rust
-

Function binary::value_binary

source ·
pub fn value_binary<T>(
+

Function binary::value_binary

source ·
pub fn value_binary<T>(
     a: T,
     n: impl Pow,
     identity: T,
-    mul: impl FnMut(&T, &T) -> T,
+    mul: impl FnMut(&T, &T) -> T
 ) -> T
Expand description

aⁿを計算します。

-

§Requirements

+

Requirements

  • T が積と単位元を持つ
  • identityT の単位元
  • mulT の積
-

§Examples

+

Examples

use binary::value_binary;
 
 let a = 3;
diff --git a/binary/index.html b/binary/index.html
index a605d830..89b3199a 100644
--- a/binary/index.html
+++ b/binary/index.html
@@ -1,4 +1,4 @@
-binary - Rustbinary - Rust
-

Crate binary

source ·
Expand description

二分法(ダブリング)をします。

-

§このライブラリを使える問題

+

Crate binary

source ·
Expand description

二分法(ダブリング)をします。

+

このライブラリを使える問題

  • AtCoder 競プロ典型 90 問 058 - Original Calculator(★4)
      @@ -46,4 +46,4 @@

      Traits§

      • 指数部分に使うためのトレイトです。すべての符号なし整数型に実装されています。

      Functions§

\ No newline at end of file +

Traits

  • 指数部分に使うためのトレイトです。すべての符号なし整数型に実装されています。

Functions

\ No newline at end of file diff --git a/binary/trait.Pow.html b/binary/trait.Pow.html index 7607429a..9ea9273f 100644 --- a/binary/trait.Pow.html +++ b/binary/trait.Pow.html @@ -1,4 +1,4 @@ -Pow in binary - RustPow in binary - Rust
-

Trait binary::Pow

source ·
pub trait Pow {
+

Trait binary::Pow

source ·
pub trait Pow {
     // Required methods
-    fn is_nonzero(&self) -> bool;
-    fn is_nonone(&self) -> bool;
-    fn is_odd(&self) -> bool;
+    fn is_nonzero(&self) -> bool;
+    fn is_nonone(&self) -> bool;
+    fn is_odd(&self) -> bool;
     fn shr1(&mut self);
 }
Expand description

指数部分に使うためのトレイトです。すべての符号なし整数型に実装されています。

-

Required Methods§

source

fn is_nonzero(&self) -> bool

*x != 0

-
source

fn is_nonone(&self) -> bool

*x != 1

-
source

fn is_odd(&self) -> bool

x & 1 == 1

-
source

fn shr1(&mut self)

self >>= 1

-

Implementations on Foreign Types§

source§

impl Pow for u8

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u16

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u32

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u64

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u128

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for usize

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

Implementors§

\ No newline at end of file +

Required Methods§

source

fn is_nonzero(&self) -> bool

*x != 0

+
source

fn is_nonone(&self) -> bool

*x != 1

+
source

fn is_odd(&self) -> bool

x & 1 == 1

+
source

fn shr1(&mut self)

self >>= 1

+

Implementations on Foreign Types§

source§

impl Pow for u8

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u128

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for usize

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u32

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u16

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

source§

impl Pow for u64

source§

fn is_nonzero(&self) -> bool

source§

fn is_nonone(&self) -> bool

source§

fn is_odd(&self) -> bool

source§

fn shr1(&mut self)

Implementors§

\ No newline at end of file diff --git a/bitutils/all.html b/bitutils/all.html deleted file mode 100644 index f65a305b..00000000 --- a/bitutils/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -

List of all items

Structs

Traits

Functions

\ No newline at end of file diff --git a/bitutils/combinations/fn.combinations.html b/bitutils/combinations/fn.combinations.html deleted file mode 100644 index 6137ccc6..00000000 --- a/bitutils/combinations/fn.combinations.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to ../../bitutils/fn.combinations.html...

- - - \ No newline at end of file diff --git a/bitutils/combinations/struct.Combinations.html b/bitutils/combinations/struct.Combinations.html deleted file mode 100644 index 6589f151..00000000 --- a/bitutils/combinations/struct.Combinations.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to ../../bitutils/struct.Combinations.html...

- - - \ No newline at end of file diff --git a/bitutils/fn.combinations.html b/bitutils/fn.combinations.html deleted file mode 100644 index 7b46f5c0..00000000 --- a/bitutils/fn.combinations.html +++ /dev/null @@ -1,42 +0,0 @@ -combinations in bitutils - Rust - - - - - -

Function bitutils::combinations

source ·
pub fn combinations<T: Unsigned>(n: u32, k: u32) -> Combinations<T> 
Expand description

Returns an iterator over k-subsets of (T::one() << n) - T::one().

-

§Examples

-

Basic usage:

- -
use bitutils::combinations;
-
-assert_eq!(combinations::<u32>(3, 2).collect::<Vec<_>>(), vec![3, 5, 6],);
-
\ No newline at end of file diff --git a/bitutils/fn.subsets.html b/bitutils/fn.subsets.html deleted file mode 100644 index 2f8683aa..00000000 --- a/bitutils/fn.subsets.html +++ /dev/null @@ -1,42 +0,0 @@ -subsets in bitutils - Rust - - - - - -

Function bitutils::subsets

source ·
pub fn subsets<T: Unsigned>(bs: T) -> Subsets<T> 
Expand description

Returns an iterator over subsets of bs.

-

§Examples

-

Basic usage:

- -
use bitutils::subsets;
-
-assert_eq!(subsets(10u32).collect::<Vec<_>>(), vec![0, 2, 8, 10],);
-
\ No newline at end of file diff --git a/bitutils/index.html b/bitutils/index.html deleted file mode 100644 index 27675cac..00000000 --- a/bitutils/index.html +++ /dev/null @@ -1,36 +0,0 @@ -bitutils - Rust - - - - - -

Crate bitutils

source ·
Expand description

Provides iterator utilities of integer expression of sets.

-

Structs§

Traits§

  • Adapter trait of this crate. Already implemented for all the unsigned integer types.

Functions§

  • Returns an iterator over k-subsets of (T::one() << n) - T::one().
  • Returns an iterator over subsets of bs.
\ No newline at end of file diff --git a/bitutils/sidebar-items.js b/bitutils/sidebar-items.js deleted file mode 100644 index 241f4a98..00000000 --- a/bitutils/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["combinations","subsets"],"struct":["Combinations","Subsets"],"trait":["Unsigned"]}; \ No newline at end of file diff --git a/bitutils/struct.Combinations.html b/bitutils/struct.Combinations.html deleted file mode 100644 index 4a9ec9b1..00000000 --- a/bitutils/struct.Combinations.html +++ /dev/null @@ -1,234 +0,0 @@ -Combinations in bitutils - Rust - - - - - -

Struct bitutils::Combinations

source ·
pub struct Combinations<T> { /* private fields */ }
Expand description

Trait Implementations§

source§

impl<T: Clone> Clone for Combinations<T>

source§

fn clone(&self) -> Combinations<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Combinations<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Default> Default for Combinations<T>

source§

fn default() -> Combinations<T>

Returns the “default value” for a type. Read more
source§

impl<T: Hash> Hash for Combinations<T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T: Unsigned> Iterator for Combinations<T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
1.0.0 · source§

fn cycle(self) -> Cycle<Self>
where - Self: Sized + Clone,

Repeats an iterator endlessly. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
source§

impl<T: PartialEq> PartialEq for Combinations<T>

source§

fn eq(&self, other: &Combinations<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T: Eq> Eq for Combinations<T>

source§

impl<T> StructuralPartialEq for Combinations<T>

Auto Trait Implementations§

§

impl<T> Freeze for Combinations<T>
where - T: Freeze,

§

impl<T> RefUnwindSafe for Combinations<T>
where - T: RefUnwindSafe,

§

impl<T> Send for Combinations<T>
where - T: Send,

§

impl<T> Sync for Combinations<T>
where - T: Sync,

§

impl<T> Unpin for Combinations<T>
where - T: Unpin,

§

impl<T> UnwindSafe for Combinations<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bitutils/struct.Subsets.html b/bitutils/struct.Subsets.html deleted file mode 100644 index d7693a8f..00000000 --- a/bitutils/struct.Subsets.html +++ /dev/null @@ -1,234 +0,0 @@ -Subsets in bitutils - Rust - - - - - -

Struct bitutils::Subsets

source ·
pub struct Subsets<T> { /* private fields */ }
Expand description

Trait Implementations§

source§

impl<T: Clone> Clone for Subsets<T>

source§

fn clone(&self) -> Subsets<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Subsets<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Default> Default for Subsets<T>

source§

fn default() -> Subsets<T>

Returns the “default value” for a type. Read more
source§

impl<T: Hash> Hash for Subsets<T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T: Unsigned> Iterator for Subsets<T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
1.0.0 · source§

fn cycle(self) -> Cycle<Self>
where - Self: Sized + Clone,

Repeats an iterator endlessly. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
source§

impl<T: PartialEq> PartialEq for Subsets<T>

source§

fn eq(&self, other: &Subsets<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T: Eq> Eq for Subsets<T>

source§

impl<T> StructuralPartialEq for Subsets<T>

Auto Trait Implementations§

§

impl<T> Freeze for Subsets<T>
where - T: Freeze,

§

impl<T> RefUnwindSafe for Subsets<T>
where - T: RefUnwindSafe,

§

impl<T> Send for Subsets<T>
where - T: Send,

§

impl<T> Sync for Subsets<T>
where - T: Sync,

§

impl<T> Unpin for Subsets<T>
where - T: Unpin,

§

impl<T> UnwindSafe for Subsets<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bitutils/subsets/fn.subsets.html b/bitutils/subsets/fn.subsets.html deleted file mode 100644 index bdb3aaed..00000000 --- a/bitutils/subsets/fn.subsets.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to ../../bitutils/fn.subsets.html...

- - - \ No newline at end of file diff --git a/bitutils/subsets/struct.Subsets.html b/bitutils/subsets/struct.Subsets.html deleted file mode 100644 index 21492e1c..00000000 --- a/bitutils/subsets/struct.Subsets.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to ../../bitutils/struct.Subsets.html...

- - - \ No newline at end of file diff --git a/bitutils/trait.Unsigned.html b/bitutils/trait.Unsigned.html deleted file mode 100644 index 36718b97..00000000 --- a/bitutils/trait.Unsigned.html +++ /dev/null @@ -1,69 +0,0 @@ -Unsigned in bitutils - Rust - - - - - -

Trait bitutils::Unsigned

source ·
pub trait Unsigned:
-    Sized
-    + PartialEq
-    + PartialOrd
-    + Debug
-    + Clone
-    + Copy
-    + Add<Output = Self>
-    + AddAssign
-    + Sub<Output = Self>
-    + SubAssign
-    + Mul<Output = Self>
-    + MulAssign
-    + Div<Output = Self>
-    + DivAssign
-    + BitAnd<Output = Self>
-    + BitAndAssign
-    + BitOr<Output = Self>
-    + BitOrAssign
-    + BitXor<Output = Self>
-    + BitXorAssign
-    + Shl<u32, Output = Self>
-    + ShlAssign<u32>
-    + Shr<u32, Output = Self>
-    + ShrAssign<u32>
-    + Not<Output = Self> {
-    // Required methods
-    fn zero() -> Self;
-    fn one() -> Self;
-    fn wrapping_neg(self) -> Self;
-
-    // Provided method
-    fn bit_length() -> u32 { ... }
-}
Expand description

Adapter trait of this crate. Already implemented for all the unsigned integer types.

-

Required Methods§

source

fn zero() -> Self

source

fn one() -> Self

source

fn wrapping_neg(self) -> Self

Provided Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Unsigned for u8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

source§

impl Unsigned for u16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

source§

impl Unsigned for u32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

source§

impl Unsigned for u64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

source§

impl Unsigned for u128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

source§

impl Unsigned for usize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn wrapping_neg(self) -> Self

Implementors§

\ No newline at end of file diff --git a/bitvec/all.html b/bitvec/all.html index c4b71ba5..e67d6715 100644 --- a/bitvec/all.html +++ b/bitvec/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

\ No newline at end of file +

List of all items

Structs

\ No newline at end of file diff --git a/bitvec/index.html b/bitvec/index.html index ce4f33f4..f176ddd4 100644 --- a/bitvec/index.html +++ b/bitvec/index.html @@ -1,4 +1,4 @@ -bitvec - Rustbitvec - Rust
-

Crate bitvec

source ·
Expand description

Boolean 配列を u64 のベクターに詰め込みます。

+

Crate bitvec

source ·
Expand description

Boolean 配列を u64 のベクターに詰め込みます。

詳しくは BitVec のドキュメントをご覧ください。

-

Structs§

  • Boolean 配列を u64 のベクターに詰め込んだものです。
  • ビットを順に bool を返すイテレータです。
\ No newline at end of file +

Structs

  • Boolean 配列を u64 のベクターに詰め込んだものです。
  • ビットを順に bool を返すイテレータです。
\ No newline at end of file diff --git a/bitvec/struct.BitVec.html b/bitvec/struct.BitVec.html index 4f9b6d90..4ed8a974 100644 --- a/bitvec/struct.BitVec.html +++ b/bitvec/struct.BitVec.html @@ -1,4 +1,4 @@ -BitVec in bitvec - RustBitVec in bitvec - Rust
-

Struct bitvec::BitVec

source ·
pub struct BitVec { /* private fields */ }
Expand description

Boolean 配列を u64 のベクターに詰め込んだものです。

-

§使い方

+

Struct bitvec::BitVec

source ·
pub struct BitVec { /* private fields */ }
Expand description

Boolean 配列を u64 のベクターに詰め込んだものです。

+

使い方

構造体のメソッド以外にも、 <<=, >>=, |=, &=, ^= という ビット演算に対応しています。

-
let mut bv = BitVec::from_01str("0010010010");
+
let mut bv = BitVec::from_01str("0010010010");
 
 // 左シフト
 // NOTE: スライスや文字列でいうところの右に移動する感じになります。
 bv <<= 2;
-assert_eq!(&bv, &BitVec::from_01str("0000100100"));
+assert_eq!(&bv, &BitVec::from_01str("0000100100"));
 bv <<= 10;
-assert_eq!(&bv, &BitVec::from_01str("0000000000"));
+assert_eq!(&bv, &BitVec::from_01str("0000000000"));
 
 // 右シフト
 // NOTE: スライスや文字列でいうところの左に移動する感じになります。
-bv = BitVec::from_01str("0010010010");
+bv = BitVec::from_01str("0010010010");
 bv >>= 2;
-assert_eq!(&bv, &BitVec::from_01str("1001001000"));
+assert_eq!(&bv, &BitVec::from_01str("1001001000"));
 bv >>= 10;
-assert_eq!(&bv, &BitVec::from_01str("0000000000"));
+assert_eq!(&bv, &BitVec::from_01str("0000000000"));
 
 // OR 演算
 // NOTE: 複合代入しかありません。右辺は参照です。
-bv = BitVec::from_01str("0000011111");
-bv |= &BitVec::from_01str("0101010101");
-assert_eq!(&bv, &BitVec::from_01str("0101011111"));
+bv = BitVec::from_01str("0000011111");
+bv |= &BitVec::from_01str("0101010101");
+assert_eq!(&bv, &BitVec::from_01str("0101011111"));
 
 // AND 演算
 // NOTE: 複合代入しかありません。右辺は参照です。
-bv = BitVec::from_01str("0000011111");
-bv &= &BitVec::from_01str("0101010101");
-assert_eq!(&bv, &BitVec::from_01str("0000010101"));
+bv = BitVec::from_01str("0000011111");
+bv &= &BitVec::from_01str("0101010101");
+assert_eq!(&bv, &BitVec::from_01str("0000010101"));
 
 // XOR 演算
 // NOTE: 複合代入しかありません。右辺は参照です。
-bv = BitVec::from_01str("0000011111");
-bv ^= &BitVec::from_01str("0101010101");
-assert_eq!(&bv, &BitVec::from_01str("0101001010"));
-

Implementations§

source§

impl BitVec

source

pub fn new(len: usize) -> Self

サイズを指定して 0 埋め構築します。

-
§Example
+bv = BitVec::from_01str("0000011111"); +bv ^= &BitVec::from_01str("0101010101"); +assert_eq!(&bv, &BitVec::from_01str("0101001010"));
+

Implementations§

source§

impl BitVec

source

pub fn new(len: usize) -> Self

サイズを指定して 0 埋め構築します。

+
Example
let mut bv = BitVec::new(10);
-assert_eq!(&bv, &BitVec::from_01str("0000000000"));
-
source

pub fn from_01str(s: &str) -> Self

“01” 文字列から構築します。

-
§Panics
+assert_eq!(&bv, &BitVec::from_01str("0000000000"));
+
source

pub fn from_01str(s: &str) -> Self

“01” 文字列から構築します。

+
Panics

‘0’, ‘1’ 以外の文字があるときです。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+
Example
+
let mut bv = BitVec::from_01str("010");
 assert_eq!(bv.test(0), false);
 assert_eq!(bv.test(1), true);
 assert_eq!(bv.test(2), false);
-
source

pub fn is_empty(&self) -> bool

長さを返します。

-
§Example
+
source

pub fn is_empty(&self) -> bool

長さを返します。

+
Example
assert!(BitVec::new(0).is_empty());
 assert!(!BitVec::new(1).is_empty());
-
source

pub fn len(&self) -> usize

長さを返します。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+
source

pub fn len(&self) -> usize

長さを返します。

+
Example
+
let mut bv = BitVec::from_01str("010");
 assert_eq!(bv.len(), 3);
-
source

pub fn push(&mut self, x: bool)

後ろに要素を追架します。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+
source

pub fn push(&mut self, x: bool)

後ろに要素を追架します。

+
Example
+
let mut bv = BitVec::from_01str("010");
 bv.push(false);
 bv.push(true);
-assert_eq!(&bv, &BitVec::from_01str("01001"));
-
source

pub fn test(&self, i: usize) -> bool

特定のビットが立っていれば true を返します。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+assert_eq!(&bv, &BitVec::from_01str("01001"));
+
source

pub fn test(&self, i: usize) -> bool

特定のビットが立っていれば true を返します。

+
Example
+
let mut bv = BitVec::from_01str("010");
 assert_eq!(bv.test(0), false);
 assert_eq!(bv.test(1), true);
 assert_eq!(bv.test(2), false);
-
source

pub fn set(&mut self, i: usize)

特定のビットを立てます。

+
source

pub fn set(&mut self, i: usize)

特定のビットを立てます。

もともと立っているときにも立ったままです。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+
Example
+
let mut bv = BitVec::from_01str("010");
 bv.set(2);
-assert_eq!(&bv, &BitVec::from_01str("011"));
-
source

pub fn unset(&mut self, i: usize)

特定のビットをおろします。

+assert_eq!(&bv, &BitVec::from_01str("011"));
+
source

pub fn unset(&mut self, i: usize)

特定のビットをおろします。

もともと立っていないときにも立っていないままです。

-
§Example
-
let mut bv = BitVec::from_01str("010");
+
Example
+
let mut bv = BitVec::from_01str("010");
 bv.unset(1);
-assert_eq!(&bv, &BitVec::from_01str("000"));
-
source

pub fn format(&self, t: char, f: char) -> String

指定したフォーマットの String に変換します。

-
source

pub fn iter(&self) -> Iter<'_>

ビットを順に bool を返すイテレータを作ります。

-

Trait Implementations§

source§

impl BitAndAssign<&BitVec> for BitVec

source§

fn bitand_assign(&mut self, rhs: &Self)

Performs the &= operation. Read more
source§

impl BitOrAssign<&BitVec> for BitVec

source§

fn bitor_assign(&mut self, rhs: &Self)

Performs the |= operation. Read more
source§

impl BitXorAssign<&BitVec> for BitVec

source§

fn bitxor_assign(&mut self, rhs: &Self)

Performs the ^= operation. Read more
source§

impl Clone for BitVec

source§

fn clone(&self) -> BitVec

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BitVec

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BitVec

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Display for BitVec

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromIterator<bool> for BitVec

source§

fn from_iter<T: IntoIterator<Item = bool>>(iter: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for BitVec

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a> IntoIterator for &'a BitVec

source§

type IntoIter = Iter<'a>

Which kind of iterator are we turning this into?
source§

type Item = bool

The type of the elements being iterated over.
source§

fn into_iter(self) -> Iter<'a>

Creates an iterator from a value. Read more
source§

impl PartialEq for BitVec

source§

fn eq(&self, other: &BitVec) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl ShlAssign<i128> for BitVec

source§

fn shl_assign(&mut self, other: i128)

Performs the <<= operation. Read more
source§

impl ShlAssign<i16> for BitVec

source§

fn shl_assign(&mut self, other: i16)

Performs the <<= operation. Read more
source§

impl ShlAssign<i32> for BitVec

source§

fn shl_assign(&mut self, other: i32)

Performs the <<= operation. Read more
source§

impl ShlAssign<i64> for BitVec

source§

fn shl_assign(&mut self, other: i64)

Performs the <<= operation. Read more
source§

impl ShlAssign<i8> for BitVec

source§

fn shl_assign(&mut self, other: i8)

Performs the <<= operation. Read more
source§

impl ShlAssign<isize> for BitVec

source§

fn shl_assign(&mut self, other: isize)

Performs the <<= operation. Read more
source§

impl ShlAssign<u128> for BitVec

source§

fn shl_assign(&mut self, other: u128)

Performs the <<= operation. Read more
source§

impl ShlAssign<u16> for BitVec

source§

fn shl_assign(&mut self, other: u16)

Performs the <<= operation. Read more
source§

impl ShlAssign<u32> for BitVec

source§

fn shl_assign(&mut self, other: u32)

Performs the <<= operation. Read more
source§

impl ShlAssign<u64> for BitVec

source§

fn shl_assign(&mut self, other: u64)

Performs the <<= operation. Read more
source§

impl ShlAssign<u8> for BitVec

source§

fn shl_assign(&mut self, other: u8)

Performs the <<= operation. Read more
source§

impl ShlAssign<usize> for BitVec

source§

fn shl_assign(&mut self, other: usize)

Performs the <<= operation. Read more
source§

impl ShrAssign<i128> for BitVec

source§

fn shr_assign(&mut self, other: i128)

Performs the >>= operation. Read more
source§

impl ShrAssign<i16> for BitVec

source§

fn shr_assign(&mut self, other: i16)

Performs the >>= operation. Read more
source§

impl ShrAssign<i32> for BitVec

source§

fn shr_assign(&mut self, other: i32)

Performs the >>= operation. Read more
source§

impl ShrAssign<i64> for BitVec

source§

fn shr_assign(&mut self, other: i64)

Performs the >>= operation. Read more
source§

impl ShrAssign<i8> for BitVec

source§

fn shr_assign(&mut self, other: i8)

Performs the >>= operation. Read more
source§

impl ShrAssign<isize> for BitVec

source§

fn shr_assign(&mut self, other: isize)

Performs the >>= operation. Read more
source§

impl ShrAssign<u128> for BitVec

source§

fn shr_assign(&mut self, other: u128)

Performs the >>= operation. Read more
source§

impl ShrAssign<u16> for BitVec

source§

fn shr_assign(&mut self, other: u16)

Performs the >>= operation. Read more
source§

impl ShrAssign<u32> for BitVec

source§

fn shr_assign(&mut self, other: u32)

Performs the >>= operation. Read more
source§

impl ShrAssign<u64> for BitVec

source§

fn shr_assign(&mut self, other: u64)

Performs the >>= operation. Read more
source§

impl ShrAssign<u8> for BitVec

source§

fn shr_assign(&mut self, other: u8)

Performs the >>= operation. Read more
source§

impl ShrAssign<usize> for BitVec

source§

fn shr_assign(&mut self, other: usize)

Performs the >>= operation. Read more
source§

impl Eq for BitVec

source§

impl StructuralPartialEq for BitVec

Auto Trait Implementations§

§

impl Freeze for BitVec

§

impl RefUnwindSafe for BitVec

§

impl Send for BitVec

§

impl Sync for BitVec

§

impl Unpin for BitVec

§

impl UnwindSafe for BitVec

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+assert_eq!(&bv, &BitVec::from_01str("000"));
+
source

pub fn format(&self, t: char, f: char) -> String

指定したフォーマットの String に変換します。

+
source

pub fn iter(&self) -> Iter<'_>

ビットを順に bool を返すイテレータを作ります。

+

Trait Implementations§

source§

impl BitAndAssign<&BitVec> for BitVec

source§

fn bitand_assign(&mut self, rhs: &Self)

Performs the &= operation. Read more
source§

impl BitOrAssign<&BitVec> for BitVec

source§

fn bitor_assign(&mut self, rhs: &Self)

Performs the |= operation. Read more
source§

impl BitXorAssign<&BitVec> for BitVec

source§

fn bitxor_assign(&mut self, rhs: &Self)

Performs the ^= operation. Read more
source§

impl Clone for BitVec

source§

fn clone(&self) -> BitVec

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BitVec

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BitVec

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl FromIterator<bool> for BitVec

source§

fn from_iter<T: IntoIterator<Item = bool>>(iter: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for BitVec

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a> IntoIterator for &'a BitVec

§

type IntoIter = Iter<'a>

Which kind of iterator are we turning this into?
§

type Item = bool

The type of the elements being iterated over.
source§

fn into_iter(self) -> Iter<'a>

Creates an iterator from a value. Read more
source§

impl PartialEq<BitVec> for BitVec

source§

fn eq(&self, other: &BitVec) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl ShlAssign<i128> for BitVec

source§

fn shl_assign(&mut self, other: i128)

Performs the <<= operation. Read more
source§

impl ShlAssign<i16> for BitVec

source§

fn shl_assign(&mut self, other: i16)

Performs the <<= operation. Read more
source§

impl ShlAssign<i32> for BitVec

source§

fn shl_assign(&mut self, other: i32)

Performs the <<= operation. Read more
source§

impl ShlAssign<i64> for BitVec

source§

fn shl_assign(&mut self, other: i64)

Performs the <<= operation. Read more
source§

impl ShlAssign<i8> for BitVec

source§

fn shl_assign(&mut self, other: i8)

Performs the <<= operation. Read more
source§

impl ShlAssign<isize> for BitVec

source§

fn shl_assign(&mut self, other: isize)

Performs the <<= operation. Read more
source§

impl ShlAssign<u128> for BitVec

source§

fn shl_assign(&mut self, other: u128)

Performs the <<= operation. Read more
source§

impl ShlAssign<u16> for BitVec

source§

fn shl_assign(&mut self, other: u16)

Performs the <<= operation. Read more
source§

impl ShlAssign<u32> for BitVec

source§

fn shl_assign(&mut self, other: u32)

Performs the <<= operation. Read more
source§

impl ShlAssign<u64> for BitVec

source§

fn shl_assign(&mut self, other: u64)

Performs the <<= operation. Read more
source§

impl ShlAssign<u8> for BitVec

source§

fn shl_assign(&mut self, other: u8)

Performs the <<= operation. Read more
source§

impl ShlAssign<usize> for BitVec

source§

fn shl_assign(&mut self, other: usize)

Performs the <<= operation. Read more
source§

impl ShrAssign<i128> for BitVec

source§

fn shr_assign(&mut self, other: i128)

Performs the >>= operation. Read more
source§

impl ShrAssign<i16> for BitVec

source§

fn shr_assign(&mut self, other: i16)

Performs the >>= operation. Read more
source§

impl ShrAssign<i32> for BitVec

source§

fn shr_assign(&mut self, other: i32)

Performs the >>= operation. Read more
source§

impl ShrAssign<i64> for BitVec

source§

fn shr_assign(&mut self, other: i64)

Performs the >>= operation. Read more
source§

impl ShrAssign<i8> for BitVec

source§

fn shr_assign(&mut self, other: i8)

Performs the >>= operation. Read more
source§

impl ShrAssign<isize> for BitVec

source§

fn shr_assign(&mut self, other: isize)

Performs the >>= operation. Read more
source§

impl ShrAssign<u128> for BitVec

source§

fn shr_assign(&mut self, other: u128)

Performs the >>= operation. Read more
source§

impl ShrAssign<u16> for BitVec

source§

fn shr_assign(&mut self, other: u16)

Performs the >>= operation. Read more
source§

impl ShrAssign<u32> for BitVec

source§

fn shr_assign(&mut self, other: u32)

Performs the >>= operation. Read more
source§

impl ShrAssign<u64> for BitVec

source§

fn shr_assign(&mut self, other: u64)

Performs the >>= operation. Read more
source§

impl ShrAssign<u8> for BitVec

source§

fn shr_assign(&mut self, other: u8)

Performs the >>= operation. Read more
source§

impl ShrAssign<usize> for BitVec

source§

fn shr_assign(&mut self, other: usize)

Performs the >>= operation. Read more
source§

impl ToString for BitVec

source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl Eq for BitVec

source§

impl StructuralEq for BitVec

source§

impl StructuralPartialEq for BitVec

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bitvec/struct.Iter.html b/bitvec/struct.Iter.html index 1f5bc6cc..dc6b00c2 100644 --- a/bitvec/struct.Iter.html +++ b/bitvec/struct.Iter.html @@ -1,4 +1,4 @@ -Iter in bitvec - RustIter in bitvec - Rust
-

Struct bitvec::Iter

source ·
pub struct Iter<'a> { /* private fields */ }
Expand description

ビットを順に bool を返すイテレータです。

-

Trait Implementations§

source§

impl<'a> Iterator for Iter<'a>

source§

type Item = bool

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<bool>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct bitvec::Iter

source ·
pub struct Iter<'a> { /* private fields */ }
Expand description

ビットを順に bool を返すイテレータです。

+

Trait Implementations§

source§

impl<'a> Iterator for Iter<'a>

§

type Item = bool

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<bool>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Iter<'a>

§

impl<'a> RefUnwindSafe for Iter<'a>

§

impl<'a> Send for Iter<'a>

§

impl<'a> Sync for Iter<'a>

§

impl<'a> Unpin for Iter<'a>

§

impl<'a> UnwindSafe for Iter<'a>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Iter<'a>

§

impl<'a> Send for Iter<'a>

§

impl<'a> Sync for Iter<'a>

§

impl<'a> Unpin for Iter<'a>

§

impl<'a> UnwindSafe for Iter<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/bsgs/all.html b/bsgs/all.html index db65faca..d1b16af4 100644 --- a/bsgs/all.html +++ b/bsgs/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

\ No newline at end of file +

List of all items

Structs

\ No newline at end of file diff --git a/bsgs/index.html b/bsgs/index.html index aee0285e..2f119a4d 100644 --- a/bsgs/index.html +++ b/bsgs/index.html @@ -1,4 +1,4 @@ -bsgs - Rustbsgs - Rust
-

Crate bsgs

source ·
Expand description

Baby-step giant-step により、巡回群上の離散対数をします。

-

§使い方

+

Crate bsgs

source ·
Expand description

Baby-step giant-step により、巡回群上の離散対数をします。

+

使い方

Bsgs::new を使いましょう。

use bsgs::Bsgs;
@@ -59,11 +59,11 @@ 

§使い方

assert_eq!(bsgs.log(2), None); assert_eq!(bsgs.log(3), None); assert_eq!(bsgs.log(7), None);
-

§仕様検討

+

仕様検討

  • ちなみに位数の上界は、探索の打ち切りに用いています。
  • 群の演算は、モジュラス等が動的に与えられる可能性を考えて、型ではなくオブジェクトにしました。
  • たいてい ℤ / n ℤ の乗法群にしか使わない気がするのですが、それようのユーティルがうまく作れず……
-

Structs§

  • Baby-stpp giant-step のソルバーです。
\ No newline at end of file +

Structs

  • Baby-stpp giant-step のソルバーです。
\ No newline at end of file diff --git a/bsgs/struct.Bsgs.html b/bsgs/struct.Bsgs.html index 2988a5a7..c6cdfca2 100644 --- a/bsgs/struct.Bsgs.html +++ b/bsgs/struct.Bsgs.html @@ -1,4 +1,4 @@ -Bsgs in bsgs - RustBsgs in bsgs - Rust
-

Struct bsgs::Bsgs

source ·
pub struct Bsgs<T, Mul> { /* private fields */ }
Expand description

Baby-stpp giant-step のソルバーです。

-

Implementations§

source§

impl<T, Mul> Bsgs<T, Mul>
where - T: Copy + Hash + Eq, - Mul: Fn(T, T) -> T,

source

pub fn new<Inv, Id>( +

Struct bsgs::Bsgs

source ·
pub struct Bsgs<T, Mul> { /* private fields */ }
Expand description

Baby-stpp giant-step のソルバーです。

+

Implementations§

source§

impl<T, Mul> Bsgs<T, Mul>where + T: Copy + Hash + Eq, + Mul: Fn(T, T) -> T,

source

pub fn new<Inv, Id>( generator: T, - ord_upper_bound: u64, + ord_upper_bound: u64, mul: Mul, inv: Inv, - id: Id, -) -> Self
where - Id: Fn() -> T, - Inv: Fn(T) -> T,

新しい BSGS ソルバーを構築します。

-
§Parameters
+ id: Id +) -> Selfwhere + Id: Fn() -> T, + Inv: Fn(T) -> T,

新しい BSGS ソルバーを構築します。

+
Parameters
  • generator: 生成子
  • ord_upper_bound: 生成子の位数の上界
  • mul, inv, id: 群の演算
-
§要件
+
要件

(generator, mul, inv, id) が巡回群の演算とその生成子

-
§計算量
+
計算量

Θ ( √ ( ord_upper_bound ) ) 回の mul の呼び出しと、2 回の id の呼び出し

-
§計算しているもの
+
計算しているもの
  • sqrt: ord_upper_bound の平方根
  • map: generator0..sqrt
  • giant_step_inverse: generator-sqrt
-
source

pub fn log(&self, x: T) -> Option<u64>

x の離散対数が存在すれば返し、存在しなければ None を返します。

-
§計算量
+
source

pub fn log(&self, x: T) -> Option<u64>

x の離散対数が存在すれば返し、存在しなければ None を返します。

+
計算量

Θ ( √ ( ord_upper_bound ) ) 回の mul の呼び出し

-

Trait Implementations§

source§

impl<T: Clone, Mul: Clone> Clone for Bsgs<T, Mul>

source§

fn clone(&self) -> Bsgs<T, Mul>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug, Mul> Debug for Bsgs<T, Mul>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, Mul> Freeze for Bsgs<T, Mul>
where - T: Freeze, - Mul: Freeze,

§

impl<T, Mul> RefUnwindSafe for Bsgs<T, Mul>
where - T: RefUnwindSafe, - Mul: RefUnwindSafe,

§

impl<T, Mul> Send for Bsgs<T, Mul>
where - T: Send, - Mul: Send,

§

impl<T, Mul> Sync for Bsgs<T, Mul>
where - T: Sync, - Mul: Sync,

§

impl<T, Mul> Unpin for Bsgs<T, Mul>
where - T: Unpin, - Mul: Unpin,

§

impl<T, Mul> UnwindSafe for Bsgs<T, Mul>
where - T: UnwindSafe, - Mul: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<T: Clone, Mul: Clone> Clone for Bsgs<T, Mul>

source§

fn clone(&self) -> Bsgs<T, Mul>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug, Mul> Debug for Bsgs<T, Mul>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, Mul> RefUnwindSafe for Bsgs<T, Mul>where + Mul: RefUnwindSafe, + T: RefUnwindSafe,

§

impl<T, Mul> Send for Bsgs<T, Mul>where + Mul: Send, + T: Send,

§

impl<T, Mul> Sync for Bsgs<T, Mul>where + Mul: Sync, + T: Sync,

§

impl<T, Mul> Unpin for Bsgs<T, Mul>where + Mul: Unpin, + T: Unpin,

§

impl<T, Mul> UnwindSafe for Bsgs<T, Mul>where + Mul: UnwindSafe, + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/all.html b/cht/all.html index 0ae2709b..85d91c34 100644 --- a/cht/all.html +++ b/cht/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

Enums

Traits

Constants

\ No newline at end of file +

List of all items

Structs

Enums

Traits

Constants

\ No newline at end of file diff --git a/cht/constant.X.html b/cht/constant.X.html index 937bdc46..683ab26f 100644 --- a/cht/constant.X.html +++ b/cht/constant.X.html @@ -1,4 +1,4 @@ -X in cht - RustX in cht - Rust
-

Constant cht::X

source ·
pub const X: Quadratic;
Expand description

変数

+

Constant cht::X

source ·
pub const X: Quadratic;
Expand description

変数

\ No newline at end of file diff --git a/cht/enum.Concave.html b/cht/enum.Concave.html index 6c1edabb..99443e43 100644 --- a/cht/enum.Concave.html +++ b/cht/enum.Concave.html @@ -1,4 +1,4 @@ -Concave in cht - RustConcave in cht - Rust
-

Enum cht::Concave

source ·
pub enum Concave {}
Expand description

凹関数を管理する方であるというマーカー

-

Trait Implementations§

source§

impl Clone for Concave

source§

fn clone(&self) -> Concave

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConvexOrConcave for Concave

source§

impl Debug for Concave

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Concave

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Copy for Concave

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Enum cht::Concave

source ·
pub enum Concave {}
Expand description

凹関数を管理する方であるというマーカー

+

Trait Implementations§

source§

impl Clone for Concave

source§

fn clone(&self) -> Concave

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConvexOrConcave for Concave

source§

impl Debug for Concave

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Concave

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Copy for Concave

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/enum.Convex.html b/cht/enum.Convex.html index 8788b2e1..d443a4ed 100644 --- a/cht/enum.Convex.html +++ b/cht/enum.Convex.html @@ -1,4 +1,4 @@ -Convex in cht - RustConvex in cht - Rust
-

Enum cht::Convex

source ·
pub enum Convex {}
Expand description

凸関数を管理する方であるというマーカー

-

Trait Implementations§

source§

impl Clone for Convex

source§

fn clone(&self) -> Convex

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConvexOrConcave for Convex

source§

impl Debug for Convex

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Convex

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Copy for Convex

Auto Trait Implementations§

§

impl Freeze for Convex

§

impl RefUnwindSafe for Convex

§

impl Send for Convex

§

impl Sync for Convex

§

impl Unpin for Convex

§

impl UnwindSafe for Convex

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Enum cht::Convex

source ·
pub enum Convex {}
Expand description

凸関数を管理する方であるというマーカー

+

Trait Implementations§

source§

impl Clone for Convex

source§

fn clone(&self) -> Convex

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ConvexOrConcave for Convex

source§

impl Debug for Convex

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for Convex

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Copy for Convex

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/index.html b/cht/index.html index 4e4d31e0..09eb2740 100644 --- a/cht/index.html +++ b/cht/index.html @@ -1,4 +1,4 @@ -cht - Rustcht - Rust
-

Crate cht

source ·
Expand description

CHT です。

-

§TODO

+

Crate cht

source ·
Expand description

CHT です。

+

TODO

  • 浮動小数点数
      @@ -43,7 +43,7 @@

      §TODO

    • 各アイテムのドキュメントを書く
    • VecCht のカーソル管理もう少し上手にできないですかね
    -

    §WON’T DO

    +

    WON’T DO

    • 凸探索付き平衡二分木を自作して、直線の式だけ管理すれば良いようにする
        @@ -51,7 +51,7 @@

        §WON’T DO

    -

    §できること

    +

    できること

    2次の係数のすべて等しいような、区分的に2次関数であるような、凸/凹関数を管理します。

    • 本体 @@ -79,7 +79,7 @@

      §

-

§Examples

+

Examples

use cht::BTreeCht;
 use cht::Concave;
 use cht::X;
@@ -96,4 +96,4 @@ 

§Examples

cht.add((1 - 2 * X) * (1 - 3 * X) - 5 * X * X); assert_eq!(cht.multieval(0..5), vec![1, -3, -5, -5, -3]); assert_eq!(cht.eval(-1), 1);
-

Structs§

Enums§

  • 凹関数を管理する方であるというマーカー
  • 凸関数を管理する方であるというマーカー

Constants§

  • 変数

Traits§

\ No newline at end of file +

Structs

Enums

  • 凹関数を管理する方であるというマーカー
  • 凸関数を管理する方であるというマーカー

Constants

  • 変数

Traits

\ No newline at end of file diff --git a/cht/struct.BTreeCht.html b/cht/struct.BTreeCht.html index 78508e94..d0ec044d 100644 --- a/cht/struct.BTreeCht.html +++ b/cht/struct.BTreeCht.html @@ -1,4 +1,4 @@ -BTreeCht in cht - RustBTreeCht in cht - Rust
-

Struct cht::BTreeCht

source ·
pub struct BTreeCht<C> { /* private fields */ }
Expand description

ログがつく方

-

Implementations§

source§

impl<C: ConvexOrConcave> BTreeCht<C>

source

pub fn new() -> Self

source

pub fn multieval(&self, xs: impl Iterator<Item = i64>) -> Vec<i64>

source

pub fn eval(&self, x: i64) -> i64

source

pub fn add(&mut self, quadratic: Quadratic)

Trait Implementations§

source§

impl<C: Clone> Clone for BTreeCht<C>

source§

fn clone(&self) -> BTreeCht<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug> Debug for BTreeCht<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C: Default> Default for BTreeCht<C>

source§

fn default() -> BTreeCht<C>

Returns the “default value” for a type. Read more
source§

impl<C: Hash> Hash for BTreeCht<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<C: PartialEq> PartialEq for BTreeCht<C>

source§

fn eq(&self, other: &BTreeCht<C>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<C: Eq> Eq for BTreeCht<C>

source§

impl<C> StructuralPartialEq for BTreeCht<C>

Auto Trait Implementations§

§

impl<C> Freeze for BTreeCht<C>

§

impl<C> RefUnwindSafe for BTreeCht<C>

§

impl<C> Send for BTreeCht<C>

§

impl<C> Sync for BTreeCht<C>

§

impl<C> Unpin for BTreeCht<C>

§

impl<C> UnwindSafe for BTreeCht<C>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Struct cht::BTreeCht

source ·
pub struct BTreeCht<C> { /* private fields */ }
Expand description

ログがつく方

+

Implementations§

source§

impl<C: ConvexOrConcave> BTreeCht<C>

source

pub fn new() -> Self

source

pub fn multieval(&self, xs: impl Iterator<Item = i64>) -> Vec<i64>

source

pub fn eval(&self, x: i64) -> i64

source

pub fn add(&mut self, quadratic: Quadratic)

Trait Implementations§

source§

impl<C: Clone> Clone for BTreeCht<C>

source§

fn clone(&self) -> BTreeCht<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug> Debug for BTreeCht<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C: Default> Default for BTreeCht<C>

source§

fn default() -> BTreeCht<C>

Returns the “default value” for a type. Read more
source§

impl<C: Hash> Hash for BTreeCht<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<C: PartialEq> PartialEq<BTreeCht<C>> for BTreeCht<C>

source§

fn eq(&self, other: &BTreeCht<C>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<C: Eq> Eq for BTreeCht<C>

source§

impl<C> StructuralEq for BTreeCht<C>

source§

impl<C> StructuralPartialEq for BTreeCht<C>

Auto Trait Implementations§

§

impl<C> RefUnwindSafe for BTreeCht<C>

§

impl<C> Send for BTreeCht<C>

§

impl<C> Sync for BTreeCht<C>

§

impl<C> Unpin for BTreeCht<C>

§

impl<C> UnwindSafe for BTreeCht<C>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/struct.Quadratic.html b/cht/struct.Quadratic.html index 55213db0..5e6c82e5 100644 --- a/cht/struct.Quadratic.html +++ b/cht/struct.Quadratic.html @@ -1,4 +1,4 @@ -Quadratic in cht - RustQuadratic in cht - Rust
-

Struct cht::Quadratic

source ·
pub struct Quadratic(/* private fields */);
Expand description

二次式

-

Implementations§

source§

impl Quadratic

source

pub fn eval(self, x: i64) -> i64

source

pub fn square(self) -> Self

Trait Implementations§

source§

impl Add<Quadratic> for i64

source§

type Output = Quadratic

The resulting type after applying the + operator.
source§

fn add(self, rhs: Quadratic) -> Self::Output

Performs the + operation. Read more
source§

impl<T: Into<Self>> Add<T> for Quadratic

source§

type Output = Quadratic

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Quadratic

source§

fn clone(&self) -> Quadratic

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Quadratic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Quadratic

source§

fn default() -> Quadratic

Returns the “default value” for a type. Read more
source§

impl From<i64> for Quadratic

source§

fn from(x: i64) -> Self

Converts to this type from the input type.
source§

impl Hash for Quadratic

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Mul<Quadratic> for i64

source§

type Output = Quadratic

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Quadratic) -> Self::Output

Performs the * operation. Read more
source§

impl<T: Into<Self>> Mul<T> for Quadratic

source§

type Output = Quadratic

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl Neg for Quadratic

source§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl PartialEq for Quadratic

source§

fn eq(&self, other: &Quadratic) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Sub<Quadratic> for i64

source§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Quadratic) -> Self::Output

Performs the - operation. Read more
source§

impl<T: Into<Self>> Sub<T> for Quadratic

source§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Quadratic

source§

impl Eq for Quadratic

source§

impl StructuralPartialEq for Quadratic

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Struct cht::Quadratic

source ·
pub struct Quadratic(_);
Expand description

二次式

+

Implementations§

source§

impl Quadratic

source

pub fn eval(self, x: i64) -> i64

source

pub fn square(self) -> Self

Trait Implementations§

source§

impl Add<Quadratic> for i64

§

type Output = Quadratic

The resulting type after applying the + operator.
source§

fn add(self, rhs: Quadratic) -> Self::Output

Performs the + operation. Read more
source§

impl<T: Into<Self>> Add<T> for Quadratic

§

type Output = Quadratic

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Quadratic

source§

fn clone(&self) -> Quadratic

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Quadratic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Quadratic

source§

fn default() -> Quadratic

Returns the “default value” for a type. Read more
source§

impl From<i64> for Quadratic

source§

fn from(x: i64) -> Self

Converts to this type from the input type.
source§

impl Hash for Quadratic

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Mul<Quadratic> for i64

§

type Output = Quadratic

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Quadratic) -> Self::Output

Performs the * operation. Read more
source§

impl<T: Into<Self>> Mul<T> for Quadratic

§

type Output = Quadratic

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl Neg for Quadratic

§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl PartialEq<Quadratic> for Quadratic

source§

fn eq(&self, other: &Quadratic) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Sub<Quadratic> for i64

§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Quadratic) -> Self::Output

Performs the - operation. Read more
source§

impl<T: Into<Self>> Sub<T> for Quadratic

§

type Output = Quadratic

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Quadratic

source§

impl Eq for Quadratic

source§

impl StructuralEq for Quadratic

source§

impl StructuralPartialEq for Quadratic

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/struct.VecCht.html b/cht/struct.VecCht.html index 742cd153..d588df74 100644 --- a/cht/struct.VecCht.html +++ b/cht/struct.VecCht.html @@ -1,4 +1,4 @@ -VecCht in cht - RustVecCht in cht - Rust
-

Struct cht::VecCht

source ·
pub struct VecCht<C> { /* private fields */ }
Expand description

ログがつかない方

-

Implementations§

source§

impl<C: ConvexOrConcave> VecCht<C>

source

pub fn new() -> Self

source

pub fn multieval(&mut self, xs: impl Iterator<Item = i64>) -> Vec<i64>

source

pub fn eval(&mut self, x: i64) -> i64

source

pub fn add(&mut self, quadratic: Quadratic)

Trait Implementations§

source§

impl<C: Clone> Clone for VecCht<C>

source§

fn clone(&self) -> VecCht<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug> Debug for VecCht<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C: Default> Default for VecCht<C>

source§

fn default() -> VecCht<C>

Returns the “default value” for a type. Read more
source§

impl<C: Hash> Hash for VecCht<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<C: PartialEq> PartialEq for VecCht<C>

source§

fn eq(&self, other: &VecCht<C>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<C: Eq> Eq for VecCht<C>

source§

impl<C> StructuralPartialEq for VecCht<C>

Auto Trait Implementations§

§

impl<C> Freeze for VecCht<C>

§

impl<C> RefUnwindSafe for VecCht<C>

§

impl<C> Send for VecCht<C>

§

impl<C> Sync for VecCht<C>

§

impl<C> Unpin for VecCht<C>

§

impl<C> UnwindSafe for VecCht<C>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Struct cht::VecCht

source ·
pub struct VecCht<C> { /* private fields */ }
Expand description

ログがつかない方

+

Implementations§

source§

impl<C: ConvexOrConcave> VecCht<C>

source

pub fn new() -> Self

source

pub fn multieval(&mut self, xs: impl Iterator<Item = i64>) -> Vec<i64>

source

pub fn eval(&mut self, x: i64) -> i64

source

pub fn add(&mut self, quadratic: Quadratic)

Trait Implementations§

source§

impl<C: Clone> Clone for VecCht<C>

source§

fn clone(&self) -> VecCht<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C: Debug> Debug for VecCht<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C: Default> Default for VecCht<C>

source§

fn default() -> VecCht<C>

Returns the “default value” for a type. Read more
source§

impl<C: Hash> Hash for VecCht<C>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<C: PartialEq> PartialEq<VecCht<C>> for VecCht<C>

source§

fn eq(&self, other: &VecCht<C>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<C: Eq> Eq for VecCht<C>

source§

impl<C> StructuralEq for VecCht<C>

source§

impl<C> StructuralPartialEq for VecCht<C>

Auto Trait Implementations§

§

impl<C> RefUnwindSafe for VecCht<C>

§

impl<C> Send for VecCht<C>

§

impl<C> Sync for VecCht<C>

§

impl<C> Unpin for VecCht<C>

§

impl<C> UnwindSafe for VecCht<C>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/cht/trait.ConvexOrConcave.html b/cht/trait.ConvexOrConcave.html index 56e3ed57..37b90cf0 100644 --- a/cht/trait.ConvexOrConcave.html +++ b/cht/trait.ConvexOrConcave.html @@ -1,4 +1,4 @@ -ConvexOrConcave in cht - RustConvexOrConcave in cht - Rust
-

Trait cht::ConvexOrConcave

source ·
pub trait ConvexOrConcave: Copy {
+

Trait cht::ConvexOrConcave

source ·
pub trait ConvexOrConcave: Copy {
     // Required method
-    fn negate_if_concave(x: i64) -> i64;
+    fn negate_if_concave(x: i64) -> i64;
 }
Expand description

BTreeCht, VecCht が凸関数を管理するか、凹関数を管理するかを表すマーカーのトレイト

-

Required Methods§

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file +

Required Methods§

Implementors§

\ No newline at end of file diff --git a/cipolla/all.html b/cipolla/all.html index 6216cac0..9dffff55 100644 --- a/cipolla/all.html +++ b/cipolla/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Traits

Functions

\ No newline at end of file +

List of all items

Traits

Functions

\ No newline at end of file diff --git a/cipolla/fn.cipolla_sqrt.html b/cipolla/fn.cipolla_sqrt.html index 69474314..05471316 100644 --- a/cipolla/fn.cipolla_sqrt.html +++ b/cipolla/fn.cipolla_sqrt.html @@ -1,4 +1,4 @@ -cipolla_sqrt in cipolla - Rustcipolla_sqrt in cipolla - Rust
-

Function cipolla::cipolla_sqrt

source ·
pub fn cipolla_sqrt<T: Unsigned>(a: T, p: T) -> Option<T>
\ No newline at end of file +

Function cipolla::cipolla_sqrt

source ·
pub fn cipolla_sqrt<T: Unsigned>(a: T, p: T) -> Option<T>
\ No newline at end of file diff --git a/cipolla/index.html b/cipolla/index.html index 4290c93b..0ac2a836 100644 --- a/cipolla/index.html +++ b/cipolla/index.html @@ -1,4 +1,4 @@ -cipolla - Rustcipolla - Rust
-

Crate cipolla

source ·

Traits§

Functions§

\ No newline at end of file +
\ No newline at end of file diff --git a/cipolla/trait.Unsigned.html b/cipolla/trait.Unsigned.html index 402eb51d..80ce3269 100644 --- a/cipolla/trait.Unsigned.html +++ b/cipolla/trait.Unsigned.html @@ -1,4 +1,4 @@ -Unsigned in cipolla - RustUnsigned in cipolla - Rust
-

Trait cipolla::Unsigned

source ·
pub trait Unsigned:
-    Sized
-    + Clone
-    + Copy
-    + PartialEq
-    + Add<Output = Self>
-    + Sub<Output = Self>
-    + Mul<Output = Self>
-    + Div<Output = Self>
-    + Rem<Output = Self> {
+

Trait cipolla::Unsigned

source ·
pub trait Unsigned: Sized + Clone + Copy + PartialEq + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Rem<Output = Self> {
     const ZERO: Self;
     const ONE: Self;
     const TWO: Self;
-}

Required Associated Constants§

source

const ZERO: Self

source

const ONE: Self

source

const TWO: Self

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Unsigned for u8

source§

const ZERO: Self = 0u8

source§

const ONE: Self = 1u8

source§

const TWO: Self = 2u8

source§

impl Unsigned for u16

source§

const ZERO: Self = 0u16

source§

const ONE: Self = 1u16

source§

const TWO: Self = 2u16

source§

impl Unsigned for u32

source§

const ZERO: Self = 0u32

source§

const ONE: Self = 1u32

source§

const TWO: Self = 2u32

source§

impl Unsigned for u64

source§

const ZERO: Self = 0u64

source§

const ONE: Self = 1u64

source§

const TWO: Self = 2u64

source§

impl Unsigned for u128

source§

const ZERO: Self = 0u128

source§

const ONE: Self = 1u128

source§

const TWO: Self = 2u128

source§

impl Unsigned for usize

source§

const ZERO: Self = 0usize

source§

const ONE: Self = 1usize

source§

const TWO: Self = 2usize

Implementors§

\ No newline at end of file +}

Required Associated Constants§

source

const ZERO: Self

source

const ONE: Self

source

const TWO: Self

Implementations on Foreign Types§

source§

impl Unsigned for usize

source§

const ZERO: Self = 0usize

source§

const ONE: Self = 1usize

source§

const TWO: Self = 2usize

source§

impl Unsigned for u32

source§

const ZERO: Self = 0u32

source§

const ONE: Self = 1u32

source§

const TWO: Self = 2u32

source§

impl Unsigned for u16

source§

const ZERO: Self = 0u16

source§

const ONE: Self = 1u16

source§

const TWO: Self = 2u16

source§

impl Unsigned for u64

source§

const ZERO: Self = 0u64

source§

const ONE: Self = 1u64

source§

const TWO: Self = 2u64

source§

impl Unsigned for u128

source§

const ZERO: Self = 0u128

source§

const ONE: Self = 1u128

source§

const TWO: Self = 2u128

source§

impl Unsigned for u8

source§

const ZERO: Self = 0u8

source§

const ONE: Self = 1u8

source§

const TWO: Self = 2u8

Implementors§

\ No newline at end of file diff --git a/cmpmore/all.html b/cmpmore/all.html deleted file mode 100644 index 22758660..00000000 --- a/cmpmore/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -

List of all items

Traits

Macros

Functions

\ No newline at end of file diff --git a/cmpmore/fn.change_max.html b/cmpmore/fn.change_max.html deleted file mode 100644 index 36ff5818..00000000 --- a/cmpmore/fn.change_max.html +++ /dev/null @@ -1,40 +0,0 @@ -change_max in cmpmore - Rust - - - - - -

Function cmpmore::change_max

source ·
pub fn change_max<T: PartialOrd>(lhs: &mut T, rhs: T)
Expand description

If lhs is smaller than rhs, override lhs by rhs.

-

§Examples

-
let mut x: i32 = 3;
-change_max(&mut x, 4);
-assert_eq!(x, 4);
-
\ No newline at end of file diff --git a/cmpmore/fn.change_min.html b/cmpmore/fn.change_min.html deleted file mode 100644 index 250d6d49..00000000 --- a/cmpmore/fn.change_min.html +++ /dev/null @@ -1,40 +0,0 @@ -change_min in cmpmore - Rust - - - - - -

Function cmpmore::change_min

source ·
pub fn change_min<T: PartialOrd>(lhs: &mut T, rhs: T)
Expand description

If lhs is larger than rhs, override lhs by rhs.

-

§Examples

-
let mut x: i32 = 3;
-change_min(&mut x, 2);
-assert_eq!(x, 2);
-
\ No newline at end of file diff --git a/cmpmore/index.html b/cmpmore/index.html deleted file mode 100644 index 607d313d..00000000 --- a/cmpmore/index.html +++ /dev/null @@ -1,36 +0,0 @@ -cmpmore - Rust - - - - - -

Crate cmpmore

source ·
Expand description

Utility change_{min,max}.

-

Macros§

Traits§

Functions§

  • If lhs is smaller than rhs, override lhs by rhs.
  • If lhs is larger than rhs, override lhs by rhs.
\ No newline at end of file diff --git a/cmpmore/macro.change_max!.html b/cmpmore/macro.change_max!.html deleted file mode 100644 index 5fa4288f..00000000 --- a/cmpmore/macro.change_max!.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to macro.change_max.html...

- - - \ No newline at end of file diff --git a/cmpmore/macro.change_max.html b/cmpmore/macro.change_max.html deleted file mode 100644 index 7cf59911..00000000 --- a/cmpmore/macro.change_max.html +++ /dev/null @@ -1,42 +0,0 @@ -change_max in cmpmore - Rust - - - - - -

Macro cmpmore::change_max

source ·
macro_rules! change_max {
-    ($lhs:expr, $rhs:expr) => { ... };
-}
Expand description

Macro version of change_max(). This is useful to avoid borrow checkers.

-

§Examples

-
let mut a = [3, 4];
-change_max!(&mut a[0], a[1]);
-assert_eq!(a, [4, 4]);
-
\ No newline at end of file diff --git a/cmpmore/macro.change_min!.html b/cmpmore/macro.change_min!.html deleted file mode 100644 index b4852906..00000000 --- a/cmpmore/macro.change_min!.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to macro.change_min.html...

- - - \ No newline at end of file diff --git a/cmpmore/macro.change_min.html b/cmpmore/macro.change_min.html deleted file mode 100644 index b999d0ce..00000000 --- a/cmpmore/macro.change_min.html +++ /dev/null @@ -1,42 +0,0 @@ -change_min in cmpmore - Rust - - - - - -

Macro cmpmore::change_min

source ·
macro_rules! change_min {
-    ($lhs:expr, $rhs:expr) => { ... };
-}
Expand description

Macro version of change_min(). This is useful to avoid borrow checkers.

-

§Examples

-
let mut a = [3, 2];
-change_min!(&mut a[0], a[1]);
-assert_eq!(a, [2, 2]);
-
\ No newline at end of file diff --git a/cmpmore/sidebar-items.js b/cmpmore/sidebar-items.js deleted file mode 100644 index 7c8c595d..00000000 --- a/cmpmore/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["change_max","change_min"],"macro":["change_max","change_min"],"trait":["CmpMore"]}; \ No newline at end of file diff --git a/cmpmore/trait.CmpMore.html b/cmpmore/trait.CmpMore.html deleted file mode 100644 index bfd53bda..00000000 --- a/cmpmore/trait.CmpMore.html +++ /dev/null @@ -1,50 +0,0 @@ -CmpMore in cmpmore - Rust - - - - - -

Trait cmpmore::CmpMore

source ·
pub trait CmpMore: PartialOrd + Sized {
-    // Provided methods
-    fn change_min(&mut self, rhs: Self) { ... }
-    fn change_max(&mut self, rhs: Self) { ... }
-}
Expand description

Provide method versions of change_min(), change_max()

-

Provided Methods§

source

fn change_min(&mut self, rhs: Self)

If self is larger than rhs, override self by rhs.

-
§Examples
-
let mut x: i32 = 3;
-x.change_min(2);
-assert_eq!(x, 2);
-
source

fn change_max(&mut self, rhs: Self)

If self is smaller than rhs, override self by rhs.

-
§Examples
-
let mut x: i32 = 3;
-x.change_max(4);
-assert_eq!(x, 4);
-

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/convex_hull/all.html b/convex_hull/all.html index 4ec8ec4d..7e7586c8 100644 --- a/convex_hull/all.html +++ b/convex_hull/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Functions

\ No newline at end of file +

List of all items

Functions

\ No newline at end of file diff --git a/convex_hull/fn.caliper.html b/convex_hull/fn.caliper.html index ab71d3e4..9fd2ad9c 100644 --- a/convex_hull/fn.caliper.html +++ b/convex_hull/fn.caliper.html @@ -1,4 +1,4 @@ -caliper in convex_hull - Rustcaliper in convex_hull - Rust
-

Function convex_hull::caliper

source ·
pub fn caliper(a: &[[i64; 2]]) -> (i64, [[i64; 2]; 2])
Expand description

凸包を求めます。 +

Function convex_hull::caliper

source ·
pub fn caliper(a: &[[i64; 2]]) -> (i64, [[i64; 2]; 2])
Expand description

凸包を求めます。 具体的には、辞書順最小の頂点から始めて、時計回りの凸包を作ります。 a が空のときには空配列を返します。

\ No newline at end of file diff --git a/convex_hull/fn.ccw.html b/convex_hull/fn.ccw.html index 75bb0f60..2d1d8280 100644 --- a/convex_hull/fn.ccw.html +++ b/convex_hull/fn.ccw.html @@ -1,4 +1,4 @@ -ccw in convex_hull - Rustccw in convex_hull - Rust
-

Function convex_hull::ccw

source ·
pub fn ccw(p0: [i64; 2], p1: [i64; 2], p2: [i64; 2]) -> i64
Expand description

det(p1 - p0, p2 - p0) を求めます。

+

Function convex_hull::ccw

source ·
pub fn ccw(p0: [i64; 2], p1: [i64; 2], p2: [i64; 2]) -> i64
Expand description

det(p1 - p0, p2 - p0) を求めます。

\ No newline at end of file diff --git a/convex_hull/fn.convex_hull.html b/convex_hull/fn.convex_hull.html index e9e97164..7ed4b7d1 100644 --- a/convex_hull/fn.convex_hull.html +++ b/convex_hull/fn.convex_hull.html @@ -1,4 +1,4 @@ -convex_hull in convex_hull - Rustconvex_hull in convex_hull - Rust
-

Function convex_hull::convex_hull

source ·
pub fn convex_hull(a: &[[i64; 2]]) -> Vec<[i64; 2]>
Expand description

凸包を求めます。 +

Function convex_hull::convex_hull

source ·
pub fn convex_hull(a: &[[i64; 2]]) -> Vec<[i64; 2]>
Expand description

凸包を求めます。 具体的には、辞書順最小の頂点から始めて、時計回りの凸包を作ります。 a が空のときには空配列を返します。

\ No newline at end of file diff --git a/convex_hull/fn.is_convex.html b/convex_hull/fn.is_convex.html index 7fdd66c6..093cc7c5 100644 --- a/convex_hull/fn.is_convex.html +++ b/convex_hull/fn.is_convex.html @@ -1,4 +1,4 @@ -is_convex in convex_hull - Rustis_convex in convex_hull - Rust
-

Function convex_hull::is_convex

source ·
pub fn is_convex(a: &[[i64; 2]]) -> bool
Expand description

凸であれば true を返します。

+

Function convex_hull::is_convex

source ·
pub fn is_convex(a: &[[i64; 2]]) -> bool
Expand description

凸であれば true を返します。

\ No newline at end of file diff --git a/convex_hull/fn.sqmag.html b/convex_hull/fn.sqmag.html index b14a5d2d..2e2a9890 100644 --- a/convex_hull/fn.sqmag.html +++ b/convex_hull/fn.sqmag.html @@ -1,4 +1,4 @@ -sqmag in convex_hull - Rustsqmag in convex_hull - Rust
-

Function convex_hull::sqmag

source ·
pub fn sqmag(p0: [i64; 2], p1: [i64; 2]) -> i64
Expand description

|p0 - p1| ^ 2 を求めます。

+

Function convex_hull::sqmag

source ·
pub fn sqmag(p0: [i64; 2], p1: [i64; 2]) -> i64
Expand description

|p0 - p1| ^ 2 を求めます。

\ No newline at end of file diff --git a/convex_hull/index.html b/convex_hull/index.html index a3e5bcfc..5d1cb6b3 100644 --- a/convex_hull/index.html +++ b/convex_hull/index.html @@ -1,4 +1,4 @@ -convex_hull - Rustconvex_hull - Rust
-

Crate convex_hull

source ·

Functions§

  • 凸包を求めます。 +

    Crate convex_hull

    source ·

    Functions

    • 凸包を求めます。 具体的には、辞書順最小の頂点から始めて、時計回りの凸包を作ります。 -a が空のときには空配列を返します。
    • det(p1 - p0, p2 - p0) を求めます。
    • 凸包を求めます。 +a が空のときには空配列を返します。
    • det(p1 - p0, p2 - p0) を求めます。
    • 凸包を求めます。 具体的には、辞書順最小の頂点から始めて、時計回りの凸包を作ります。 -a が空のときには空配列を返します。
    • 凸であれば true を返します。
    • |p0 - p1| ^ 2 を求めます。
    \ No newline at end of file +a が空のときには空配列を返します。
  • 凸であれば true を返します。
  • |p0 - p1| ^ 2 を求めます。
\ No newline at end of file diff --git a/crates.js b/crates.js index f939fae9..70e7227e 100644 --- a/crates.js +++ b/crates.js @@ -1,2 +1 @@ -window.ALL_CRATES = ["accum","advance","avl_tree","bfs","bfs01","binary","bitutils","bitvec","bsgs","cht","cipolla","cmpmore","convex_hull","dfs","dijkstra_radix_heap","dinic","dual_segtree","elim","erato","euclid","fp","fps","gco","gridnei","gss","heap_slope_trick","heap_tricks","hld","hopkarp","hungarian","interval_heap","io","lagrange","lazy_segbeats","lazy_segtree","lg","lin_ineq","link_cut_tree","low_link","make_graph","manacher","mincost_flow","monotone_minima","naive_poly","newton","next_permutation","numeric_search","open","partially_persistent_union_find","radix_heap","randtools","rational","rb","rbtree","scc","segbeats","segbeats_task3","segtree","skew_heap","slicemore","snippetter","sort_tree","sparse_table","splay_tree","suffix_array","suffix_sum","swag","tree_fold","trial","trie","two_sat","uf_checklist","union_find","veb","vec_lines","wavelet_matrix","z_algo","zeta"]; -//{"start":21,"fragment_lengths":[7,10,11,6,8,9,11,9,7,6,10,10,14,6,22,8,15,7,8,9,5,6,6,10,6,19,14,6,10,12,16,5,11,16,15,5,11,16,11,13,11,15,18,13,9,19,17,7,34,13,12,11,5,9,6,11,17,10,12,12,13,12,15,13,15,13,7,12,8,7,10,15,13,6,12,17,9,7]} \ No newline at end of file +window.ALL_CRATES = ["accum","avl_tree","bfs","bfs01","binary","bitvec","bsgs","cht","cipolla","convex_hull","dfs","dijkstra_radix_heap","dinic","dual_segtree","elim","erato","euclid","fp","fps","gco","gss","heap_slope_trick","heap_tricks","hld","hopkarp","hungarian","interval_heap","io","lagrange","lazy_segbeats","lazy_segtree","lg","lin_ineq","link_cut_tree","low_link","make_graph","manacher","mincost_flow","monotone_minima","naive_poly","newton","next_permutation","numeric_search","partially_persistent_union_find","radix_heap","randtools","rational","rb","rbtree","riff","scc","segbeats","segbeats_task3","segtree","skew_heap","snippetter","sparse_table","splay_tree","suffix_array","swag","tree_fold","trial","trie","two_sat","uf_checklist","union_find","veb","vec_lines","wavelet_matrix","z_algo","zeta"]; \ No newline at end of file diff --git a/dependencies.js b/dependencies.js index cb670980..f73c6a48 100644 --- a/dependencies.js +++ b/dependencies.js @@ -1 +1 @@ -dependencies = {"bsgs":{"dependencies":[],"tags":[]},"union_find":{"dependencies":[],"tags":[]},"veb":{"dependencies":[],"tags":[]},"newton":{"dependencies":[],"tags":[]},"two_sat":{"dependencies":["scc"],"tags":[]},"segtree":{"dependencies":[],"tags":[]},"wavelet_matrix":{"dependencies":[],"tags":[]},"uf_checklist":{"dependencies":["union_find"],"tags":[]},"io":{"dependencies":[],"tags":[]},"cipolla":{"dependencies":[],"tags":[]},"zeta":{"dependencies":[],"tags":[]},"rbtree":{"dependencies":[],"tags":[]},"radix_heap":{"dependencies":[],"tags":[]},"accum":{"dependencies":[],"tags":[]},"lg":{"dependencies":[],"tags":[]},"hopkarp":{"dependencies":[],"tags":[]},"lagrange":{"dependencies":["fp"],"tags":[]},"slicemore":{"dependencies":[],"tags":[]},"low_link":{"dependencies":[],"tags":[]},"sort_tree":{"dependencies":[],"tags":[]},"interval_heap":{"dependencies":[],"tags":[]},"fp":{"dependencies":[],"tags":[]},"dijkstra_radix_heap":{"dependencies":["radix_heap"],"tags":[]},"suffix_array":{"dependencies":[],"tags":[]},"lazy_segtree":{"dependencies":[],"tags":[]},"trial":{"dependencies":[],"tags":[]},"open":{"dependencies":[],"tags":[]},"avl_tree":{"dependencies":[],"tags":[]},"gco":{"dependencies":["dinic"],"tags":[]},"hld":{"dependencies":[],"tags":[]},"gss":{"dependencies":[],"tags":[]},"cmpmore":{"dependencies":[],"tags":[]},"elim":{"dependencies":[],"tags":[]},"bfs":{"dependencies":[],"tags":[]},"partially_persistent_union_find":{"dependencies":[],"tags":[]},"dinic":{"dependencies":[],"tags":[]},"bitvec":{"dependencies":[],"tags":[]},"rb":{"dependencies":[],"tags":[]},"gridnei":{"dependencies":[],"tags":[]},"hungarian":{"dependencies":[],"tags":[]},"erato":{"dependencies":[],"tags":[]},"dfs":{"dependencies":[],"tags":[]},"fps":{"dependencies":["fp"],"tags":[]},"randtools":{"dependencies":[],"tags":[]},"suffix_sum":{"dependencies":[],"tags":[]},"vec_lines":{"dependencies":[],"tags":[]},"cht":{"dependencies":[],"tags":[]},"naive_poly":{"dependencies":[],"tags":[]},"bitutils":{"dependencies":[],"tags":[]},"segbeats":{"dependencies":["open"],"tags":[]},"segbeats_task3":{"dependencies":["open"],"tags":[]},"dual_segtree":{"dependencies":[],"tags":[]},"tree_fold":{"dependencies":[],"tags":[]},"convex_hull":{"dependencies":[],"tags":[]},"next_permutation":{"dependencies":[],"tags":[]},"numeric_search":{"dependencies":[],"tags":[]},"lin_ineq":{"dependencies":[],"tags":[]},"heap_tricks":{"dependencies":[],"tags":[]},"scc":{"dependencies":[],"tags":[]},"bfs01":{"dependencies":[],"tags":[]},"lazy_segbeats":{"dependencies":["open"],"tags":[]},"trie":{"dependencies":[],"tags":[]},"skew-heap":{"dependencies":[],"tags":[]},"heap_slope_trick":{"dependencies":[],"tags":[]},"make_graph":{"dependencies":[],"tags":[]},"sparse_table":{"dependencies":[],"tags":[]},"monotone_minima":{"dependencies":[],"tags":[]},"euclid":{"dependencies":[],"tags":[]},"swag":{"dependencies":[],"tags":[]},"binary":{"dependencies":[],"tags":[]},"mincost_flow":{"dependencies":[],"tags":[]},"advance":{"dependencies":[],"tags":[]},"rational":{"dependencies":[],"tags":[]},"manacher":{"dependencies":[],"tags":[]},"z_algo":{"dependencies":[],"tags":[]},"splay_tree":{"dependencies":[],"tags":[]},"link_cut_tree":{"dependencies":[],"tags":[]}} \ No newline at end of file +dependencies = {"skew-heap":{"dependencies":[],"tags":[]},"cht":{"dependencies":[],"tags":[]},"accum":{"dependencies":[],"tags":[]},"lin_ineq":{"dependencies":[],"tags":[]},"euclid":{"dependencies":[],"tags":[]},"bitvec":{"dependencies":[],"tags":[]},"gco":{"dependencies":["dinic"],"tags":[]},"monotone_minima":{"dependencies":[],"tags":[]},"mincost_flow":{"dependencies":[],"tags":[]},"union_find":{"dependencies":[],"tags":[]},"bfs01":{"dependencies":[],"tags":[]},"manacher":{"dependencies":[],"tags":[]},"cipolla":{"dependencies":[],"tags":[]},"gss":{"dependencies":[],"tags":[]},"io":{"dependencies":[],"tags":[]},"convex_hull":{"dependencies":[],"tags":[]},"heap_slope_trick":{"dependencies":[],"tags":[]},"randtools":{"dependencies":[],"tags":[]},"segbeats_task3":{"dependencies":[],"tags":[]},"numeric_search":{"dependencies":[],"tags":[]},"erato":{"dependencies":[],"tags":[]},"segbeats":{"dependencies":[],"tags":[]},"two_sat":{"dependencies":["scc"],"tags":[]},"partially_persistent_union_find":{"dependencies":[],"tags":[]},"trie":{"dependencies":[],"tags":[]},"hopkarp":{"dependencies":[],"tags":[]},"lagrange":{"dependencies":["fp"],"tags":[]},"lazy_segbeats":{"dependencies":[],"tags":[]},"veb":{"dependencies":[],"tags":[]},"dual_segtree":{"dependencies":[],"tags":[]},"riff":{"dependencies":[],"tags":[]},"lg":{"dependencies":[],"tags":[]},"uf_checklist":{"dependencies":["union_find"],"tags":[]},"hld":{"dependencies":[],"tags":[]},"naive_poly":{"dependencies":[],"tags":[]},"rational":{"dependencies":[],"tags":[]},"heap_tricks":{"dependencies":[],"tags":[]},"newton":{"dependencies":[],"tags":[]},"dinic":{"dependencies":[],"tags":[]},"dijkstra_radix_heap":{"dependencies":["radix_heap"],"tags":[]},"lazy_segtree":{"dependencies":[],"tags":[]},"tree_fold":{"dependencies":[],"tags":[]},"wavelet_matrix":{"dependencies":[],"tags":[]},"suffix_array":{"dependencies":[],"tags":[]},"bsgs":{"dependencies":[],"tags":[]},"scc":{"dependencies":[],"tags":[]},"rb":{"dependencies":[],"tags":[]},"fp":{"dependencies":[],"tags":[]},"radix_heap":{"dependencies":[],"tags":[]},"bfs":{"dependencies":[],"tags":[]},"binary":{"dependencies":[],"tags":[]},"low_link":{"dependencies":[],"tags":[]},"splay_tree":{"dependencies":[],"tags":[]},"elim":{"dependencies":[],"tags":[]},"dfs":{"dependencies":[],"tags":[]},"hungarian":{"dependencies":[],"tags":[]},"next_permutation":{"dependencies":[],"tags":[]},"z_algo":{"dependencies":[],"tags":[]},"swag":{"dependencies":[],"tags":[]},"zeta":{"dependencies":[],"tags":[]},"trial":{"dependencies":[],"tags":[]},"vec_lines":{"dependencies":[],"tags":[]},"segtree":{"dependencies":[],"tags":[]},"link_cut_tree":{"dependencies":[],"tags":[]},"rbtree":{"dependencies":[],"tags":[]},"fps":{"dependencies":["fp"],"tags":[]},"make_graph":{"dependencies":[],"tags":[]},"sparse_table":{"dependencies":[],"tags":[]},"interval_heap":{"dependencies":[],"tags":[]},"avl_tree":{"dependencies":[],"tags":[]}} \ No newline at end of file diff --git a/dfs/all.html b/dfs/all.html index c88157a0..26ee14e2 100644 --- a/dfs/all.html +++ b/dfs/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Functions

\ No newline at end of file +

List of all items

Functions

\ No newline at end of file diff --git a/dfs/fn.calc_reachability.html b/dfs/fn.calc_reachability.html index b421051c..d2eb6aee 100644 --- a/dfs/fn.calc_reachability.html +++ b/dfs/fn.calc_reachability.html @@ -1,4 +1,4 @@ -calc_reachability in dfs - Rustcalc_reachability in dfs - Rust
-

Function dfs::calc_reachability

source ·
pub fn calc_reachability(s: usize, g: &[Vec<usize>]) -> Vec<bool>
Expand description

一点からの到達可能性配列を返します。

+

Function dfs::calc_reachability

source ·
pub fn calc_reachability(s: usize, g: &[Vec<usize>]) -> Vec<bool>
Expand description

一点からの到達可能性配列を返します。

\ No newline at end of file diff --git a/dfs/index.html b/dfs/index.html index 9538d3e2..20d49dfd 100644 --- a/dfs/index.html +++ b/dfs/index.html @@ -1,4 +1,4 @@ -dfs - Rustdfs - Rust
-

Crate dfs

source ·

Functions§

\ No newline at end of file +

Crate dfs

source ·

Functions

\ No newline at end of file diff --git a/dijkstra_radix_heap/all.html b/dijkstra_radix_heap/all.html index c5582280..17d59279 100644 --- a/dijkstra_radix_heap/all.html +++ b/dijkstra_radix_heap/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Functions

\ No newline at end of file +

List of all items

Functions

\ No newline at end of file diff --git a/dijkstra_radix_heap/fn.calc_dist.html b/dijkstra_radix_heap/fn.calc_dist.html index 76b5611b..4e5d4c26 100644 --- a/dijkstra_radix_heap/fn.calc_dist.html +++ b/dijkstra_radix_heap/fn.calc_dist.html @@ -1,4 +1,4 @@ -calc_dist in dijkstra_radix_heap - Rustcalc_dist in dijkstra_radix_heap - Rust
-

Function dijkstra_radix_heap::calc_dist

source ·
pub fn calc_dist(s: usize, g: &[Vec<(usize, u32)>]) -> Vec<u32>
👎Deprecated
Expand description

一点からの距離配列を作ります。

+
pub fn calc_dist(s: usize, g: &[Vec<(usize, u32)>]) -> Vec<u32>
👎Deprecated
Expand description

一点からの距離配列を作ります。

\ No newline at end of file diff --git a/dijkstra_radix_heap/fn.calc_dist_restore.html b/dijkstra_radix_heap/fn.calc_dist_restore.html index 43020ee4..fc00df6a 100644 --- a/dijkstra_radix_heap/fn.calc_dist_restore.html +++ b/dijkstra_radix_heap/fn.calc_dist_restore.html @@ -1,4 +1,4 @@ -calc_dist_restore in dijkstra_radix_heap - Rustcalc_dist_restore in dijkstra_radix_heap - Rust
-

Function dijkstra_radix_heap::calc_dist_restore

source ·
pub fn calc_dist_restore(
-    s: usize,
-    g: &[Vec<(usize, u32)>],
-) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列を作ります。

+
pub fn calc_dist_restore(
+    s: usize,
+    g: &[Vec<(usize, u32)>]
+) -> (Vec<u32>, Vec<usize>)
Expand description

一点からの距離配列を作ります。

\ No newline at end of file diff --git a/dijkstra_radix_heap/index.html b/dijkstra_radix_heap/index.html index b847907d..9060b772 100644 --- a/dijkstra_radix_heap/index.html +++ b/dijkstra_radix_heap/index.html @@ -1,4 +1,4 @@ -dijkstra_radix_heap - Rustdijkstra_radix_heap - Rust
-

Crate dijkstra_radix_heap

source ·
Expand description

CAUTION: RadixHeap fails in testst!

-

Functions§

\ No newline at end of file +
Expand description

CAUTION: RadixHeap fails in testst!

+

Functions

\ No newline at end of file diff --git a/dinic/all.html b/dinic/all.html index 27abe1c3..d8fbcdce 100644 --- a/dinic/all.html +++ b/dinic/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

Traits

\ No newline at end of file +

List of all items

Structs

Traits

\ No newline at end of file diff --git a/dinic/index.html b/dinic/index.html index 7e944ba7..8cb051ae 100644 --- a/dinic/index.html +++ b/dinic/index.html @@ -1,4 +1,4 @@ -dinic - Rustdinic - Rust
-

Crate dinic

source ·
Expand description

Solves maximum flow problem.

-

§Basic usage

+

Crate dinic

source ·
Expand description

Solves maximum flow problem.

+

Basic usage

  1. First, initialize Dinic with the number of vertices.
  2. Insert edges with a method add_edge.
  3. @@ -49,7 +49,7 @@

    §Basic usage let flow = dinic.flow(0, 2); assert_eq!(flow, 30);

-

§Restore the minimum cut

+

Restore the minimum cut

If flow has called exactly once before, min_cut will return the minimum cut. See the API document to detailed specs.

@@ -62,7 +62,7 @@

0, 2); assert_eq!(dinic.min_cut(0).as_slice(), &[true, false, false]);

-

§Get the state of an edge or a vertex

+

Get the state of an edge or a vertex

You can query the state of an edge via get_edge. An EdgeKey object returned by add_edge is necessary to query it.

@@ -146,7 +146,7 @@

0, 1); dinic.get_excess(); // panics

-

§Call flow more than once

+

Call flow more than once

You can call flow more than once. flow(s, t) will augment the flow from s to t as much as possible. If flow is called with different s or t from the previous ones, it may yield non-zero excess at more than two points.

@@ -162,9 +162,9 @@

let aug = dinic.flow(1, 2); assert_eq!(aug, 5); assert_eq!(dinic.get_excess().as_slice(), &[-30, -5, 35]);

-

§Change the capacity or the amount of flow. (dangerous operation)

+

Change the capacity or the amount of flow. (dangerous operation)

change_edge changes the capacity and the amount of flow of an edge. While it is so dangerous operation (safe variant wanted!), it is sometimes useful, for example, when solve a maximum flow problem with lower limit. See the API document for detailed specs.

-

Structs§

  • A struct to execute Dinic’s algorithm.
  • A summary of the state of an edge, which is returned by Dinic::get_edge.
  • A key object to query an edge.

Traits§

  • An adapter trait of the capacity.
\ No newline at end of file +

Structs

  • A struct to execute Dinic’s algorithm.
  • A summary of the state of an edge, which is returned by Dinic::get_edge.
  • A key object to query an edge.

Traits

  • An adapter trait of the capacity.
\ No newline at end of file diff --git a/dinic/struct.Dinic.html b/dinic/struct.Dinic.html index eab25fe4..97a2d499 100644 --- a/dinic/struct.Dinic.html +++ b/dinic/struct.Dinic.html @@ -1,4 +1,4 @@ -Dinic in dinic - RustDinic in dinic - Rust
-

Struct dinic::Dinic

source ·
pub struct Dinic<T> { /* private fields */ }
Expand description

A struct to execute Dinic’s algorithm.

+

Struct dinic::Dinic

source ·
pub struct Dinic<T> { /* private fields */ }
Expand description

A struct to execute Dinic’s algorithm.

See the module level documentation.

-

Implementations§

source§

impl<T> Dinic<T>
where - T: Value,

source

pub fn new(n: usize) -> Self

Creates a new instance of Dinic

-
§Examples
+

Implementations§

source§

impl<T> Dinic<T>where + T: Value,

source

pub fn new(n: usize) -> Self

Creates a new instance of Dinic

+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::<u32>::new(3);
@@ -46,15 +46,15 @@ 
§Examples
let flow = dinic.flow(0, 2); assert_eq!(flow, 30);
-
source

pub fn add_edge(&mut self, from: usize, to: usize, cap: T) -> EdgeKey

Inserts a new edge to the network.

-
§Constraints
+
source

pub fn add_edge(&mut self, from: usize, to: usize, cap: T) -> EdgeKey

Inserts a new edge to the network.

+
Constraints
  • from, to < n
  • T::zero() <= cap
-
§Complexity
+
Complexity

O ( 1 ) amortized.

-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -64,20 +64,20 @@ 
§Examples
let flow = dinic.flow(0, 2); assert_eq!(flow, 30);
-
source

pub fn flow(&mut self, s: usize, t: usize) -> T

Auguments the flow from s to t as much as possible. It returns the amount of the +

source

pub fn flow(&mut self, s: usize, t: usize) -> T

Auguments the flow from s to t as much as possible. It returns the amount of the flow augmented.

You may call it multiple times. See the module level documentation.

-
§Constraints
+
Constraints
  • s != t,
  • The answer should be in T.
-
§Complexity
+
Complexity
  • O ( min ( n^{2/3} m, m^{3/2} ) ) if all the capacities are 1
  • O ( n^2 m )
-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -87,20 +87,20 @@ 
§Examples
let flow = dinic.flow(0, 2); assert_eq!(flow, 30);
-
source

pub fn flow_with_limit(&mut self, s: usize, t: usize, flow_with_limit: T) -> T

Auguments the flow from s to t as much as possible as long as not exceeding +

source

pub fn flow_with_limit(&mut self, s: usize, t: usize, flow_with_limit: T) -> T

Auguments the flow from s to t as much as possible as long as not exceeding flow_limit. It returns the amount of the flow augmented.

You may call it multiple times. See the module level documentation.

-
§Constraints
+
Constraints
  • s != t,
  • The answer should be in T.
-
§Complexity
+
Complexity
  • O ( min ( n^{2/3} m, m^{3/2} ) ) if all the capacities are 1
  • O ( n^2 m )
-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -110,10 +110,10 @@ 
§Examples
let flow = dinic.flow_with_limit(0, 2, 28); assert_eq!(flow, 28);
-
source

pub fn min_cut(&self, s: usize) -> Vec<bool>

Returns a vector of length n, such that the i-th element is true if and only if there +

source

pub fn min_cut(&self, s: usize) -> Vec<bool>

Returns a vector of length n, such that the i-th element is true if and only if there is a directed path from s to i in the residual network. The returned vector correponds to a s -- t minimum cut after calling self.flow(s, t) exactly once.

-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -123,10 +123,10 @@ 
§Examples
dinic.flow(0, 2); assert_eq!(dinic.min_cut(0).as_slice(), &[true, false, false]);
-
source

pub fn get_edge(&self, edge_key: EdgeKey) -> Edge<T>

Returns the current internal state of the edges.

-
§Complexity
+
source

pub fn get_edge(&self, edge_key: EdgeKey) -> Edge<T>

Returns the current internal state of the edges.

+
Complexity

O ( 1 )

-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -140,11 +140,11 @@ 
§Examples
assert_eq!(dinic.get_edge(edge_1).flow, 10); assert_eq!(dinic.get_edge(edge_2).flow, 20); assert_eq!(flow, 30);
-
source

pub fn get_edges(&self) -> Vec<Edge<T>>

Collects all the edges.

+
source

pub fn get_edges(&self) -> Vec<Edge<T>>

Collects all the edges.

Edges are sorted in order of addition.

-
§Complexity
+
Complexity

O ( m )

-
§Examples
+
Examples
use dinic::Dinic;
 use dinic::Edge;
 
@@ -173,11 +173,11 @@ 
§Examples
cap: 20, flow: 20 });
-
source

pub fn get_network(&self) -> Vec<Vec<Edge<T>>>

Collects all the edges and arrange it in adjacent-list style.

+
source

pub fn get_network(&self) -> Vec<Vec<Edge<T>>>

Collects all the edges and arrange it in adjacent-list style.

In each row, edges are sorted in order of addition.

-
§Complexity
+
Complexity

O ( n + m )

-
§Examples
+
Examples
use dinic::Dinic;
 use dinic::Edge;
 
@@ -206,11 +206,11 @@ 
§Examples
cap: 15, flow: 10 });
-
source

pub fn get_excess(&self) -> Vec<T>

Returens the Vec of excess of all the vertices.

+
source

pub fn get_excess(&self) -> Vec<T>

Returens the Vec of excess of all the vertices.

i-th entry is the excess of vertex i.

-
§Complexity
+
Complexity

O ( n + m )

-
§Examples
+
Examples
use dinic::Dinic;
 
 let mut dinic = Dinic::new(3);
@@ -221,19 +221,19 @@ 
§Examples
let excess = dinic.get_excess(); assert_eq!(excess.as_slice(), &[-30, 0, 30]);
-
source

pub fn change_edge(&mut self, edge_key: EdgeKey, new_cap: T, new_flow: T)

Changes the capacity and the amount of the edge corresponding to edge_key to new_cap and +

source

pub fn change_edge(&mut self, edge_key: EdgeKey, new_cap: T, new_flow: T)

Changes the capacity and the amount of the edge corresponding to edge_key to new_cap and new_flow, respectively. It does not change the capacity or the flow amount of other edges. See the module level documentation.

-
§Constraints
+
Constraints
  • T::zero() <= new_flow <= new_cap
-
§Complexity
+
Complexity

O ( 1 )

-
§Examples
+
Examples

Let us consider a bipartite matching problem on the graph K _ 2. Obviously this graph has a perfect matching.

-
o--o
+
o--o
  \/
  /\
 o--o
@@ -270,22 +270,22 @@ 
§Examples
let augment = dinic.flow(0, 5); assert_eq!(augment, 1); // and augmented by `1` and became `2`.
-

Trait Implementations§

source§

impl<T: Clone> Clone for Dinic<T>

source§

fn clone(&self) -> Dinic<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Value> Debug for Dinic<T>

source§

fn fmt(&self, w: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: PartialEq> PartialEq for Dinic<T>

source§

fn eq(&self, other: &Dinic<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T> StructuralPartialEq for Dinic<T>

Auto Trait Implementations§

§

impl<T> Freeze for Dinic<T>

§

impl<T> RefUnwindSafe for Dinic<T>
where - T: RefUnwindSafe,

§

impl<T> Send for Dinic<T>
where - T: Send,

§

impl<T> Sync for Dinic<T>
where - T: Sync,

§

impl<T> Unpin for Dinic<T>
where - T: Unpin,

§

impl<T> UnwindSafe for Dinic<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<T: Clone> Clone for Dinic<T>

source§

fn clone(&self) -> Dinic<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Value> Debug for Dinic<T>

source§

fn fmt(&self, w: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: PartialEq> PartialEq<Dinic<T>> for Dinic<T>

source§

fn eq(&self, other: &Dinic<T>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<T> StructuralPartialEq for Dinic<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Dinic<T>where + T: RefUnwindSafe,

§

impl<T> Send for Dinic<T>where + T: Send,

§

impl<T> Sync for Dinic<T>where + T: Sync,

§

impl<T> Unpin for Dinic<T>where + T: Unpin,

§

impl<T> UnwindSafe for Dinic<T>where + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/dinic/struct.Edge.html b/dinic/struct.Edge.html index 6bf3a68d..9465f28a 100644 --- a/dinic/struct.Edge.html +++ b/dinic/struct.Edge.html @@ -1,4 +1,4 @@ -Edge in dinic - RustEdge in dinic - Rust
-

Struct dinic::Edge

source ·
pub struct Edge<T> {
-    pub from: usize,
-    pub to: usize,
+

Struct dinic::Edge

source ·
pub struct Edge<T> {
+    pub from: usize,
+    pub to: usize,
     pub cap: T,
     pub flow: T,
 }
Expand description

A summary of the state of an edge, which is returned by Dinic::get_edge.

-

Fields§

§from: usize

The vertex-index of the source of an edge.

-
§to: usize

The vertex-index of the target of an edge.

-
§cap: T

The capacity of an edge.

-
§flow: T

The value of the flow of the network at this edge.

-

Trait Implementations§

source§

impl<T: Clone> Clone for Edge<T>

source§

fn clone(&self) -> Edge<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Edge<T>

source§

fn fmt(&self, w: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: PartialEq> PartialEq for Edge<T>

source§

fn eq(&self, other: &Edge<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<T: Copy> Copy for Edge<T>

source§

impl<T: Eq> Eq for Edge<T>

source§

impl<T> StructuralPartialEq for Edge<T>

Auto Trait Implementations§

§

impl<T> Freeze for Edge<T>
where - T: Freeze,

§

impl<T> RefUnwindSafe for Edge<T>
where - T: RefUnwindSafe,

§

impl<T> Send for Edge<T>
where - T: Send,

§

impl<T> Sync for Edge<T>
where - T: Sync,

§

impl<T> Unpin for Edge<T>
where - T: Unpin,

§

impl<T> UnwindSafe for Edge<T>
where - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Fields§

§from: usize

The vertex-index of the source of an edge.

+
§to: usize

The vertex-index of the target of an edge.

+
§cap: T

The capacity of an edge.

+
§flow: T

The value of the flow of the network at this edge.

+

Trait Implementations§

source§

impl<T: Clone> Clone for Edge<T>

source§

fn clone(&self) -> Edge<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Edge<T>

source§

fn fmt(&self, w: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: PartialEq> PartialEq<Edge<T>> for Edge<T>

source§

fn eq(&self, other: &Edge<T>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<T: Copy> Copy for Edge<T>

source§

impl<T: Eq> Eq for Edge<T>

source§

impl<T> StructuralEq for Edge<T>

source§

impl<T> StructuralPartialEq for Edge<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Edge<T>where + T: RefUnwindSafe,

§

impl<T> Send for Edge<T>where + T: Send,

§

impl<T> Sync for Edge<T>where + T: Sync,

§

impl<T> Unpin for Edge<T>where + T: Unpin,

§

impl<T> UnwindSafe for Edge<T>where + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/dinic/struct.EdgeKey.html b/dinic/struct.EdgeKey.html index e3c45bed..362776c5 100644 --- a/dinic/struct.EdgeKey.html +++ b/dinic/struct.EdgeKey.html @@ -1,4 +1,4 @@ -EdgeKey in dinic - RustEdgeKey in dinic - Rust
-

Struct dinic::EdgeKey

source ·
pub struct EdgeKey(/* private fields */);
Expand description

A key object to query an edge.

+

Struct dinic::EdgeKey

source ·
pub struct EdgeKey(_);
Expand description

A key object to query an edge.

Factually, this is a simple wrapper of usize. This is returned by Dinic::add_edge and be used in Dinic::get_edge

-

Trait Implementations§

source§

impl Clone for EdgeKey

source§

fn clone(&self) -> EdgeKey

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EdgeKey

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for EdgeKey

source§

fn eq(&self, other: &EdgeKey) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Copy for EdgeKey

source§

impl Eq for EdgeKey

source§

impl StructuralPartialEq for EdgeKey

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for EdgeKey

source§

fn clone(&self) -> EdgeKey

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EdgeKey

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<EdgeKey> for EdgeKey

source§

fn eq(&self, other: &EdgeKey) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Copy for EdgeKey

source§

impl Eq for EdgeKey

source§

impl StructuralEq for EdgeKey

source§

impl StructuralPartialEq for EdgeKey

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/dinic/trait.Value.html b/dinic/trait.Value.html index 87f634a1..a264c2c8 100644 --- a/dinic/trait.Value.html +++ b/dinic/trait.Value.html @@ -1,4 +1,4 @@ -Value in dinic - RustValue in dinic - Rust
-

Trait dinic::Value

source ·
pub trait Value:
-    Copy
-    + Ord
-    + Debug
-    + Add<Output = Self>
-    + AddAssign
-    + Sub<Output = Self>
-    + SubAssign
-    + Sum {
+

Trait dinic::Value

source ·
pub trait Value: Copy + Ord + Debug + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Sum {
     // Required methods
     fn zero() -> Self;
     fn infinity() -> Self;
 }
Expand description

An adapter trait of the capacity.

This trait is implemented for all the integer types.

-

Required Methods§

source

fn zero() -> Self

Returns the zero.

-
source

fn infinity() -> Self

Returns the max value of Self.

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Value for i8

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i16

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i32

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i64

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i128

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for isize

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u8

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u16

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u32

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u64

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u128

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for usize

source§

fn zero() -> Self

source§

fn infinity() -> Self

Implementors§

\ No newline at end of file +

Required Methods§

source

fn zero() -> Self

Returns the zero.

+
source

fn infinity() -> Self

Returns the max value of Self.

+

Implementations on Foreign Types§

source§

impl Value for u64

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u8

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i64

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i8

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i128

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for isize

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for usize

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u16

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i32

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u128

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for u32

source§

fn zero() -> Self

source§

fn infinity() -> Self

source§

impl Value for i16

source§

fn zero() -> Self

source§

fn infinity() -> Self

Implementors§

\ No newline at end of file diff --git a/dual_segtree/all.html b/dual_segtree/all.html index 58155603..23ac9cf8 100644 --- a/dual_segtree/all.html +++ b/dual_segtree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

Traits

\ No newline at end of file +

List of all items

Structs

Traits

\ No newline at end of file diff --git a/dual_segtree/index.html b/dual_segtree/index.html index 8a575bf6..05503444 100644 --- a/dual_segtree/index.html +++ b/dual_segtree/index.html @@ -1,4 +1,4 @@ -dual_segtree - Rustdual_segtree - Rust
-

Crate dual_segtree

source ·
Expand description

双対セグメント木(右作用)

+

Crate dual_segtree

source ·
Expand description

双対セグメント木(右作用)

作用の方向迷うのですが、右作用にしました。

-

§Examples

+

Examples

// 演算定義(historical minimum)
 enum O {}
 impl Ops for O {
@@ -58,4 +58,4 @@ 

§Examples

assert_eq!(seg.collect_vec(), vec![[-2, -2], [0, 0]]); seg.apply(0..1, &[0, 3]); // +3 assert_eq!(seg.collect_vec(), vec![[-2, 1], [0, 0]]);
-

Structs§

Traits§

  • 演算(右作用)
\ No newline at end of file +

Structs

Traits

  • 演算(右作用)
\ No newline at end of file diff --git a/dual_segtree/struct.DualSegtree.html b/dual_segtree/struct.DualSegtree.html index c647d112..020788a9 100644 --- a/dual_segtree/struct.DualSegtree.html +++ b/dual_segtree/struct.DualSegtree.html @@ -1,4 +1,4 @@ -DualSegtree in dual_segtree - RustDualSegtree in dual_segtree - Rust
-

Struct dual_segtree::DualSegtree

source ·
pub struct DualSegtree<O: Ops> { /* private fields */ }
Expand description

双対セグメント木(右作用)

-

Implementations§

source§

impl<O: Ops> DualSegtree<O>

source

pub fn new<T: IntoIterator<IntoIter = I, Item = O::Value>, I: ExactSizeIterator<Item = O::Value>>( - iter: T, -) -> Self

ExactSizeIterator から作ります。

-
source

pub fn is_empty(&self) -> bool

空なら true を返します。

-
source

pub fn len(&self) -> usize

管理している配列の長さを返します。

-
source

pub fn apply(&mut self, range: impl RangeBounds<usize>, x: &O::Value)

rangex を作用させます。(右作用)

-
source

pub fn get_mut(&mut self, i: usize) -> &mut O::Value

i 番目の要素への可変参照を返します。

-
source

pub fn get(&mut self, i: usize) -> &O::Value

i 番目の要素への参照を返します。

-
source

pub fn get_copied(&mut self, i: usize) -> O::Value
where - O::Value: Copy,

i 番目の要素をコピーして返します。

-
source

pub fn get_cloned(&mut self, i: usize) -> O::Value
where - O::Value: Clone,

i 番目の要素をクローンして返します。

-
source

pub fn collect_vec(&mut self) -> Vec<O::Value>

Vec に変換します。

-
source

pub fn into_vec(self) -> Vec<O::Value>

Vec に変換します。

-

Trait Implementations§

source§

impl<O: Clone + Ops> Clone for DualSegtree<O>
where - O::Value: Clone,

source§

fn clone(&self) -> DualSegtree<O>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<O: Ops> Debug for DualSegtree<O>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<O: Default + Ops> Default for DualSegtree<O>
where - O::Value: Default,

source§

fn default() -> DualSegtree<O>

Returns the “default value” for a type. Read more
source§

impl<O: Ops> From<Vec<<O as Ops>::Value>> for DualSegtree<O>

source§

fn from(v: Vec<O::Value>) -> Self

Converts to this type from the input type.
source§

impl<O: Ops> FromIterator<<O as Ops>::Value> for DualSegtree<O>

source§

fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

Creates a value from an iterator. Read more
source§

impl<O: PartialEq + Ops> PartialEq for DualSegtree<O>
where - O::Value: PartialEq,

source§

fn eq(&self, other: &DualSegtree<O>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<O: Ops> StructuralPartialEq for DualSegtree<O>

Auto Trait Implementations§

§

impl<O> Freeze for DualSegtree<O>

§

impl<O> RefUnwindSafe for DualSegtree<O>
where - <O as Ops>::Value: RefUnwindSafe,

§

impl<O> Send for DualSegtree<O>
where - <O as Ops>::Value: Send,

§

impl<O> Sync for DualSegtree<O>
where - <O as Ops>::Value: Sync,

§

impl<O> Unpin for DualSegtree<O>
where - <O as Ops>::Value: Unpin,

§

impl<O> UnwindSafe for DualSegtree<O>
where - <O as Ops>::Value: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
pub struct DualSegtree<O: Ops> { /* private fields */ }
Expand description

双対セグメント木(右作用)

+

Implementations§

source§

impl<O: Ops> DualSegtree<O>

source

pub fn new<T: IntoIterator<IntoIter = I, Item = O::Value>, I: ExactSizeIterator<Item = O::Value>>( + iter: T +) -> Self

ExactSizeIterator から作ります。

+
source

pub fn is_empty(&self) -> bool

空なら true を返します。

+
source

pub fn len(&self) -> usize

管理している配列の長さを返します。

+
source

pub fn apply(&mut self, range: impl RangeBounds<usize>, x: &O::Value)

rangex を作用させます。(右作用)

+
source

pub fn get_mut(&mut self, i: usize) -> &mut O::Value

i 番目の要素への可変参照を返します。

+
source

pub fn get(&mut self, i: usize) -> &O::Value

i 番目の要素への参照を返します。

+
source

pub fn get_copied(&mut self, i: usize) -> O::Valuewhere + O::Value: Copy,

i 番目の要素をコピーして返します。

+
source

pub fn get_cloned(&mut self, i: usize) -> O::Valuewhere + O::Value: Clone,

i 番目の要素をクローンして返します。

+
source

pub fn collect_vec(&mut self) -> Vec<O::Value>

Vec に変換します。

+
source

pub fn into_vec(self) -> Vec<O::Value>

Vec に変換します。

+

Trait Implementations§

source§

impl<O: Clone + Ops> Clone for DualSegtree<O>where + O::Value: Clone,

source§

fn clone(&self) -> DualSegtree<O>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<O: Ops> Debug for DualSegtree<O>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<O: Default + Ops> Default for DualSegtree<O>where + O::Value: Default,

source§

fn default() -> DualSegtree<O>

Returns the “default value” for a type. Read more
source§

impl<O: Ops> From<Vec<<O as Ops>::Value, Global>> for DualSegtree<O>

source§

fn from(v: Vec<O::Value>) -> Self

Converts to this type from the input type.
source§

impl<O: Ops> FromIterator<<O as Ops>::Value> for DualSegtree<O>

source§

fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

Creates a value from an iterator. Read more
source§

impl<O: PartialEq + Ops> PartialEq<DualSegtree<O>> for DualSegtree<O>where + O::Value: PartialEq,

source§

fn eq(&self, other: &DualSegtree<O>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<O: Ops> StructuralPartialEq for DualSegtree<O>

Auto Trait Implementations§

§

impl<O> RefUnwindSafe for DualSegtree<O>where + <O as Ops>::Value: RefUnwindSafe,

§

impl<O> Send for DualSegtree<O>where + <O as Ops>::Value: Send,

§

impl<O> Sync for DualSegtree<O>where + <O as Ops>::Value: Sync,

§

impl<O> Unpin for DualSegtree<O>where + <O as Ops>::Value: Unpin,

§

impl<O> UnwindSafe for DualSegtree<O>where + <O as Ops>::Value: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/dual_segtree/trait.Ops.html b/dual_segtree/trait.Ops.html index 15027beb..78a769f7 100644 --- a/dual_segtree/trait.Ops.html +++ b/dual_segtree/trait.Ops.html @@ -1,4 +1,4 @@ -Ops in dual_segtree - RustOps in dual_segtree - Rust
-

Trait dual_segtree::Ops

source ·
pub trait Ops {
-    type Value: Clone + Debug;
+

Trait dual_segtree::Ops

source ·
pub trait Ops {
+    type Value: Clone + Debug;
 
     // Required methods
     fn op(lhs: Self::Value, rhs: Self::Value) -> Self::Value;
@@ -42,8 +42,8 @@
     // Provided method
     fn op_assign_from_right(lhs: &mut Self::Value, rhs: Self::Value) { ... }
 }
Expand description

演算(右作用)

-

Required Associated Types§

source

type Value: Clone + Debug

値型

-

Required Methods§

source

fn op(lhs: Self::Value, rhs: Self::Value) -> Self::Value

作用する演算(右作用)

-
source

fn identity() -> Self::Value

op の単位元

-

Provided Methods§

source

fn op_assign_from_right(lhs: &mut Self::Value, rhs: Self::Value)

lhsop(lhs, rhs) で置き換えます。

-

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file +

Required Associated Types§

source

type Value: Clone + Debug

値型

+

Required Methods§

source

fn op(lhs: Self::Value, rhs: Self::Value) -> Self::Value

作用する演算(右作用)

+
source

fn identity() -> Self::Value

op の単位元

+

Provided Methods§

source

fn op_assign_from_right(lhs: &mut Self::Value, rhs: Self::Value)

lhsop(lhs, rhs) で置き換えます。

+

Implementors§

\ No newline at end of file diff --git a/elim/all.html b/elim/all.html index 232954b8..a150818f 100644 --- a/elim/all.html +++ b/elim/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Functions

\ No newline at end of file +

List of all items

Functions

\ No newline at end of file diff --git a/elim/fn.column_reduce.html b/elim/fn.column_reduce.html index 505454b4..512dda43 100644 --- a/elim/fn.column_reduce.html +++ b/elim/fn.column_reduce.html @@ -1,4 +1,4 @@ -column_reduce in elim - Rustcolumn_reduce in elim - Rust
-

Function elim::column_reduce

source ·
pub fn column_reduce(a: &mut [Vec<bool>]) -> usize
Expand description

列基本変形により掃き出し法を行い、ランクを返します。

-

§出力の要件

+

Function elim::column_reduce

source ·
pub fn column_reduce(a: &mut [Vec<bool>]) -> usize
Expand description

列基本変形により掃き出し法を行い、ランクを返します。

+

出力の要件

  • 行列 a は列基本形になります。
  • 列ベクトルの張る空間が不変です。
-

§列基本形とは(1-based indexed でご説明です。)

+

列基本形とは(1-based indexed でご説明です。)

ランクを r として、行番号の狭義単調増加列 1 ≤ p _ 1 < … < p _ r ≤ h であって、 各 j = 1, … w に対し、

source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.PrimeFactorsByLookup.html b/erato/struct.PrimeFactorsByLookup.html index 6f910f60..5d144cf2 100644 --- a/erato/struct.PrimeFactorsByLookup.html +++ b/erato/struct.PrimeFactorsByLookup.html @@ -1,4 +1,4 @@ -PrimeFactorsByLookup in erato - RustPrimeFactorsByLookup in erato - Rust
-

Struct erato::PrimeFactorsByLookup

source ·
pub struct PrimeFactorsByLookup<'a, T: Int> { /* private fields */ }
Expand description

See the document of crate::LpdSieve::prime_factors

-

Implementations§

source§

impl<T: Int> PrimeFactorsByLookup<'_, T>

source

pub fn unique(self) -> Unique<T, Self>

source

pub fn rle(self) -> Rle<T, Self>

Trait Implementations§

source§

impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +
pub struct PrimeFactorsByLookup<'a, T: Int> { /* private fields */ }
Expand description

See the document of crate::LpdSieve::prime_factors

+

Implementations§

source§

impl<T: Int> PrimeFactorsByLookup<'_, T>

source

pub fn unique(self) -> Unique<T, Self>

source

pub fn rle(self) -> Rle<T, Self>

Trait Implementations§

source§

impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T>

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
source§

impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByLookup<'a, T>

source§

fn unique(self) -> Unique<T, Self>

Make prime factors unique. Read more
source§

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity -of it. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for PrimeFactorsByLookup<'a, T>
where - T: Freeze,

§

impl<'a, T> RefUnwindSafe for PrimeFactorsByLookup<'a, T>
where - T: RefUnwindSafe,

§

impl<'a, T> Send for PrimeFactorsByLookup<'a, T>
where - T: Send,

§

impl<'a, T> Sync for PrimeFactorsByLookup<'a, T>
where - T: Sync,

§

impl<'a, T> Unpin for PrimeFactorsByLookup<'a, T>
where - T: Unpin,

§

impl<'a, T> !UnwindSafe for PrimeFactorsByLookup<'a, T>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more
source§

impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByLookup<'a, T>

source§

fn unique(self) -> Unique<T, Self>

Make prime factors unique. Read more
source§

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity +of it. Read more

Auto Trait Implementations§

§

impl<'a, T> RefUnwindSafe for PrimeFactorsByLookup<'a, T>where + T: RefUnwindSafe,

§

impl<'a, T> Send for PrimeFactorsByLookup<'a, T>where + T: Send,

§

impl<'a, T> Sync for PrimeFactorsByLookup<'a, T>where + T: Sync,

§

impl<'a, T> Unpin for PrimeFactorsByLookup<'a, T>where + T: Unpin,

§

impl<'a, T> !UnwindSafe for PrimeFactorsByLookup<'a, T>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.PrimeFactorsByTrialDivision.html b/erato/struct.PrimeFactorsByTrialDivision.html index c75c888b..8d8effe1 100644 --- a/erato/struct.PrimeFactorsByTrialDivision.html +++ b/erato/struct.PrimeFactorsByTrialDivision.html @@ -1,4 +1,4 @@ -PrimeFactorsByTrialDivision in erato - RustPrimeFactorsByTrialDivision in erato - Rust
-

Struct erato::PrimeFactorsByTrialDivision

source ·
pub struct PrimeFactorsByTrialDivision<'a, T: Int> { /* private fields */ }
Expand description

See the document of crate::Sieve::prime_factors

-

Implementations§

source§

impl<T: Int> PrimeFactorsByTrialDivision<'_, T>

source

pub fn unique(self) -> Unique<T, Self>

source

pub fn rle(self) -> Rle<T, Self>

Trait Implementations§

source§

impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +
pub struct PrimeFactorsByTrialDivision<'a, T: Int> { /* private fields */ }
Expand description

See the document of crate::Sieve::prime_factors

+

Implementations§

source§

impl<T: Int> PrimeFactorsByTrialDivision<'_, T>

source

pub fn unique(self) -> Unique<T, Self>

source

pub fn rle(self) -> Rle<T, Self>

Trait Implementations§

source§

impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T>

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
source§

impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByTrialDivision<'a, T>

source§

fn unique(self) -> Unique<T, Self>

Make prime factors unique. Read more
source§

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity -of it. Read more

Auto Trait Implementations§

§

impl<'a, T> Freeze for PrimeFactorsByTrialDivision<'a, T>
where - T: Freeze,

§

impl<'a, T> RefUnwindSafe for PrimeFactorsByTrialDivision<'a, T>
where - T: RefUnwindSafe,

§

impl<'a, T> Send for PrimeFactorsByTrialDivision<'a, T>
where - T: Send,

§

impl<'a, T> Sync for PrimeFactorsByTrialDivision<'a, T>
where - T: Sync,

§

impl<'a, T> Unpin for PrimeFactorsByTrialDivision<'a, T>
where - T: Unpin,

§

impl<'a, T> !UnwindSafe for PrimeFactorsByTrialDivision<'a, T>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more
source§

impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByTrialDivision<'a, T>

source§

fn unique(self) -> Unique<T, Self>

Make prime factors unique. Read more
source§

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity +of it. Read more

Auto Trait Implementations§

§

impl<'a, T> RefUnwindSafe for PrimeFactorsByTrialDivision<'a, T>where + T: RefUnwindSafe,

§

impl<'a, T> Send for PrimeFactorsByTrialDivision<'a, T>where + T: Send,

§

impl<'a, T> Sync for PrimeFactorsByTrialDivision<'a, T>where + T: Sync,

§

impl<'a, T> Unpin for PrimeFactorsByTrialDivision<'a, T>where + T: Unpin,

§

impl<'a, T> !UnwindSafe for PrimeFactorsByTrialDivision<'a, T>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.PrimeNumbers.html b/erato/struct.PrimeNumbers.html index 9dd00960..988011b0 100644 --- a/erato/struct.PrimeNumbers.html +++ b/erato/struct.PrimeNumbers.html @@ -1,4 +1,4 @@ -PrimeNumbers in erato - RustPrimeNumbers in erato - Rust
-

Struct erato::PrimeNumbers

source ·
pub struct PrimeNumbers<'a, S: SieveKind, T: Int> { /* private fields */ }
Expand description

An iterator to generate all the prime numbers, constructed by crate::Sieve::prime_numbers.

-

Trait Implementations§

source§

impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T>

source§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct erato::PrimeNumbers

source ·
pub struct PrimeNumbers<'a, S: SieveKind, T: Int> { /* private fields */ }
Expand description

An iterator to generate all the prime numbers, constructed by crate::Sieve::prime_numbers.

+

Trait Implementations§

source§

impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T>

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<'a, S, T> Freeze for PrimeNumbers<'a, S, T>

§

impl<'a, S, T> RefUnwindSafe for PrimeNumbers<'a, S, T>
where - T: RefUnwindSafe, - <S as SieveKind>::SieveValue: RefUnwindSafe,

§

impl<'a, S, T> Send for PrimeNumbers<'a, S, T>
where - T: Send, - <S as SieveKind>::SieveValue: Send,

§

impl<'a, S, T> Sync for PrimeNumbers<'a, S, T>
where - T: Sync, - <S as SieveKind>::SieveValue: Sync,

§

impl<'a, S, T> Unpin for PrimeNumbers<'a, S, T>
where - T: Unpin,

§

impl<'a, S, T> !UnwindSafe for PrimeNumbers<'a, S, T>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'a, S, T> RefUnwindSafe for PrimeNumbers<'a, S, T>where + T: RefUnwindSafe, + <S as SieveKind>::SieveValue: RefUnwindSafe,

§

impl<'a, S, T> Send for PrimeNumbers<'a, S, T>where + T: Send, + <S as SieveKind>::SieveValue: Send,

§

impl<'a, S, T> Sync for PrimeNumbers<'a, S, T>where + T: Sync, + <S as SieveKind>::SieveValue: Sync,

§

impl<'a, S, T> Unpin for PrimeNumbers<'a, S, T>where + T: Unpin,

§

impl<'a, S, T> !UnwindSafe for PrimeNumbers<'a, S, T>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.Rle.html b/erato/struct.Rle.html index db771d0d..55077856 100644 --- a/erato/struct.Rle.html +++ b/erato/struct.Rle.html @@ -1,4 +1,4 @@ -Rle in erato - RustRle in erato - Rust
-

Struct erato::Rle

source ·
pub struct Rle<T: Int, P: PrimeFactors<T>> { /* private fields */ }
Expand description

An iterator returned by PrimeFactors::rle

-

Trait Implementations§

source§

impl<T: Int, P: PrimeFactors<T>> Iterator for Rle<T, P>

source§

type Item = (<P as Iterator>::Item, usize)

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct erato::Rle

source ·
pub struct Rle<T: Int, P: PrimeFactors<T>> { /* private fields */ }
Expand description

An iterator returned by PrimeFactors::rle

+

Trait Implementations§

source§

impl<T: Int, P: PrimeFactors<T>> Iterator for Rle<T, P>

§

type Item = (<P as Iterator>::Item, usize)

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<T, P> Freeze for Rle<T, P>
where - P: Freeze, - T: Freeze,

§

impl<T, P> RefUnwindSafe for Rle<T, P>
where - P: RefUnwindSafe, - T: RefUnwindSafe,

§

impl<T, P> Send for Rle<T, P>
where - P: Send, - T: Send,

§

impl<T, P> Sync for Rle<T, P>
where - P: Sync, - T: Sync,

§

impl<T, P> Unpin for Rle<T, P>
where - P: Unpin, - T: Unpin,

§

impl<T, P> UnwindSafe for Rle<T, P>
where - P: UnwindSafe, - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<T, P> RefUnwindSafe for Rle<T, P>where + P: RefUnwindSafe, + T: RefUnwindSafe,

§

impl<T, P> Send for Rle<T, P>where + P: Send, + T: Send,

§

impl<T, P> Sync for Rle<T, P>where + P: Sync, + T: Sync,

§

impl<T, P> Unpin for Rle<T, P>where + P: Unpin, + T: Unpin,

§

impl<T, P> UnwindSafe for Rle<T, P>where + P: UnwindSafe, + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.Sieve.html b/erato/struct.Sieve.html index 1d5aee9c..1435cce7 100644 --- a/erato/struct.Sieve.html +++ b/erato/struct.Sieve.html @@ -1,4 +1,4 @@ -Sieve in erato - RustSieve in erato - Rust
-

Struct erato::Sieve

source ·
pub struct Sieve { /* private fields */ }
Expand description

Is-prime table.

-

§Complexity

+

Struct erato::Sieve

source ·
pub struct Sieve { /* private fields */ }
Expand description

Is-prime table.

+

Complexity

The complexity of algorithms are like this, but it takes extra time to grow itself implicitly.

  • Construction: Θ ( n / lg lg n )
  • -
  • Prime factorization: Θ ( π ( √n ) ), where π ( n ) is the number of prime numbers less than n.
  • +
  • Prime factorization: Θ ( π ( √n ) ), where π ( n ) is the number of prime numbers less than +n.
-

Implementations§

source§

impl Sieve

source

pub fn new() -> Self

Construct a new empty sieve. No heap allocations is run via this method.

-
§Examples
+

Implementations§

source§

impl Sieve

source

pub fn new() -> Self

Construct a new empty sieve. No heap allocations is run via this method.

+
Examples
use erato::Sieve;
 
 let sieve = Sieve::new();
 assert_eq!(sieve.len(), 0);
-
source

pub fn is_empty(&self) -> bool

Returns true if a sieve is empty.

-
§Examples
+
source

pub fn is_empty(&self) -> bool

Returns true if a sieve is empty.

+
Examples
use erato::Sieve;
 assert!(Sieve::with_len(0).is_empty());
 assert!(!Sieve::with_len(1).is_empty());
-
source

pub fn len(&self) -> usize

Returns the length of a sieve.

-
§Examples
+
source

pub fn len(&self) -> usize

Returns the length of a sieve.

+
Examples
use erato::Sieve;
 let sieve = Sieve::with_len(42);
 assert_eq!(sieve.len(), 42);
-
source

pub fn with_len(n: usize) -> Self

Construct a sieve of given length.

-
§Complexity
+
source

pub fn with_len(n: usize) -> Self

Construct a sieve of given length.

+
Complexity

Θ ( n / lg lg n )

-
§Examples
+
Examples
use erato::Sieve;
 
 let sieve = Sieve::with_len(10);
 assert_eq!(sieve.len(), 10);
-
source

pub fn is_prime<T: Int>(&mut self, x: T) -> bool

Returns true if x is a prime number.

-
§Panics
+
source

pub fn is_prime<T: Int>(&mut self, x: T) -> bool

Returns true if x is a prime number.

+
Panics

if x <= 0.

-
§Note
+
Note

If self.len() <= x sieve will extended the size to the next power of two of x.

-
§Examples
+
Examples
use erato::Sieve;
 
 let mut sieve = Sieve::new();
 assert!(sieve.is_prime(2));
 assert!(!sieve.is_prime(6));
-
source

pub fn prime_numbers<T: Int>(&mut self) -> PrimeNumbers<'_, Boolean, T>

Returns an iterator to generate all the prime numbers in ascending order, extending +

source

pub fn prime_numbers<T: Int>(&mut self) -> PrimeNumbers<'_, Boolean, T>

Returns an iterator to generate all the prime numbers in ascending order, extending itself repeatedly.

-
§Complexity
+
Complexity

Beside the incremental building, it takes Θ ( π ( n ) ), where π ( n ) is the number of prime numbers less than n.

-
§Examples
+
Examples
use erato::Sieve;
 
 let mut sieve = Sieve::new();
@@ -88,28 +89,28 @@ 
§Examples
assert_eq!(prime_numbers.next(), Some(3)); assert_eq!(prime_numbers.next(), Some(5)); assert_eq!(prime_numbers.next(), Some(7));
-
source

pub fn prime_factors<T: Int>( +

source

pub fn prime_factors<T: Int>( &mut self, - n: T, + n: T ) -> PrimeFactorsByTrialDivision<'_, T>

Use trial-division algorithm to iterate over all the prime divisors of x, extending itself repeatedly.

-
§Complexity
+
Complexity

Beside the incremental building, it takes Θ ( π ( √n ) ), where π ( n ) is the number of prime numbers less than n.

-
§Examples
+
Examples
use erato::Sieve;
 
 let mut sieve = Sieve::new();
 itertools::assert_equal(sieve.prime_factors(84), vec![2, 2, 3, 7]);
-

Trait Implementations§

source§

impl Clone for Sieve

source§

fn clone(&self) -> Sieve

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Sieve

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Sieve

source§

fn default() -> Sieve

Returns the “default value” for a type. Read more
source§

impl PartialEq for Sieve

source§

fn eq(&self, other: &Sieve) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl StructuralPartialEq for Sieve

Auto Trait Implementations§

§

impl Freeze for Sieve

§

impl RefUnwindSafe for Sieve

§

impl Send for Sieve

§

impl Sync for Sieve

§

impl Unpin for Sieve

§

impl UnwindSafe for Sieve

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for Sieve

source§

fn clone(&self) -> Sieve

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Sieve

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Sieve

source§

fn default() -> Sieve

Returns the “default value” for a type. Read more
source§

impl PartialEq<Sieve> for Sieve

source§

fn eq(&self, other: &Sieve) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for Sieve

Auto Trait Implementations§

§

impl RefUnwindSafe for Sieve

§

impl Send for Sieve

§

impl Sync for Sieve

§

impl Unpin for Sieve

§

impl UnwindSafe for Sieve

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/struct.Unique.html b/erato/struct.Unique.html index bd0056e6..5f7238b6 100644 --- a/erato/struct.Unique.html +++ b/erato/struct.Unique.html @@ -1,4 +1,4 @@ -Unique in erato - RustUnique in erato - Rust
-

Struct erato::Unique

source ·
pub struct Unique<T: Int, P: PrimeFactors<T>> { /* private fields */ }
Expand description

An iterator returned by PrimeFactors::unique

-

Trait Implementations§

source§

impl<T: Int, P: PrimeFactors<T>> Iterator for Unique<T, P>

source§

type Item = <P as Iterator>::Item

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +

Struct erato::Unique

source ·
pub struct Unique<T: Int, P: PrimeFactors<T>> { /* private fields */ }
Expand description

An iterator returned by PrimeFactors::unique

+

Trait Implementations§

source§

impl<T: Int, P: PrimeFactors<T>> Iterator for Unique<T, P>

§

type Item = <P as Iterator>::Item

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<T, P> Freeze for Unique<T, P>
where - P: Freeze, - T: Freeze,

§

impl<T, P> RefUnwindSafe for Unique<T, P>
where - P: RefUnwindSafe, - T: RefUnwindSafe,

§

impl<T, P> Send for Unique<T, P>
where - P: Send, - T: Send,

§

impl<T, P> Sync for Unique<T, P>
where - P: Sync, - T: Sync,

§

impl<T, P> Unpin for Unique<T, P>
where - P: Unpin, - T: Unpin,

§

impl<T, P> UnwindSafe for Unique<T, P>
where - P: UnwindSafe, - T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<T, P> RefUnwindSafe for Unique<T, P>where + P: RefUnwindSafe, + T: RefUnwindSafe,

§

impl<T, P> Send for Unique<T, P>where + P: Send, + T: Send,

§

impl<T, P> Sync for Unique<T, P>where + P: Sync, + T: Sync,

§

impl<T, P> Unpin for Unique<T, P>where + P: Unpin, + T: Unpin,

§

impl<T, P> UnwindSafe for Unique<T, P>where + P: UnwindSafe, + T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for Iwhere + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/erato/trait.Int.html b/erato/trait.Int.html index e8d62f02..a2df1d62 100644 --- a/erato/trait.Int.html +++ b/erato/trait.Int.html @@ -1,4 +1,4 @@ -Int in erato - RustInt in erato - Rust
-

Trait erato::Int

source ·
pub trait Int:
-    Debug
-    + Copy
-    + Ord
-    + Add<Output = Self>
-    + AddAssign
-    + Sub<Output = Self>
-    + SubAssign
-    + Mul<Output = Self>
-    + MulAssign
-    + Div<Output = Self>
-    + DivAssign
-    + Rem<Output = Self>
-    + RemAssign {
+

Trait erato::Int

source ·
pub trait Int: Debug + Copy + Ord + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + Rem<Output = Self> + RemAssign {
     // Required methods
     fn zero() -> Self;
     fn one() -> Self;
     fn two() -> Self;
-    fn as_usize(self) -> usize;
-    fn from_usize(src: usize) -> Self;
+    fn as_usize(self) -> usize;
+    fn from_usize(src: usize) -> Self;
 }
Expand description

Abstraction of integers.

-

Required Methods§

source

fn zero() -> Self

Returns 0.

-
source

fn one() -> Self

Returns 1.

-
source

fn two() -> Self

Returns 2.

-
source

fn as_usize(self) -> usize

Converts into usize

-
source

fn from_usize(src: usize) -> Self

Converts an usize into Self

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Int for i8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for isize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for usize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

Implementors§

\ No newline at end of file +

Required Methods§

source

fn zero() -> Self

Returns 0.

+
source

fn one() -> Self

Returns 1.

+
source

fn two() -> Self

Returns 2.

+
source

fn as_usize(self) -> usize

Converts into usize

+
source

fn from_usize(src: usize) -> Self

Converts an usize into Self

+

Implementations on Foreign Types§

source§

impl Int for usize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for isize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for i8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

source§

impl Int for u64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn two() -> Self

source§

fn as_usize(self) -> usize

source§

fn from_usize(src: usize) -> Self

Implementors§

\ No newline at end of file diff --git a/erato/trait.PrimeFactors.html b/erato/trait.PrimeFactors.html index c0e9f6e7..117174d7 100644 --- a/erato/trait.PrimeFactors.html +++ b/erato/trait.PrimeFactors.html @@ -1,4 +1,4 @@ -PrimeFactors in erato - RustPrimeFactors in erato - Rust
-

Trait erato::PrimeFactors

source ·
pub trait PrimeFactors<T: Int>: Sized + Iterator<Item = T> {
+

Trait erato::PrimeFactors

source ·
pub trait PrimeFactors<T: Int>: Sized + Iterator<Item = T> {
     // Provided methods
     fn unique(self) -> Unique<T, Self>  { ... }
     fn rle(self) -> Rle<T, Self>  { ... }
 }
Expand description

An abstraction of prime factor generator.

It provides a few useful converters.

-

Provided Methods§

source

fn unique(self) -> Unique<T, Self>

Make prime factors unique.

-
§Examples
+

Provided Methods§

source

fn unique(self) -> Unique<T, Self>

Make prime factors unique.

+
Examples

Basic usage:

use erato::Sieve;
 
 let mut sieve = Sieve::new();
 itertools::assert_equal(sieve.prime_factors(84).unique(), vec![2, 3, 7]);
-
source

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity +

source

fn rle(self) -> Rle<T, Self>

Returns an iterator to generate the pairs of distinct prime divisors and the multiplicity of it.

-
§Examples
+
Examples

Basic usage:

use erato::Sieve;
 
 let mut sieve = Sieve::new();
 itertools::assert_equal(sieve.prime_factors(84).rle(), vec![(2, 2), (3, 1), (7, 1)]);
-

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file +

Implementors§

\ No newline at end of file diff --git a/euclid/all.html b/euclid/all.html index eea0b45a..1cbfe58e 100644 --- a/euclid/all.html +++ b/euclid/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Traits

Functions

\ No newline at end of file +

List of all items

Traits

Functions

\ No newline at end of file diff --git a/euclid/fn.crt.html b/euclid/fn.crt.html index 54fb003d..e56f2bda 100644 --- a/euclid/fn.crt.html +++ b/euclid/fn.crt.html @@ -1,4 +1,4 @@ -crt in euclid - Rustcrt in euclid - Rust
-

Function euclid::crt

source ·
pub fn crt<T: Signed>(res0: T, mod0: T, res1: T, mod1: T) -> Option<(T, T)>
Expand description

Returns an integer res2, mod2 such that (res0 + mod0 ℤ) ∩(res1 + mod1ℤ) = res2 + mod2ℤ

-

§Examples

+

Function euclid::crt

source ·
pub fn crt<T: Signed>(res0: T, mod0: T, res1: T, mod1: T) -> Option<(T, T)>
Expand description

Returns an integer res2, mod2 such that (res0 + mod0 ℤ) ∩(res1 + mod1ℤ) = res2 + mod2ℤ

+

Examples

Basic usage:

use euclid::crt;
diff --git a/euclid/fn.ext_gcd.html b/euclid/fn.ext_gcd.html
index 1e888fe0..6031f8b8 100644
--- a/euclid/fn.ext_gcd.html
+++ b/euclid/fn.ext_gcd.html
@@ -1,4 +1,4 @@
-ext_gcd in euclid - Rustext_gcd in euclid - Rust
-

Function euclid::ext_gcd

source ·
pub fn ext_gcd<T: Signed>(x: T, y: T) -> (T, T, T)
Expand description

Takes two integers x, y and returns a, b, g satisfying ax + by = g, 0 < g

-

§Panics

+

Function euclid::ext_gcd

source ·
pub fn ext_gcd<T: Signed>(x: T, y: T) -> (T, T, T)
Expand description

Takes two integers x, y and returns a, b, g satisfying ax + by = g, 0 < g

+

Panics

Panics if x == 0 || y == 0

\ No newline at end of file diff --git a/euclid/fn.gcd.html b/euclid/fn.gcd.html index fd562401..7bdee3e3 100644 --- a/euclid/fn.gcd.html +++ b/euclid/fn.gcd.html @@ -1,4 +1,4 @@ -gcd in euclid - Rustgcd in euclid - Rust
-

Function euclid::gcd

source ·
pub fn gcd<T: Int>(x: T, y: T) -> T
Expand description

Returns the greatest common divisor of x and y.

+

Function euclid::gcd

source ·
pub fn gcd<T: Int>(x: T, y: T) -> T
Expand description

Returns the greatest common divisor of x and y.

\ No newline at end of file diff --git a/euclid/index.html b/euclid/index.html index 36424da8..24b1d823 100644 --- a/euclid/index.html +++ b/euclid/index.html @@ -1,4 +1,4 @@ -euclid - Rusteuclid - Rust
-

Crate euclid

source ·

Traits§

  • Abstraction of integers.
  • Abstraction of signed integers.
  • Abstraction of unsigned integers.

Functions§

  • Returns an integer res2, mod2 such that (res0 + mod0 ℤ) ∩(res1 + mod1ℤ) = res2 + mod2ℤ
  • Takes two integers x, y and returns a, b, g satisfying ax + by = g, 0 < g
  • Returns the greatest common divisor of x and y.
\ No newline at end of file +

Crate euclid

source ·

Traits

  • Abstraction of integers.
  • Abstraction of signed integers.
  • Abstraction of unsigned integers.

Functions

  • Returns an integer res2, mod2 such that (res0 + mod0 ℤ) ∩(res1 + mod1ℤ) = res2 + mod2ℤ
  • Takes two integers x, y and returns a, b, g satisfying ax + by = g, 0 < g
  • Returns the greatest common divisor of x and y.
\ No newline at end of file diff --git a/euclid/trait.Int.html b/euclid/trait.Int.html index c0be8a21..e1beb9dd 100644 --- a/euclid/trait.Int.html +++ b/euclid/trait.Int.html @@ -1,4 +1,4 @@ -Int in euclid - RustInt in euclid - Rust
-

Trait euclid::Int

source ·
pub trait Int:
-    Debug
-    + Copy
-    + Ord
-    + Add<Output = Self>
-    + AddAssign
-    + Sub<Output = Self>
-    + SubAssign
-    + Mul<Output = Self>
-    + MulAssign
-    + Div<Output = Self>
-    + DivAssign
-    + Rem<Output = Self>
-    + RemAssign {
+

Trait euclid::Int

source ·
pub trait Int: Debug + Copy + Ord + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + Rem<Output = Self> + RemAssign {
     // Required methods
     fn zero() -> Self;
     fn one() -> Self;
@@ -55,13 +42,13 @@
     fn rem_euclid(self, rhs: Self) -> Self;
 
     // Provided method
-    fn divides(self, n: Self) -> bool { ... }
+    fn divides(self, n: Self) -> bool { ... }
 }
Expand description

Abstraction of integers.

-

Required Methods§

source

fn zero() -> Self

Returns 0.

-
source

fn one() -> Self

Returns 1.

-
source

fn increment(&mut self)

Increment self.

-
source

fn abs(self) -> Self

Returns the absolute value.

-
source

fn div_euclid(self, rhs: Self) -> Self

Calculates the quotient of Euclidean division of self by rhs.

-
source

fn rem_euclid(self, rhs: Self) -> Self

Calculates the least nonnegative remainder of self (mod rhs).

-

Provided Methods§

source

fn divides(self, n: Self) -> bool

Returns true if and only if self divides n.

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Int for i8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for isize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for usize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

Implementors§

\ No newline at end of file +

Required Methods§

source

fn zero() -> Self

Returns 0.

+
source

fn one() -> Self

Returns 1.

+
source

fn increment(&mut self)

Increment self.

+
source

fn abs(self) -> Self

Returns the absolute value.

+
source

fn div_euclid(self, rhs: Self) -> Self

Calculates the quotient of Euclidean division of self by rhs.

+
source

fn rem_euclid(self, rhs: Self) -> Self

Calculates the least nonnegative remainder of self (mod rhs).

+

Provided Methods§

source

fn divides(self, n: Self) -> bool

Returns true if and only if self divides n.

+

Implementations on Foreign Types§

source§

impl Int for usize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u32

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for isize

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u64

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u128

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for u8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i8

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

source§

impl Int for i16

source§

fn zero() -> Self

source§

fn one() -> Self

source§

fn increment(&mut self)

source§

fn abs(self) -> Self

source§

fn div_euclid(self, rhs: Self) -> Self

source§

fn rem_euclid(self, rhs: Self) -> Self

Implementors§

\ No newline at end of file diff --git a/euclid/trait.Signed.html b/euclid/trait.Signed.html index 56a3ff85..e1bbaf22 100644 --- a/euclid/trait.Signed.html +++ b/euclid/trait.Signed.html @@ -1,4 +1,4 @@ -Signed in euclid - RustSigned in euclid - Rust
-

Trait euclid::Signed

source ·
pub trait Signed: Int + Neg<Output = Self> { }
Expand description

Abstraction of signed integers.

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Signed for i8

source§

impl Signed for i16

source§

impl Signed for i32

source§

impl Signed for i64

source§

impl Signed for i128

source§

impl Signed for isize

Implementors§

\ No newline at end of file +

Trait euclid::Signed

source ·
pub trait Signed: Int + Neg<Output = Self> { }
Expand description

Abstraction of signed integers.

+

Implementations on Foreign Types§

source§

impl Signed for i64

source§

impl Signed for i8

source§

impl Signed for i16

source§

impl Signed for isize

source§

impl Signed for i32

source§

impl Signed for i128

Implementors§

\ No newline at end of file diff --git a/euclid/trait.Unsigned.html b/euclid/trait.Unsigned.html index 304957ed..7c7732c7 100644 --- a/euclid/trait.Unsigned.html +++ b/euclid/trait.Unsigned.html @@ -1,4 +1,4 @@ -Unsigned in euclid - RustUnsigned in euclid - Rust
-

Trait euclid::Unsigned

source ·
pub trait Unsigned: Int { }
Expand description

Abstraction of unsigned integers.

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Unsigned for u8

source§

impl Unsigned for u16

source§

impl Unsigned for u32

source§

impl Unsigned for u64

source§

impl Unsigned for u128

source§

impl Unsigned for usize

Implementors§

\ No newline at end of file +

Trait euclid::Unsigned

source ·
pub trait Unsigned: Int { }
Expand description

Abstraction of unsigned integers.

+

Implementations on Foreign Types§

source§

impl Unsigned for u32

source§

impl Unsigned for u8

source§

impl Unsigned for u16

source§

impl Unsigned for u64

source§

impl Unsigned for usize

source§

impl Unsigned for u128

Implementors§

\ No newline at end of file diff --git a/fp/all.html b/fp/all.html index 6adbff6c..ca6b0927 100644 --- a/fp/all.html +++ b/fp/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-

List of all items

Structs

Traits

Macros

Functions

\ No newline at end of file +

List of all items

Structs

Traits

Macros

Functions

\ No newline at end of file diff --git a/fp/fn.any_mod_fps_mul.html b/fp/fn.any_mod_fps_mul.html index 683984cb..715bc7eb 100644 --- a/fp/fn.any_mod_fps_mul.html +++ b/fp/fn.any_mod_fps_mul.html @@ -1,4 +1,4 @@ -any_mod_fps_mul in fp - Rustany_mod_fps_mul in fp - Rust
-

Function fp::any_mod_fps_mul

source ·
pub fn any_mod_fps_mul<const P: u64>(a: &[Fp<P>], b: &[Fp<P>]) -> Vec<Fp<P>>
Expand description

Multiplies two polynomials.

+

Function fp::any_mod_fps_mul

source ·
pub fn any_mod_fps_mul<const P: u64>(a: &[Fp<P>], b: &[Fp<P>]) -> Vec<Fp<P>>
Expand description

Multiplies two polynomials.

\ No newline at end of file diff --git a/fp/fn.fft.html b/fp/fn.fft.html index 862f75b9..a77bb8d1 100644 --- a/fp/fn.fft.html +++ b/fp/fn.fft.html @@ -1,4 +1,4 @@ -fft in fp - Rustfft in fp - Rust
-

Function fp::fft

source ·
pub fn fft<const P: u64>(f: &mut [Fp<P>])
where - (): PrimitiveRoot<P>,
Expand description

Fast Fourier transform.

-

§Requirements

+

Function fp::fft

source ·
pub fn fft<const P: u64>(f: &mut [Fp<P>])where
+    (): PrimitiveRoot<P>,
Expand description

Fast Fourier transform.

+

Requirements

  • The length $n$ of $f$ is a power of two.
  • $n | (p - 1)$

Especially, if $p = 998244353$, $n \leq 2^{23}$ must hold.

-

§Replaced by

+

Replaced by

$f(1), f(-1), f(i), f(-i), f(e^{\pi/2}), f(e^{5\pi/2}), \dots$

-

§Examples

+

Examples

use fp::fft;
 use fp::fp;
 use fp::Fp;
diff --git a/fp/fn.fps_mul.html b/fp/fn.fps_mul.html
index 491ea7b1..a5e5d09d 100644
--- a/fp/fn.fps_mul.html
+++ b/fp/fn.fps_mul.html
@@ -1,4 +1,4 @@
-fps_mul in fp - Rustfps_mul in fp - Rust
-

Function fp::fps_mul

source ·
pub fn fps_mul<const P: u64>(
-    a: impl AsRef<[Fp<P>]>,
-    b: impl AsRef<[Fp<P>]>,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Multiplies two polynomials.

-

§Examples

+

Function fp::fps_mul

source ·
pub fn fps_mul<const P: u64>(
+    a: impl AsRef<[Fp<P>]>,
+    b: impl AsRef<[Fp<P>]>
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Multiplies two polynomials.

+

Examples

use fp::fp;
 use fp::fps_mul;
 use fp::Fp;
diff --git a/fp/fn.ifft.html b/fp/fn.ifft.html
index e1936de8..7786f874 100644
--- a/fp/fn.ifft.html
+++ b/fp/fn.ifft.html
@@ -1,4 +1,4 @@
-ifft in fp - Rustifft in fp - Rust
-

Function fp::ifft

source ·
pub fn ifft<const P: u64>(f: &mut [Fp<P>])
where - (): PrimitiveRoot<P>,
Expand description

Inverse fast Fourier transform.

-

§Requirements

+

Function fp::ifft

source ·
pub fn ifft<const P: u64>(f: &mut [Fp<P>])where
+    (): PrimitiveRoot<P>,
Expand description

Inverse fast Fourier transform.

+

Requirements

  • The length $n$ of $f$ is a power of two.
  • $n | (p - 1)$

Especially, if $p = 998244353$, $n \leq 2^{23}$ must hold.

-

§Replaced by

+

Replaced by

Exacly the inverse of fft.

-

§Examples

+

Examples

use fp::fp;
 use fp::ifft;
 use fp::Fp;
diff --git a/fp/index.html b/fp/index.html
index ec52147c..9b75586f 100644
--- a/fp/index.html
+++ b/fp/index.html
@@ -1,4 +1,4 @@
-fp - Rustfp - Rust
-

Crate fp

source ·
Expand description

A library for modular arithmetic.

-

§Examples

+

Crate fp

source ·
Expand description

A library for modular arithmetic.

+

Examples

use fp::fp;
 type Fp = fp::Fp<998244353>;
 let a = Fp::new(3);
@@ -43,7 +43,7 @@ 

§Examples

assert_eq!(a * b, Fp::new(12)); assert_eq!(a / b * b, Fp::new(3)); assert_eq!(a.pow(3), Fp::new(27));
-

§Factorials

+

Factorials

use fp::fp;
 use fp::Factorial;
 let f = Factorial::<998244353>::new(10);
@@ -52,7 +52,7 @@ 

§Factorialsassert_eq!(f.falling(5, 3), fp!(60)); assert_eq!(f.binom(5, 3), fp!(10)); assert_eq!(f.multiset_number(5, 3), fp!(35));

-

§Convolution by Fast Fourier transform (FFT)

+

Convolution by Fast Fourier transform (FFT)

-

Macros§

  • Constructs a new instance of Fp

Structs§

  • Precomputes the factorials and their inverses.
  • A value in $\mathbb{Fp}_p$.

Traits§

Functions§

\ No newline at end of file +

Macros

  • Constructs a new instance of Fp

Structs

  • Precomputes the factorials and their inverses.
  • A value in $\mathbb{Fp}_p$.

Traits

Functions

\ No newline at end of file diff --git a/fp/macro.fp.html b/fp/macro.fp.html index b7a4382c..fadecedb 100644 --- a/fp/macro.fp.html +++ b/fp/macro.fp.html @@ -1,4 +1,4 @@ -fp in fp - Rustfp in fp - Rust
-

Macro fp::fp

source ·
macro_rules! fp {
+

Macro fp::fp

source ·
macro_rules! fp {
     ($value:expr) => { ... };
     ($value:expr; mod $p:expr) => { ... };
 }
Expand description

Constructs a new instance of Fp

-

§Examples

+

Examples

use fp::fp;
 use fp::Fp;
 let a = fp!(42; mod 998244353);
diff --git a/fp/struct.Factorial.html b/fp/struct.Factorial.html
index eb5333e6..673228df 100644
--- a/fp/struct.Factorial.html
+++ b/fp/struct.Factorial.html
@@ -1,4 +1,4 @@
-Factorial in fp - RustFactorial in fp - Rust
-

Struct fp::Factorial

source ·
pub struct Factorial<const P: u64> { /* private fields */ }
Expand description

Precomputes the factorials and their inverses.

-

§Examples

+

Struct fp::Factorial

source ·
pub struct Factorial<const P: u64> { /* private fields */ }
Expand description

Precomputes the factorials and their inverses.

+

Examples

use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
@@ -42,19 +42,19 @@ 

§Examples

assert_eq!(fact.fact(1).value(), 1); assert_eq!(fact.fact(2).value(), 2); assert_eq!(fact.fact(3).value(), 6);
-

Implementations§

source§

impl<const P: u64> Factorial<P>

source

pub fn new(length: usize) -> Self

Constructs a new instance.

-
§Examples
+

Implementations§

source§

impl<const P: u64> Factorial<P>

source

pub fn new(length: usize) -> Self

Constructs a new instance.

+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
-
source

pub fn fact(&self, n: usize) -> Fp<P>

The factorial $n!$ -Index is implemented for this method.

-
§Requirements
+
source

pub fn fact(&self, n: usize) -> Fp<P>

The factorial $n!$ +Index is implemented for this method.

+
Requirements
  • $n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
@@ -63,12 +63,12 @@ 
§Examples
assert_eq!(fact.fact(1).value(), 1); assert_eq!(fact.fact(2).value(), 2); assert_eq!(fact.fact(3).value(), 6);
-
source

pub fn inv_fact(&self, n: usize) -> Fp<P>

The inverse of the factorial $n!$

-
§Requirements
+
source

pub fn inv_fact(&self, n: usize) -> Fp<P>

The inverse of the factorial $n!$

+
Requirements
  • $n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
@@ -77,70 +77,70 @@ 
§Examples
assert_eq!(fact.inv_fact(1).value(), 1); assert_eq!(fact.inv_fact(2).value(), 499122177); assert_eq!(fact.inv_fact(3).value(), 166374059);
-
source

pub fn falling(&self, n: usize, k: usize) -> Fp<P>

$[x^{n-k}]D^k x^n$.

-
§Requirements
+
source

pub fn falling(&self, n: usize, k: usize) -> Fp<P>

$[x^{n-k}]D^k x^n$.

+
Requirements
  • $n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
 assert_eq!(fact.falling(8, 3).value(), 336);
-
source

pub fn binom(&self, n: usize, k: usize) -> Fp<P>

$[x^k](1 + x)^n$.

-
§Requirements
+
source

pub fn binom(&self, n: usize, k: usize) -> Fp<P>

$[x^k](1 + x)^n$.

+
Requirements
  • $k \le n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
 assert_eq!(fact.binom(8, 3).value(), 56);
-
source

pub fn multinom(&self, a: &[usize]) -> Fp<P>

$[x^{a_1} \cdot x^{a_l}](x_{a_1} + \cdot x_{a_l})^n$.

-
§Requirements
+
source

pub fn multinom(&self, a: &[usize]) -> Fp<P>

$[x^{a_1} \cdot x^{a_l}](x_{a_1} + \cdot x_{a_l})^n$.

+
Requirements
  • $k \le n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
 assert_eq!(fact.multinom(&[3, 5]).value(), 56);
-
source

pub fn binom_signed(&self, n: usize, k: isize) -> Fp<P>

$[x^k](1 + x)^n$.

-
§Requirements
+
source

pub fn binom_signed(&self, n: usize, k: isize) -> Fp<P>

$[x^k](1 + x)^n$.

+
Requirements
  • $n \le \text{length}$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
 assert_eq!(fact.binom_signed(8, 3).value(), 56);
 assert_eq!(fact.binom_signed(8, 9).value(), 0);
-
source

pub fn multiset_number(&self, n: usize, k: usize) -> Fp<P>

$[x^k](1 - x)^{-n}$.

-
§Requirements
+
source

pub fn multiset_number(&self, n: usize, k: usize) -> Fp<P>

$[x^k](1 - x)^{-n}$.

+
Requirements
  • $k \gt 0$ or $n \gt 0$
-
§Examples
+
Examples
use fp::Factorial;
 use fp::Fp;
 const P: u64 = 998244353;
 let fact = Factorial::<P>::new(10);
 assert_eq!(fact.multiset_number(8, 3).value(), 120);
-

Trait Implementations§

source§

impl<const P: u64> Index<usize> for Factorial<P>

source§

type Output = Fp<P>

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<const P: u64> Freeze for Factorial<P>

§

impl<const P: u64> RefUnwindSafe for Factorial<P>

§

impl<const P: u64> Send for Factorial<P>

§

impl<const P: u64> Sync for Factorial<P>

§

impl<const P: u64> Unpin for Factorial<P>

§

impl<const P: u64> UnwindSafe for Factorial<P>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<const P: u64> Index<usize> for Factorial<P>

§

type Output = Fp<P>

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more

Auto Trait Implementations§

§

impl<const P: u64> RefUnwindSafe for Factorial<P>

§

impl<const P: u64> Send for Factorial<P>

§

impl<const P: u64> Sync for Factorial<P>

§

impl<const P: u64> Unpin for Factorial<P>

§

impl<const P: u64> UnwindSafe for Factorial<P>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/fp/struct.Fp.html b/fp/struct.Fp.html index e4e7eaa3..cd9b0017 100644 --- a/fp/struct.Fp.html +++ b/fp/struct.Fp.html @@ -1,4 +1,4 @@ -Fp in fp - RustFp in fp - Rust
-

Struct fp::Fp

source ·
pub struct Fp<const P: u64> { /* private fields */ }
Expand description

A value in $\mathbb{Fp}_p$.

-

§Requirements

+

Struct fp::Fp

source ·
pub struct Fp<const P: u64> { /* private fields */ }
Expand description

A value in $\mathbb{Fp}_p$.

+

Requirements

  • $P$ is odd and prime ($P \gt 2^{31}$)
-

§Invariants

+

Invariants

  • $0 \le \text{value} < P$
-

§Examples

+

Examples

type Fp = fp::Fp<998244353>;
 assert_eq!(Fp::new(3) + Fp::new(4), Fp::new(7));
 assert_eq!(Fp::new(3) - Fp::new(4), Fp::new(998244352));
 assert_eq!(Fp::new(3) * Fp::new(4), Fp::new(12));
 assert_eq!(Fp::new(3) / Fp::new(4) * Fp::new(4), Fp::new(3));
-

Implementations§

source§

impl<const P: u64> Fp<P>

source

pub const fn new(value: u64) -> Self

Constructs a new instance.

-
§Requirements
§Examples
+

Implementations§

source§

impl<const P: u64> Fp<P>

source

pub const fn new(value: u64) -> Self

Constructs a new instance.

+
Requirements
Examples
use fp::Fp;
 const P: u64 = 998244353;
 let a = Fp::<P>::new(42);
-
source

pub const fn value(self) -> u64

Returns the value.

-
§Examples
+
source

pub const fn value(self) -> u64

Returns the value.

+
Examples
use fp::Fp;
 const P: u64 = 998244353;
 let a = Fp::<P>::new(42);
 assert_eq!(a.value(), 42);
-
source

pub const fn m1pow(exp: usize) -> Self

$(-1) ^ e$.

-
§Examples
+
source

pub const fn m1pow(exp: usize) -> Self

$(-1) ^ e$.

+
Examples
use fp::Fp;
 const P: u64 = 998244353;
 assert_eq!(Fp::<P>::m1pow(0), Fp::new(1));
 assert_eq!(Fp::<P>::m1pow(1), Fp::from(-1));
 assert_eq!(Fp::<P>::m1pow(2), Fp::new(1));
-
source

pub fn inv(self) -> Self

Returns the multiplicative inverse.

-
§Examples
+
source

pub fn inv(self) -> Self

Returns the multiplicative inverse.

+
Examples
use fp::Fp;
 const P: u64 = 998244353;
 let a = Fp::<P>::new(2);
 assert_eq!(a.inv().value(), 499122177);
-
source

pub fn pow(self, exp: u64) -> Self

Returns the $n$-th power.

-
§Examples
+
source

pub fn pow(self, exp: u64) -> Self

Returns the $n$-th power.

+
Examples
use fp::Fp;
 const P: u64 = 998244353;
 let a = Fp::<P>::new(2);
 assert_eq!(a.pow(3).value(), 8);
-
source

pub fn sign(pow: usize) -> Self

Returns $(-1)^{\text{pow}}$.

-
§Examples
+
source

pub fn sign(pow: usize) -> Self

Returns $(-1)^{\text{pow}}$.

+
Examples
type Fp = fp::Fp<998244353>;
 assert_eq!(Fp::sign(0), Fp::from(1));
 assert_eq!(Fp::sign(1), Fp::from(-1));
 assert_eq!(Fp::sign(2), Fp::from(1));
 assert_eq!(Fp::sign(3), Fp::from(-1));
-

Trait Implementations§

source§

impl<const P: u64> Add<&Fp<P>> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Fp<P>) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64> Add<&Fp<P>> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Fp<P>) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Add<T> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Add<T> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64> AddAssign<&Fp<P>> for Fp<P>

source§

fn add_assign(&mut self, rhs: &Fp<P>)

Performs the += operation. Read more
source§

impl<const P: u64> AddAssign for Fp<P>

source§

fn add_assign(&mut self, rhs: Fp<P>)

Performs the += operation. Read more
source§

impl<const P: u64> Clone for Fp<P>

source§

fn clone(&self) -> Fp<P>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const P: u64> Debug for Fp<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const P: u64> Display for Fp<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const P: u64> Div<&Fp<P>> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Fp<P>) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64> Div<&Fp<P>> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Fp<P>) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Div<T> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Div<T> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64> DivAssign<&Fp<P>> for Fp<P>

source§

fn div_assign(&mut self, rhs: &Fp<P>)

Performs the /= operation. Read more
source§

impl<const P: u64> DivAssign for Fp<P>

source§

fn div_assign(&mut self, rhs: Fp<P>)

Performs the /= operation. Read more
source§

impl<const P: u64> From<i128> for Fp<P>

source§

fn from(x: i128) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i16> for Fp<P>

source§

fn from(x: i16) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i32> for Fp<P>

source§

fn from(x: i32) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i64> for Fp<P>

source§

fn from(x: i64) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i8> for Fp<P>

source§

fn from(x: i8) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<isize> for Fp<P>

source§

fn from(x: isize) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u128> for Fp<P>

source§

fn from(x: u128) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u16> for Fp<P>

source§

fn from(x: u16) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u32> for Fp<P>

source§

fn from(x: u32) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u64> for Fp<P>

source§

fn from(x: u64) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u8> for Fp<P>

source§

fn from(x: u8) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<usize> for Fp<P>

source§

fn from(x: usize) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> Hash for Fp<P>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<const P: u64> Mul<&Fp<P>> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Fp<P>) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64> Mul<&Fp<P>> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Fp<P>) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Mul<T> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Mul<T> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64> MulAssign<&Fp<P>> for Fp<P>

source§

fn mul_assign(&mut self, rhs: &Fp<P>)

Performs the *= operation. Read more
source§

impl<const P: u64> MulAssign for Fp<P>

source§

fn mul_assign(&mut self, rhs: Fp<P>)

Performs the *= operation. Read more
source§

impl<const P: u64> Neg for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<const P: u64> PartialEq for Fp<P>

source§

fn eq(&self, other: &Fp<P>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl<'a, const P: u64> Product<&'a Fp<P>> for Fp<P>

source§

fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by multiplying -the items.
source§

impl<const P: u64> Product for Fp<P>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by multiplying -the items.
source§

impl<const P: u64> Sub<&Fp<P>> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Fp<P>) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64> Sub<&Fp<P>> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Fp<P>) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Sub<T> for &Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Sub<T> for Fp<P>

source§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64> SubAssign<&Fp<P>> for Fp<P>

source§

fn sub_assign(&mut self, rhs: &Fp<P>)

Performs the -= operation. Read more
source§

impl<const P: u64> SubAssign for Fp<P>

source§

fn sub_assign(&mut self, rhs: Fp<P>)

Performs the -= operation. Read more
source§

impl<'a, const P: u64> Sum<&'a Fp<P>> for Fp<P>

source§

fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by “summing up” -the items.
source§

impl<const P: u64> Sum for Fp<P>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Takes an iterator and generates Self from the elements by “summing up” -the items.
source§

impl<const P: u64> Copy for Fp<P>

source§

impl<const P: u64> Eq for Fp<P>

source§

impl<const P: u64> StructuralPartialEq for Fp<P>

Auto Trait Implementations§

§

impl<const P: u64> Freeze for Fp<P>

§

impl<const P: u64> RefUnwindSafe for Fp<P>

§

impl<const P: u64> Send for Fp<P>

§

impl<const P: u64> Sync for Fp<P>

§

impl<const P: u64> Unpin for Fp<P>

§

impl<const P: u64> UnwindSafe for Fp<P>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl<const P: u64> Add<&Fp<P>> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Fp<P>) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64> Add<&Fp<P>> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: &Fp<P>) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Add<T> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Add<T> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the + operator.
source§

fn add(self, rhs: T) -> Self::Output

Performs the + operation. Read more
source§

impl<const P: u64> AddAssign<&Fp<P>> for Fp<P>

source§

fn add_assign(&mut self, rhs: &Fp<P>)

Performs the += operation. Read more
source§

impl<const P: u64> AddAssign<Fp<P>> for Fp<P>

source§

fn add_assign(&mut self, rhs: Fp<P>)

Performs the += operation. Read more
source§

impl<const P: u64> Clone for Fp<P>

source§

fn clone(&self) -> Fp<P>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const P: u64> Debug for Fp<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const P: u64> Display for Fp<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const P: u64> Div<&Fp<P>> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Fp<P>) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64> Div<&Fp<P>> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: &Fp<P>) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Div<T> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Div<T> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the / operator.
source§

fn div(self, rhs: T) -> Self::Output

Performs the / operation. Read more
source§

impl<const P: u64> DivAssign<&Fp<P>> for Fp<P>

source§

fn div_assign(&mut self, rhs: &Fp<P>)

Performs the /= operation. Read more
source§

impl<const P: u64> DivAssign<Fp<P>> for Fp<P>

source§

fn div_assign(&mut self, rhs: Fp<P>)

Performs the /= operation. Read more
source§

impl<const P: u64> From<i128> for Fp<P>

source§

fn from(x: i128) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i16> for Fp<P>

source§

fn from(x: i16) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i32> for Fp<P>

source§

fn from(x: i32) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i64> for Fp<P>

source§

fn from(x: i64) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<i8> for Fp<P>

source§

fn from(x: i8) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<isize> for Fp<P>

source§

fn from(x: isize) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u128> for Fp<P>

source§

fn from(x: u128) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u16> for Fp<P>

source§

fn from(x: u16) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u32> for Fp<P>

source§

fn from(x: u32) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u64> for Fp<P>

source§

fn from(x: u64) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<u8> for Fp<P>

source§

fn from(x: u8) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> From<usize> for Fp<P>

source§

fn from(x: usize) -> Self

Converts to this type from the input type.
source§

impl<const P: u64> Hash for Fp<P>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<const P: u64> Mul<&Fp<P>> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Fp<P>) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64> Mul<&Fp<P>> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Fp<P>) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Mul<T> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Mul<T> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: T) -> Self::Output

Performs the * operation. Read more
source§

impl<const P: u64> MulAssign<&Fp<P>> for Fp<P>

source§

fn mul_assign(&mut self, rhs: &Fp<P>)

Performs the *= operation. Read more
source§

impl<const P: u64> MulAssign<Fp<P>> for Fp<P>

source§

fn mul_assign(&mut self, rhs: Fp<P>)

Performs the *= operation. Read more
source§

impl<const P: u64> Neg for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl<const P: u64> PartialEq<Fp<P>> for Fp<P>

source§

fn eq(&self, other: &Fp<P>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<'a, const P: u64> Product<&'a Fp<P>> for Fp<P>

source§

fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<const P: u64> Product<Fp<P>> for Fp<P>

source§

fn product<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +multiplying the items.
source§

impl<const P: u64> Sub<&Fp<P>> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Fp<P>) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64> Sub<&Fp<P>> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: &Fp<P>) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Sub<T> for &Fp<P>

§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64, T: Into<Fp<P>>> Sub<T> for Fp<P>

§

type Output = Fp<P>

The resulting type after applying the - operator.
source§

fn sub(self, rhs: T) -> Self::Output

Performs the - operation. Read more
source§

impl<const P: u64> SubAssign<&Fp<P>> for Fp<P>

source§

fn sub_assign(&mut self, rhs: &Fp<P>)

Performs the -= operation. Read more
source§

impl<const P: u64> SubAssign<Fp<P>> for Fp<P>

source§

fn sub_assign(&mut self, rhs: Fp<P>)

Performs the -= operation. Read more
source§

impl<'a, const P: u64> Sum<&'a Fp<P>> for Fp<P>

source§

fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +“summing up” the items.
source§

impl<const P: u64> Sum<Fp<P>> for Fp<P>

source§

fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

Method which takes an iterator and generates Self from the elements by +“summing up” the items.
source§

impl<const P: u64> Copy for Fp<P>

source§

impl<const P: u64> Eq for Fp<P>

source§

impl<const P: u64> StructuralEq for Fp<P>

source§

impl<const P: u64> StructuralPartialEq for Fp<P>

Auto Trait Implementations§

§

impl<const P: u64> RefUnwindSafe for Fp<P>

§

impl<const P: u64> Send for Fp<P>

§

impl<const P: u64> Sync for Fp<P>

§

impl<const P: u64> Unpin for Fp<P>

§

impl<const P: u64> UnwindSafe for Fp<P>

Blanket Implementations§

source§

impl<T> Any for Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for Twhere + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/fp/trait.PrimitiveRoot.html b/fp/trait.PrimitiveRoot.html index 566d7740..cb4786d4 100644 --- a/fp/trait.PrimitiveRoot.html +++ b/fp/trait.PrimitiveRoot.html @@ -1,4 +1,4 @@ -PrimitiveRoot in fp - RustPrimitiveRoot in fp - Rust
-

Trait fp::PrimitiveRoot

source ·
pub trait PrimitiveRoot<const P: u64> {
+

Trait fp::PrimitiveRoot

source ·
pub trait PrimitiveRoot<const P: u64> {
     const VALUE: Fp<P>;
 }
Expand description

A primitive root of unity.

-

Required Associated Constants§

source

const VALUE: Fp<P>

A primitive root of unity.

-

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl PrimitiveRoot<924844033> for ()

source§

const VALUE: Fp<924844033> = _

source§

impl PrimitiveRoot<998244353> for ()

source§

const VALUE: Fp<998244353> = _

source§

impl PrimitiveRoot<1012924417> for ()

source§

const VALUE: Fp<1012924417> = _

Implementors§

\ No newline at end of file +

Required Associated Constants§

source

const VALUE: Fp<P>

A primitive root of unity.

+

Implementations on Foreign Types§

source§

impl PrimitiveRoot<998244353> for ()

source§

const VALUE: Fp<998244353> = _

source§

impl PrimitiveRoot<1012924417> for ()

source§

const VALUE: Fp<1012924417> = _

source§

impl PrimitiveRoot<924844033> for ()

source§

const VALUE: Fp<924844033> = _

Implementors§

\ No newline at end of file diff --git a/fps/all.html b/fps/all.html index 5dd51120..968d74bd 100644 --- a/fps/all.html +++ b/fps/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
-
\ No newline at end of file +
\ No newline at end of file diff --git a/fps/fn.fps_deriv.html b/fps/fn.fps_deriv.html index 9fc598bb..2dcd242a 100644 --- a/fps/fn.fps_deriv.html +++ b/fps/fn.fps_deriv.html @@ -1,4 +1,4 @@ -fps_deriv in fps - Rustfps_deriv in fps - Rust
-

Function fps::fps_deriv

source ·
pub fn fps_deriv<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the derivative of a formal power series.

-

§Complexity

+

Function fps::fps_deriv

source ·
pub fn fps_deriv<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the derivative of a formal power series.

+

Complexity

$O(d)$

-

§Examples

+

Examples

use fp::fp;
 use fps::fps;
 let g = fps::fps_deriv::<998244353>(fps![1, 2], 4);
diff --git a/fps/fn.fps_exp.html b/fps/fn.fps_exp.html
index 01259005..95c4bb3b 100644
--- a/fps/fn.fps_exp.html
+++ b/fps/fn.fps_exp.html
@@ -1,4 +1,4 @@
-fps_exp in fps - Rustfps_exp in fps - Rust
-

Function fps::fps_exp

source ·
pub fn fps_exp<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the exponential of a formal power series.

+

Function fps::fps_exp

source ·
pub fn fps_exp<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the exponential of a formal power series.

Note that $$ \exp g = 1 + g + \frac{1}{2!}g^2 + \frac{1}{3!}g^3 + \dots $$

-

§Requirements

+

Requirements

$f_0 = 0$, $d \le P$

-

§Complexity

+

Complexity

It takes $\left(10+2/3\right)\mathcal{M}(d) + O(d)$ time because it performs a logarithm $(4\mathcal{M}(d))$ and four double-precision FFTs$(\frac{4}{3}\mathcal{M}(d))$ in each iteration.

\ No newline at end of file diff --git a/fps/fn.fps_int.html b/fps/fn.fps_int.html index e751c2ba..11de4f91 100644 --- a/fps/fn.fps_int.html +++ b/fps/fn.fps_int.html @@ -1,4 +1,4 @@ -fps_int in fps - Rustfps_int in fps - Rust
-

Function fps::fps_int

source ·
pub fn fps_int<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the integral of a formal power series with zero constant term.

-

§Complexity

+

Function fps::fps_int

source ·
pub fn fps_int<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the integral of a formal power series with zero constant term.

+

Complexity

$O(d)$

-

§Examples

+

Examples

use fp::fp;
 use fps::fps;
 let g = fps::fps_int::<998244353>(&fps![1, 2], 4);
diff --git a/fps/fn.fps_inv.html b/fps/fn.fps_inv.html
index 4dc88509..6b312e49 100644
--- a/fps/fn.fps_inv.html
+++ b/fps/fn.fps_inv.html
@@ -1,4 +1,4 @@
-fps_inv in fps - Rustfps_inv in fps - Rust
-

Function fps::fps_inv

source ·
pub fn fps_inv<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the multiplicative inverse of a formal power series.

-

§Requirements

+

Function fps::fps_inv

source ·
pub fn fps_inv<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the multiplicative inverse of a formal power series.

+

Requirements

$f_0 \ne 0$

-

§Complexity

+

Complexity

It takes $2\mathcal{M}(d) + O(d)$ time because it performs three double-precision FFTs $(\mathcal{M}(d))$ in each iteration.

-

§Examples

+

Examples

use fp::fp;
 use fps::fps_inv;
 let g = fps_inv::<998244353>(&[fp!(1), fp!(2)], 4);
diff --git a/fps/fn.fps_log.html b/fps/fn.fps_log.html
index 747a1169..cf6920a8 100644
--- a/fps/fn.fps_log.html
+++ b/fps/fn.fps_log.html
@@ -1,4 +1,4 @@
-fps_log in fps - Rustfps_log in fps - Rust
-

Function fps::fps_log

source ·
pub fn fps_log<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the logarithm of a formal power series.

+

Function fps::fps_log

source ·
pub fn fps_log<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the logarithm of a formal power series.

Note that

$$ \log (1 + g) = g - \frac{1}{2}g^2 + \frac{1}{3}g^3 - \dots $$

In fact, log in $F[[x]]$ is undefined because the fractions that appear in this expression are not guaranteed to exist. However, we take advantage of the fact that precision is usually smaller than $P$ and assume that it is defined by mod $x^P$.

-

§Requirements

+

Requirements

$f_0 = 1$, $d \le P$

-

§Complexity

+

Complexity

It takes $3\mathcal{M}(d) + O(d)$ time because it performs a multiplication $(\mathcal{M}(d))$, a derivation ($O(d)$), and an inversion $(2\mathcal{M}(d))$.

-

§Examples

+

Examples

use fp::fp;
 use fps::fps_log;
 let g = fps_log::<998244353>(&[fp!(1), fp!(2)], 4);
diff --git a/fps/fn.fps_pow.html b/fps/fn.fps_pow.html
index ba82551d..72544ec9 100644
--- a/fps/fn.fps_pow.html
+++ b/fps/fn.fps_pow.html
@@ -1,4 +1,4 @@
-fps_pow in fps - Rustfps_pow in fps - Rust
-

Function fps::fps_pow

source ·
pub fn fps_pow<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    pow: usize,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Resutns the $n$-th power of a formal power series.

+

Function fps::fps_pow

source ·
pub fn fps_pow<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    pow: usize,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Resutns the $n$-th power of a formal power series.

Note that

$$ f^a = \exp (a \log f) $$

-

§Requirements

+

Requirements

$d \le P$

-

§Complexity

+

Complexity

It takes $(13+2/3)\mathcal{M}(d) + O(d + \log P)$ time because it performs a logarithm $(3\mathcal{M}(d))$ and a exponentiation $((10+2/3)\mathcal{M}(d))$.

-

§Examples

+

Examples

use fp::fp;
 use fps::fps;
 use fps::fps_pow;
diff --git a/fps/fn.fps_sqrt.html b/fps/fn.fps_sqrt.html
index 35c92b25..6b304d18 100644
--- a/fps/fn.fps_sqrt.html
+++ b/fps/fn.fps_sqrt.html
@@ -1,4 +1,4 @@
-fps_sqrt in fps - Rustfps_sqrt in fps - Rust
-

Function fps::fps_sqrt

source ·
pub fn fps_sqrt<const P: u64>(
-    f: impl AsRef<[Fp<P>]>,
-    precision: usize,
-) -> Vec<Fp<P>>
where - (): PrimitiveRoot<P>,
Expand description

Returns the square root of a formal power series.

-

§Requirements

+

Function fps::fps_sqrt

source ·
pub fn fps_sqrt<const P: u64>(
+    f: impl AsRef<[Fp<P>]>,
+    precision: usize
+) -> Vec<Fp<P>>where
+    (): PrimitiveRoot<P>,
Expand description

Returns the square root of a formal power series.

+

Requirements

$f_0 = 1$

-

§Complexity

+

Complexity

It takes $6\mathcal{M}(d) + O(d)$ time because it performs a multiplication $(\mathcal{M}(d))$, an inversion $(2\mathcal{M}(d))$ in each iteration.

and the sum of the above is $3\mathcal{M}(d)$.

-

§Examples

+

Examples

use fp::fp;
 use fps::fps_sqrt;
 let g = fps_sqrt::<998244353>(&[fp!(1), fp!(2)], 4);
diff --git a/fps/index.html b/fps/index.html
index e60f5e12..656eeb49 100644
--- a/fps/index.html
+++ b/fps/index.html
@@ -1,4 +1,4 @@
-fps - Rustfps - Rust
-

Crate fps

source ·
Expand description

Arithmetic of formal power series.

-

§Data representation

+

Crate fps

source ·
Expand description

Arithmetic of formal power series.

+

Data representation

In fact a formal power series $f = f_0 x + f_1 x + f_2 x^2 + \dots \in \mathbb{F}_p[[x]]$ has an infinite number of coefficients, but it is too hard for computers to handle it. Therefore, we represent a formal power series $f$ as a finite sequence $f_0, f_1, \dots, f_{d-1}$ of length $d$. This $d$ is called precision. @@ -45,7 +45,7 @@

\bigsqcup_{d=0}^\infty \mathbb{F}_p[x] / (x^d) $$

Especially, any two intances of different precisions are assumed not to be equal to each other.

-

§Note on complexity

+

Note on complexity

We only consider cases where the precision is a power of 2. If the precision is not a power of 2, the complexity is twice as bad as otherwise.

We may assume the complexity $\mathcal{M}(d)$ of multiplication of two polynomials of degree $d$ and @@ -59,7 +59,7 @@

§<

If each step in Newton’s method is performed in $a\mathcal{M}(d)$ time (where $d$ is the resulting precision of each iteration), then the total complexity is $2a\mathcal{M}(d) + O(d)$.

We omit $O(d)$ terms when it is not important.

-

§Table of contents

+

Table of contents

$O(d)$ is omitted here.

@@ -69,4 +69,4 @@

§

NameComplexity
fps_inv$2\mathcal{M}(d)$
fps_log$3\mathcal{M}(d)$
fps_exp$(10+2/3)\mathcal{M}(d)$
-

Macros§

  • Define a formal power series in the same way as vec!.

Functions§

  • Returns the derivative of a formal power series.
  • Returns the exponential of a formal power series.
  • Returns the integral of a formal power series with zero constant term.
  • Returns the multiplicative inverse of a formal power series.
  • Returns the logarithm of a formal power series.
  • Resutns the $n$-th power of a formal power series.
  • Returns the square root of a formal power series.
\ No newline at end of file +

Macros

  • Define a formal power series in the same way as vec!.

Functions

  • Returns the derivative of a formal power series.
  • Returns the exponential of a formal power series.
  • Returns the integral of a formal power series with zero constant term.
  • Returns the multiplicative inverse of a formal power series.
  • Returns the logarithm of a formal power series.
  • Resutns the $n$-th power of a formal power series.
  • Returns the square root of a formal power series.
\ No newline at end of file diff --git a/fps/macro.fps.html b/fps/macro.fps.html index def4d25a..5a9fce1b 100644 --- a/fps/macro.fps.html +++ b/fps/macro.fps.html @@ -1,4 +1,4 @@ -fps in fps - Rustfps in fps - Rust
-

Macro fps::fps

source ·
macro_rules! fps {
+

Macro fps::fps

source ·
macro_rules! fps {
     () => { ... };
     ($elem:expr; $n:expr) => { ... };
     ($($x:expr),+ $(,)?) => { ... };
 }
Expand description

Define a formal power series in the same way as vec!.

This calls [Fp::from] for each element.

-

§Examples

+

Examples

use fp::fp;
 use fp::Fp;
 use fps::fps;
diff --git a/gco/all.html b/gco/all.html
index 7fbfcb47..e9b8b789 100644
--- a/gco/all.html
+++ b/gco/all.html
@@ -1,4 +1,4 @@
-List of all items in this crateList of all items in this crate
-

List of all items

Structs

\ No newline at end of file +

List of all items

Structs

\ No newline at end of file diff --git a/gco/index.html b/gco/index.html index aa6f8294..0665684c 100644 --- a/gco/index.html +++ b/gco/index.html @@ -1,4 +1,4 @@ -gco - Rustgco - Rust
-

Crate gco

source ·
Expand description

Solve a submodular graph cut optimizaion problem of degree $\le 2$

+

Crate gco

source ·
Expand description

Solve a submodular graph cut optimizaion problem of degree $\le 2$

As in Graph cut optimization - Wikipedia, any pseudo-boolean function $f: \lbrace 0, 1 \rbrace ^ n → \mathbb R$ can be written uniquely as a multi-linear polynominal:

@@ -48,13 +48,13 @@
  • $\mathop { \mathrm { deg } } f \le 2$
  • $f$ is submodular $a _ { i, i } + a _ { j , j } \le a _ { i, j } + a _ { j, i }$
  • -

    §Dependencies

    +

    Dependencies

    [dinic]

    -

    §Usages

    +

    Usages

    • Use two methods unary, binary to add terms.
    • -
    • The cost must has a type i64.
    • -
    • The result has a type bool. ($0$ is false, $1$ is true)
    • +
    • The cost must has a type i64.
    • +
    • The result has a type bool. ($0$ is false, $1$ is true)
    • We cannot automatically “filp” variables.

    This example code shows that a function

    @@ -73,4 +73,4 @@

    §Usages

    let result = gco.solve(); assert_eq!(result.value, 30); assert_eq!(&result.args, &[true, true]);
    -

    Structs§

    • A solver of graph cut optimization problems.
    • The minimum value and and an argmin of $f$.
    \ No newline at end of file +

    Structs

    • A solver of graph cut optimization problems.
    • The minimum value and and an argmin of $f$.
    \ No newline at end of file diff --git a/gco/struct.Gco.html b/gco/struct.Gco.html index b0bdf66c..db734c14 100644 --- a/gco/struct.Gco.html +++ b/gco/struct.Gco.html @@ -1,4 +1,4 @@ -Gco in gco - RustGco in gco - Rust
    -

    Struct gco::Gco

    source ·
    pub struct Gco { /* private fields */ }
    Expand description

    A solver of graph cut optimization problems.

    -

    Implementations§

    source§

    impl Gco

    source

    pub fn new(n: usize) -> Self

    Initialize a solver with $n$ terms.

    -
    source

    pub fn unary(&mut self, i: usize, cost: [i64; 2])

    Add a unary term.

    -
    §Effects
    +

    Struct gco::Gco

    source ·
    pub struct Gco { /* private fields */ }
    Expand description

    A solver of graph cut optimization problems.

    +

    Implementations§

    source§

    impl Gco

    source

    pub fn new(n: usize) -> Self

    Initialize a solver with $n$ terms.

    +
    source

    pub fn unary(&mut self, i: usize, cost: [i64; 2])

    Add a unary term.

    +
    Effects

    Add a unary term $c _ 0 ( 1 - x _ i ) + c _ 1 x _ i$ to $f$.

    -
    §Examples
    +
    Examples
    gco.unary(0, [0, 10]);
     gco.unary(1, [-40, 0]);
    -
    source

    pub fn binary(&mut self, ij: [usize; 2], cost: [[i64; 2]; 2])

    Add a binary term.

    -
    §Effects
    +
    source

    pub fn binary(&mut self, ij: [usize; 2], cost: [[i64; 2]; 2])

    Add a binary term.

    +
    Effects

    Add the following binary term to $f$:

    $$ c _ { 0, 0 } ( 1 - x _ i) ( 1 - x _ j ) @@ -49,24 +49,24 @@

    §Effects
    + c _ { 1, 0 } x _ i ( 1 - x _ j ) + c _ { 1, 1 } x _ i x _ j $$

    -
    §Panics
    +
    Panics

    If this binary term is not submodular.

    -
    §Examples
    +
    Examples
    gco.binary([0, 1], [[0, 10], [0, 0]]); // Costs 10 when x0 = 0, x1 = 1
    -
    source

    pub fn solve(&self) -> GcoResult

    Returns the minimum value and an argmin of $f$.

    -

    Trait Implementations§

    source§

    impl Clone for Gco

    source§

    fn clone(&self) -> Gco

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Gco

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Gco

    source§

    fn default() -> Gco

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Gco

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Gco

    source§

    fn eq(&self, other: &Gco) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for Gco

    Auto Trait Implementations§

    §

    impl Freeze for Gco

    §

    impl RefUnwindSafe for Gco

    §

    impl Send for Gco

    §

    impl Sync for Gco

    §

    impl Unpin for Gco

    §

    impl UnwindSafe for Gco

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn solve(&self) -> GcoResult

    Returns the minimum value and an argmin of $f$.

    +

    Trait Implementations§

    source§

    impl Clone for Gco

    source§

    fn clone(&self) -> Gco

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Gco

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Gco

    source§

    fn default() -> Gco

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Gco

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Gco> for Gco

    source§

    fn eq(&self, other: &Gco) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for Gco

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Gco

    §

    impl Send for Gco

    §

    impl Sync for Gco

    §

    impl Unpin for Gco

    §

    impl UnwindSafe for Gco

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gco/struct.GcoResult.html b/gco/struct.GcoResult.html index 64ba67d9..9001371b 100644 --- a/gco/struct.GcoResult.html +++ b/gco/struct.GcoResult.html @@ -1,4 +1,4 @@ -GcoResult in gco - RustGcoResult in gco - Rust
    -

    Struct gco::GcoResult

    source ·
    pub struct GcoResult {
    -    pub value: i64,
    -    pub args: Vec<bool>,
    +

    Struct gco::GcoResult

    source ·
    pub struct GcoResult {
    +    pub value: i64,
    +    pub args: Vec<bool>,
     }
    Expand description

    The minimum value and and an argmin of $f$.

    • $x _ i = 0 \Leftrightarrow \mathtt { args } _ i = \mathtt { false }$
    • $x _ i = 1 \Leftrightarrow \mathtt { args } _ i = \mathtt { true }$
    -

    Fields§

    §value: i64

    The minimum value

    -
    §args: Vec<bool>

    An argmin

    -

    Trait Implementations§

    source§

    impl Clone for GcoResult

    source§

    fn clone(&self) -> GcoResult

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GcoResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for GcoResult

    source§

    fn default() -> GcoResult

    Returns the “default value” for a type. Read more
    source§

    impl Hash for GcoResult

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for GcoResult

    source§

    fn eq(&self, other: &GcoResult) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for GcoResult

    source§

    impl StructuralPartialEq for GcoResult

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §value: i64

    The minimum value

    +
    §args: Vec<bool>

    An argmin

    +

    Trait Implementations§

    source§

    impl Clone for GcoResult

    source§

    fn clone(&self) -> GcoResult

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for GcoResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for GcoResult

    source§

    fn default() -> GcoResult

    Returns the “default value” for a type. Read more
    source§

    impl Hash for GcoResult

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<GcoResult> for GcoResult

    source§

    fn eq(&self, other: &GcoResult) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for GcoResult

    source§

    impl StructuralEq for GcoResult

    source§

    impl StructuralPartialEq for GcoResult

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/all.html b/gridnei/all.html deleted file mode 100644 index 2bdbddf2..00000000 --- a/gridnei/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -
    \ No newline at end of file diff --git a/gridnei/fn.grid4.html b/gridnei/fn.grid4.html deleted file mode 100644 index 8ffe2cb6..00000000 --- a/gridnei/fn.grid4.html +++ /dev/null @@ -1,42 +0,0 @@ -grid4 in gridnei - Rust - - - - - -

    Function gridnei::grid4

    source ·
    pub fn grid4(i: usize, j: usize, h: usize, w: usize) -> Grid4 
    Expand description

    隣接4マスを返すイテレータを構築します。

    -

    §Examples

    -
    use gridnei::grid4;
    -
    -let result = grid4(2, 1, 4, 10).collect::<Vec<_>>();
    -let expected = vec![(1, 1), (2, 0), (2, 2), (3, 1)];
    -assert_eq!(&result, &expected);
    -
    \ No newline at end of file diff --git a/gridnei/fn.grid4encode.html b/gridnei/fn.grid4encode.html deleted file mode 100644 index f85bcb93..00000000 --- a/gridnei/fn.grid4encode.html +++ /dev/null @@ -1,42 +0,0 @@ -grid4encode in gridnei - Rust - - - - - -

    Function gridnei::grid4encode

    source ·
    pub fn grid4encode(x: usize, h: usize, w: usize) -> Encode<Grid4> 
    Expand description

    隣接4マスをエンコードして返すイテレータを構築します。

    -

    §Examples

    -
    use gridnei::grid4encode;
    -
    -let result = grid4encode(21, 4, 10).collect::<Vec<_>>();
    -let expected = vec![11, 20, 22, 31];
    -assert_eq!(&result, &expected);
    -
    \ No newline at end of file diff --git a/gridnei/index.html b/gridnei/index.html deleted file mode 100644 index 9f7fbf0e..00000000 --- a/gridnei/index.html +++ /dev/null @@ -1,80 +0,0 @@ -gridnei - Rust - - - - - -

    Crate gridnei

    source ·
    Expand description

    グリッドの様々な隣接セルを取得するライブラリです。

    -

    §隣接4マス

    -

    問題例: AtCoder 典型 90 問 072 - Loop Railway Plan(★4)

    -

    隣接4マスの取得だけ、専用の関数を用意しています。

    - -
    use gridnei::grid4;
    -use gridnei::grid4encode;
    -
    -let result = grid4(1, 0, 3, 10).collect::<Vec<_>>();
    -let expected = vec![(0, 0), (1, 1), (2, 0)];
    -assert_eq!(result, expected);
    -
    -let result = grid4encode(10, 3, 10).collect::<Vec<_>>();
    -let expected = vec![0, 11, 20];
    -assert_eq!(result, expected);
    -

    §アレンジ

    -

    8マス以下ならこのように作れます。

    - -
    use gridnei::Encode;
    -use gridnei::Grid8;
    -
    -fn knight(i: isize, j: isize) -> [(isize, isize); 8] {
    -    [
    -        (i - 1, j - 2),
    -        (i + 1, j - 2),
    -        (i - 2, j - 1),
    -        (i + 2, j - 1),
    -        (i - 2, j + 1),
    -        (i + 2, j + 1),
    -        (i - 1, j + 2),
    -        (i + 1, j + 2),
    -    ]
    -}
    -
    -// x.x........
    -// ...x.......
    -// .o.........
    -// ...x.......
    -let result = Grid8::from_fn(2, 1, 4, 10, knight).collect::<Vec<_>>();
    -let expected = vec![(0, 0), (0, 2), (1, 3), (3, 3)];
    -assert_eq!(&result, &expected);
    -
    -let result = Encode::<Grid8>::from_fn(21, 4, 10, knight).collect::<Vec<_>>();
    -let expected = vec![0, 2, 13, 33];
    -assert_eq!(&result, &expected);
    -

    Macros§

    Structs§

    Traits§

    Functions§

    • 隣接4マスを返すイテレータを構築します。
    • 隣接4マスをエンコードして返すイテレータを構築します。
    \ No newline at end of file diff --git a/gridnei/macro.grid_iter!.html b/gridnei/macro.grid_iter!.html deleted file mode 100644 index a5a8e0d8..00000000 --- a/gridnei/macro.grid_iter!.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to macro.grid_iter.html...

    - - - \ No newline at end of file diff --git a/gridnei/macro.grid_iter.html b/gridnei/macro.grid_iter.html deleted file mode 100644 index b0d0790f..00000000 --- a/gridnei/macro.grid_iter.html +++ /dev/null @@ -1,64 +0,0 @@ -grid_iter in gridnei - Rust - - - - - -

    Macro gridnei::grid_iter

    source ·
    macro_rules! grid_iter {
    -    ($len:expr, $iter:ident $(,)?) => { ... };
    -}
    Expand description

    新しい Grid* を定義して、GridIterator を実装します。

    -

    §Examples

    -
    use gridnei::grid_iter;
    -grid_iter! { 17, Grid17 }
    -
    -let _ = Grid17::from_fn(10, 3, 20, 8, |i, j| {
    -    [
    -        (i, j),
    -        (i, j + 1),
    -        (i, j + 2),
    -        (i, j + 3),
    -        (i, j + 4),
    -        (i, j + 5),
    -        (i, j + 6),
    -        (i, j + 7),
    -        (i, j + 8),
    -        (i, j + 9),
    -        (i, j + 10),
    -        (i, j + 11),
    -        (i, j + 12),
    -        (i, j + 13),
    -        (i, j + 14),
    -        (i, j + 15),
    -        (i, j + 15),
    -    ]
    -})
    -.collect::<Vec<_>>();
    -
    \ No newline at end of file diff --git a/gridnei/sidebar-items.js b/gridnei/sidebar-items.js deleted file mode 100644 index bd2e036f..00000000 --- a/gridnei/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["grid4","grid4encode"],"macro":["grid_iter"],"struct":["Encode","Grid0","Grid1","Grid2","Grid3","Grid4","Grid5","Grid6","Grid7","Grid8"],"trait":["GridIterator"]}; \ No newline at end of file diff --git a/gridnei/struct.Encode.html b/gridnei/struct.Encode.html deleted file mode 100644 index 49600284..00000000 --- a/gridnei/struct.Encode.html +++ /dev/null @@ -1,257 +0,0 @@ -Encode in gridnei - Rust - - - - - -

    Struct gridnei::Encode

    source ·
    pub struct Encode<I>(/* private fields */);
    Expand description

    座標をエンコードした形で返すイテレータです。

    -

    §構築する方法

    - -

    §Examples

    -
    use gridnei::Encode;
    -use gridnei::Grid2;
    -
    -let result =
    -    Encode::<Grid2>::from_fn(42, 1, 100, |i, j| [(i, j - 1), (i, j + 1)]).collect::<Vec<_>>();
    -let expected = vec![41, 43];
    -assert_eq!(&result, &expected);
    -

    Implementations§

    source§

    impl<I: GridIterator> Encode<I>

    source

    pub fn new(i: I) -> Self

    source

    pub fn from_fn<F>(x: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> I::Array,

    Trait Implementations§

    source§

    impl<I: GridIterator> DoubleEndedIterator for Encode<I>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<I: GridIterator> Iterator for Encode<I>

    source§

    type Item = usize

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<I> Freeze for Encode<I>
    where - I: Freeze,

    §

    impl<I> RefUnwindSafe for Encode<I>
    where - I: RefUnwindSafe,

    §

    impl<I> Send for Encode<I>
    where - I: Send,

    §

    impl<I> Sync for Encode<I>
    where - I: Sync,

    §

    impl<I> Unpin for Encode<I>
    where - I: Unpin,

    §

    impl<I> UnwindSafe for Encode<I>
    where - I: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid0.html b/gridnei/struct.Grid0.html deleted file mode 100644 index a0570ccf..00000000 --- a/gridnei/struct.Grid0.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid0 in gridnei - Rust - - - - - -

    Struct gridnei::Grid0

    source ·
    pub struct Grid0 { /* private fields */ }

    Implementations§

    source§

    impl Grid0

    source

    pub fn new(data: [(isize, isize); 0], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 0], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid0

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid0

    source§

    type Array = [(isize, isize); 0]

    source§

    const LEN: usize = 0usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid0

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid0

    §

    impl RefUnwindSafe for Grid0

    §

    impl Send for Grid0

    §

    impl Sync for Grid0

    §

    impl Unpin for Grid0

    §

    impl UnwindSafe for Grid0

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid1.html b/gridnei/struct.Grid1.html deleted file mode 100644 index c4ebd6ce..00000000 --- a/gridnei/struct.Grid1.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid1 in gridnei - Rust - - - - - -

    Struct gridnei::Grid1

    source ·
    pub struct Grid1 { /* private fields */ }

    Implementations§

    source§

    impl Grid1

    source

    pub fn new(data: [(isize, isize); 1], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 1], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid1

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid1

    source§

    type Array = [(isize, isize); 1]

    source§

    const LEN: usize = 1usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid1

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid1

    §

    impl RefUnwindSafe for Grid1

    §

    impl Send for Grid1

    §

    impl Sync for Grid1

    §

    impl Unpin for Grid1

    §

    impl UnwindSafe for Grid1

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid2.html b/gridnei/struct.Grid2.html deleted file mode 100644 index 90787ccb..00000000 --- a/gridnei/struct.Grid2.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid2 in gridnei - Rust - - - - - -

    Struct gridnei::Grid2

    source ·
    pub struct Grid2 { /* private fields */ }

    Implementations§

    source§

    impl Grid2

    source

    pub fn new(data: [(isize, isize); 2], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 2], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid2

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid2

    source§

    type Array = [(isize, isize); 2]

    source§

    const LEN: usize = 2usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid2

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid2

    §

    impl RefUnwindSafe for Grid2

    §

    impl Send for Grid2

    §

    impl Sync for Grid2

    §

    impl Unpin for Grid2

    §

    impl UnwindSafe for Grid2

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid3.html b/gridnei/struct.Grid3.html deleted file mode 100644 index 7347fc62..00000000 --- a/gridnei/struct.Grid3.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid3 in gridnei - Rust - - - - - -

    Struct gridnei::Grid3

    source ·
    pub struct Grid3 { /* private fields */ }

    Implementations§

    source§

    impl Grid3

    source

    pub fn new(data: [(isize, isize); 3], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 3], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid3

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid3

    source§

    type Array = [(isize, isize); 3]

    source§

    const LEN: usize = 3usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid3

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid3

    §

    impl RefUnwindSafe for Grid3

    §

    impl Send for Grid3

    §

    impl Sync for Grid3

    §

    impl Unpin for Grid3

    §

    impl UnwindSafe for Grid3

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid4.html b/gridnei/struct.Grid4.html deleted file mode 100644 index 9c052454..00000000 --- a/gridnei/struct.Grid4.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid4 in gridnei - Rust - - - - - -

    Struct gridnei::Grid4

    source ·
    pub struct Grid4 { /* private fields */ }

    Implementations§

    source§

    impl Grid4

    source

    pub fn new(data: [(isize, isize); 4], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 4], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid4

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid4

    source§

    type Array = [(isize, isize); 4]

    source§

    const LEN: usize = 4usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid4

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid4

    §

    impl RefUnwindSafe for Grid4

    §

    impl Send for Grid4

    §

    impl Sync for Grid4

    §

    impl Unpin for Grid4

    §

    impl UnwindSafe for Grid4

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid5.html b/gridnei/struct.Grid5.html deleted file mode 100644 index 7459f55d..00000000 --- a/gridnei/struct.Grid5.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid5 in gridnei - Rust - - - - - -

    Struct gridnei::Grid5

    source ·
    pub struct Grid5 { /* private fields */ }

    Implementations§

    source§

    impl Grid5

    source

    pub fn new(data: [(isize, isize); 5], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 5], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid5

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid5

    source§

    type Array = [(isize, isize); 5]

    source§

    const LEN: usize = 5usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid5

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid5

    §

    impl RefUnwindSafe for Grid5

    §

    impl Send for Grid5

    §

    impl Sync for Grid5

    §

    impl Unpin for Grid5

    §

    impl UnwindSafe for Grid5

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid6.html b/gridnei/struct.Grid6.html deleted file mode 100644 index 50670ddf..00000000 --- a/gridnei/struct.Grid6.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid6 in gridnei - Rust - - - - - -

    Struct gridnei::Grid6

    source ·
    pub struct Grid6 { /* private fields */ }

    Implementations§

    source§

    impl Grid6

    source

    pub fn new(data: [(isize, isize); 6], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 6], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid6

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid6

    source§

    type Array = [(isize, isize); 6]

    source§

    const LEN: usize = 6usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid6

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid6

    §

    impl RefUnwindSafe for Grid6

    §

    impl Send for Grid6

    §

    impl Sync for Grid6

    §

    impl Unpin for Grid6

    §

    impl UnwindSafe for Grid6

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid7.html b/gridnei/struct.Grid7.html deleted file mode 100644 index 748f42cd..00000000 --- a/gridnei/struct.Grid7.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid7 in gridnei - Rust - - - - - -

    Struct gridnei::Grid7

    source ·
    pub struct Grid7 { /* private fields */ }

    Implementations§

    source§

    impl Grid7

    source

    pub fn new(data: [(isize, isize); 7], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 7], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid7

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid7

    source§

    type Array = [(isize, isize); 7]

    source§

    const LEN: usize = 7usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid7

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid7

    §

    impl RefUnwindSafe for Grid7

    §

    impl Send for Grid7

    §

    impl Sync for Grid7

    §

    impl Unpin for Grid7

    §

    impl UnwindSafe for Grid7

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/struct.Grid8.html b/gridnei/struct.Grid8.html deleted file mode 100644 index ee567d57..00000000 --- a/gridnei/struct.Grid8.html +++ /dev/null @@ -1,256 +0,0 @@ -Grid8 in gridnei - Rust - - - - - -

    Struct gridnei::Grid8

    source ·
    pub struct Grid8 { /* private fields */ }

    Implementations§

    source§

    impl Grid8

    source

    pub fn new(data: [(isize, isize); 8], h: usize, w: usize) -> Self

    source

    pub fn from_fn( - i: usize, - j: usize, - h: usize, - w: usize, - f: impl FnMut(isize, isize) -> [(isize, isize); 8], -) -> Self

    source

    pub fn encode(self) -> Encode<Self>

    Trait Implementations§

    source§

    impl DoubleEndedIterator for Grid8

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl GridIterator for Grid8

    source§

    type Array = [(isize, isize); 8]

    source§

    const LEN: usize = 8usize

    source§

    fn w(&self) -> usize

    source§

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    source§

    impl Iterator for Grid8

    source§

    type Item = (usize, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
    where - Self: Sized, - Self::Item: Clone,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where - T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( - &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( - &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.0.0 · source§

    fn max(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the maximum element of an iterator. Read more
    1.0.0 · source§

    fn min(self) -> Option<Self::Item>
    where - Self: Sized, - Self::Item: Ord,

    Returns the minimum element of an iterator. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    1.5.0 · source§

    fn cmp<I>(self, other: I) -> Ordering
    where - I: IntoIterator<Item = Self::Item>, - Self::Item: Ord, - Self: Sized,

    Lexicographically compares the elements of this Iterator with those -of another. Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit -evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted(self) -> bool
    where - Self: Sized, - Self::Item: PartialOrd,

    Checks if the elements of this iterator are sorted. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Grid8

    §

    impl RefUnwindSafe for Grid8

    §

    impl Send for Grid8

    §

    impl Sync for Grid8

    §

    impl Unpin for Grid8

    §

    impl UnwindSafe for Grid8

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/gridnei/trait.GridIterator.html b/gridnei/trait.GridIterator.html deleted file mode 100644 index 82bea585..00000000 --- a/gridnei/trait.GridIterator.html +++ /dev/null @@ -1,46 +0,0 @@ -GridIterator in gridnei - Rust - - - - - -

    Trait gridnei::GridIterator

    source ·
    pub trait GridIterator: DoubleEndedIterator<Item = (usize, usize)> {
    -    type Array;
    -
    -    const LEN: usize;
    -
    -    // Required methods
    -    fn w(&self) -> usize;
    -    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    -       where F: FnMut(isize, isize) -> Self::Array;
    -}
    Expand description

    grid_iter! を通じで定義した型に自動的に実装されます。

    -

    Required Associated Types§

    Required Associated Constants§

    Required Methods§

    source

    fn w(&self) -> usize

    source

    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    where - F: FnMut(isize, isize) -> Self::Array,

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/gss/all.html b/gss/all.html index deb63fd6..e8b20b05 100644 --- a/gss/all.html +++ b/gss/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/gss/fn.gss_by_absolute_eps.html b/gss/fn.gss_by_absolute_eps.html index fe448659..a4cd8160 100644 --- a/gss/fn.gss_by_absolute_eps.html +++ b/gss/fn.gss_by_absolute_eps.html @@ -1,4 +1,4 @@ -gss_by_absolute_eps in gss - Rustgss_by_absolute_eps in gss - Rust
    -

    Function gss::gss_by_absolute_eps

    source ·
    pub fn gss_by_absolute_eps<T: Float + Golden, U: PartialOrd + Debug>(
    +

    Function gss::gss_by_absolute_eps

    source ·
    pub fn gss_by_absolute_eps<T: Float + Golden, U: PartialOrd + Debug>(
         lower: T,
         upper: T,
    -    f: impl Fn(T) -> U,
    -    eps: T,
    +    f: impl Fn(T) -> U,
    +    eps: T
     ) -> T
    Expand description

    絶対誤差指定バージョン。真の答えとの差が eps 以内になる保証ができるまでイテレートします。

    -

    §追加要件

    +

    追加要件

    T::zero() < eps && eps / lower.abs().max(upper.abs()) != T::zero()

    \ No newline at end of file diff --git a/gss/fn.gss_by_count.html b/gss/fn.gss_by_count.html index 2eebd84d..a5a5b56c 100644 --- a/gss/fn.gss_by_count.html +++ b/gss/fn.gss_by_count.html @@ -1,4 +1,4 @@ -gss_by_count in gss - Rustgss_by_count in gss - Rust
    -

    Function gss::gss_by_count

    source ·
    pub fn gss_by_count<T: Float + Golden, U: PartialOrd + Debug>(
    +

    Function gss::gss_by_count

    source ·
    pub fn gss_by_count<T: Float + Golden, U: PartialOrd + Debug>(
         lower: T,
         upper: T,
    -    f: impl Fn(T) -> U,
    -    count: usize,
    +    f: impl Fn(T) -> U,
    +    count: usize
     ) -> T
    Expand description

    回数指定バージョン。count 回イテレートします。

    \ No newline at end of file diff --git a/gss/fn.gss_integer.html b/gss/fn.gss_integer.html index 3f7c114d..cab8d3a6 100644 --- a/gss/fn.gss_integer.html +++ b/gss/fn.gss_integer.html @@ -1,4 +1,4 @@ -gss_integer in gss - Rustgss_integer in gss - Rust
    -

    Function gss::gss_integer

    source ·
    pub fn gss_integer<T: Int + Golden, U: PartialOrd + Debug>(
    +

    Function gss::gss_integer

    source ·
    pub fn gss_integer<T: Int + Golden, U: PartialOrd + Debug>(
         lower: T,
         upper: T,
    -    f: impl Fn(T) -> U,
    +    f: impl Fn(T) -> U
     ) -> T
    Expand description

    整数バージョン。正確な値を返します。

    \ No newline at end of file diff --git a/gss/fn.gss_on_slice.html b/gss/fn.gss_on_slice.html index 0f51a26a..2116472f 100644 --- a/gss/fn.gss_on_slice.html +++ b/gss/fn.gss_on_slice.html @@ -1,4 +1,4 @@ -gss_on_slice in gss - Rustgss_on_slice in gss - Rust
    -

    Function gss::gss_on_slice

    source ·
    pub fn gss_on_slice<T: PartialOrd + Debug>(a: &[T]) -> usize
    Expand description

    スライスの添字バージョン。正確な値を返します。

    +

    Function gss::gss_on_slice

    source ·
    pub fn gss_on_slice<T: PartialOrd + Debug>(a: &[T]) -> usize
    Expand description

    スライスの添字バージョン。正確な値を返します。

    \ No newline at end of file diff --git a/gss/index.html b/gss/index.html index b6e91d30..1606f5bf 100644 --- a/gss/index.html +++ b/gss/index.html @@ -1,4 +1,4 @@ -gss - Rustgss - Rust
    -

    Crate gss

    source ·
    Expand description

    黄金分割探索をします。

    +

    Crate gss

    source ·
    Expand description

    黄金分割探索をします。

    次の 2 つの関数のお好きな方をどうぞです。

    -

    §共通仕様

    +

    共通仕様

    引数名 lower, upper は、お名前に反して、別に逆でも動きます。ただ、このセクションでは説明のため lower <= upper であるとします。

    -

    §Requirements

    +

    Requirements

    入力 lower, upper, f は次の要件を満たす必要があります。

    • (浮動小数点数のときのみ)lower.is_finite() && upper.is_finite()
    • @@ -50,7 +50,7 @@

      §Requireme

    -

    §Returns

    +

    Returns

    Requirements 内の x は唯一なので、それに「そこそこ近いもの」を返します。探索の打ち切りの仕方のバリエーションでいくつかの関数があります。

      @@ -67,5 +67,5 @@

      §Returns

    -

    Traits§

    • gss_by_count の引数型のためのトレイトです。全ての整数型に実装されています。
    • 黄金分割をする関数 golden_sect -を提供します。すべての整数型、浮動小数点型に実装されています。
    • gss_integer の引数型のためのトレイトです。全ての整数型に実装されています。

    Functions§

    • 絶対誤差指定バージョン。真の答えとの差が eps 以内になる保証ができるまでイテレートします。
    • 回数指定バージョン。count 回イテレートします。
    • 整数バージョン。正確な値を返します。
    • スライスの添字バージョン。正確な値を返します。
    \ No newline at end of file +

    Traits

    • gss_by_count の引数型のためのトレイトです。全ての整数型に実装されています。
    • 黄金分割をする関数 golden_sect +を提供します。すべての整数型、浮動小数点型に実装されています。
    • gss_integer の引数型のためのトレイトです。全ての整数型に実装されています。

    Functions

    • 絶対誤差指定バージョン。真の答えとの差が eps 以内になる保証ができるまでイテレートします。
    • 回数指定バージョン。count 回イテレートします。
    • 整数バージョン。正確な値を返します。
    • スライスの添字バージョン。正確な値を返します。
    \ No newline at end of file diff --git a/gss/trait.Float.html b/gss/trait.Float.html index ef8aed05..1cd137cf 100644 --- a/gss/trait.Float.html +++ b/gss/trait.Float.html @@ -1,4 +1,4 @@ -Float in gss - RustFloat in gss - Rust
    -

    Trait gss::Float

    source ·
    pub trait Float:
    -    Add<Output = Self>
    -    + Sub<Output = Self>
    -    + Mul<Output = Self>
    -    + Div<Output = Self>
    -    + Debug
    -    + PartialOrd
    -    + Copy {
    +

    Trait gss::Float

    source ·
    pub trait Float: Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Debug + PartialOrd + Copy {
         const INVPHI: Self;
     
         // Required methods
    @@ -47,12 +40,12 @@
         fn two() -> Self;
         fn max(self, other: Self) -> Self;
         fn abs(self) -> Self;
    -    fn is_finite(self) -> bool;
    +    fn is_finite(self) -> bool;
     }
    Expand description

    gss_by_count の引数型のためのトレイトです。全ての整数型に実装されています。

    -

    Required Associated Constants§

    source

    const INVPHI: Self

    1 / φ = 0.6180339887498949

    -

    Required Methods§

    source

    fn zero() -> Self

    0.0

    -
    source

    fn two() -> Self

    2.0

    -
    source

    fn max(self, other: Self) -> Self

    Self の同名メソッド

    -
    source

    fn abs(self) -> Self

    Self の同名メソッド

    -
    source

    fn is_finite(self) -> bool

    Self の同名メソッド

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Float for f32

    source§

    const INVPHI: Self = 0.618034005f32

    source§

    fn zero() -> Self

    source§

    fn two() -> Self

    source§

    fn max(self, other: Self) -> Self

    source§

    fn abs(self) -> Self

    source§

    fn is_finite(self) -> bool

    source§

    impl Float for f64

    source§

    const INVPHI: Self = 0.6180339887498949f64

    source§

    fn zero() -> Self

    source§

    fn two() -> Self

    source§

    fn max(self, other: Self) -> Self

    source§

    fn abs(self) -> Self

    source§

    fn is_finite(self) -> bool

    Implementors§

    \ No newline at end of file +

    Required Associated Constants§

    source

    const INVPHI: Self

    1 / φ = 0.6180339887498949

    +

    Required Methods§

    source

    fn zero() -> Self

    0.0

    +
    source

    fn two() -> Self

    2.0

    +
    source

    fn max(self, other: Self) -> Self

    Self の同名メソッド

    +
    source

    fn abs(self) -> Self

    Self の同名メソッド

    +
    source

    fn is_finite(self) -> bool

    Self の同名メソッド

    +

    Implementations on Foreign Types§

    source§

    impl Float for f32

    source§

    const INVPHI: Self = 0.618034005f32

    source§

    fn zero() -> Self

    source§

    fn two() -> Self

    source§

    fn max(self, other: Self) -> Self

    source§

    fn abs(self) -> Self

    source§

    fn is_finite(self) -> bool

    source§

    impl Float for f64

    source§

    const INVPHI: Self = 0.6180339887498949f64

    source§

    fn zero() -> Self

    source§

    fn two() -> Self

    source§

    fn max(self, other: Self) -> Self

    source§

    fn abs(self) -> Self

    source§

    fn is_finite(self) -> bool

    Implementors§

    \ No newline at end of file diff --git a/gss/trait.Golden.html b/gss/trait.Golden.html index b6c21b29..96c2f3e7 100644 --- a/gss/trait.Golden.html +++ b/gss/trait.Golden.html @@ -1,4 +1,4 @@ -Golden in gss - RustGolden in gss - Rust
    -

    Trait gss::Golden

    source ·
    pub trait Golden:
    -    Add<Output = Self>
    -    + Mul<Output = Self>
    -    + Div<Output = Self>
    -    + Debug
    -    + PartialOrd
    -    + Copy {
    +

    Trait gss::Golden

    source ·
    pub trait Golden: Add<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Debug + PartialOrd + Copy {
         // Required method
         fn golden_sect(self, other: Self) -> Self;
     }
    Expand description

    黄金分割をする関数 golden_sect を提供します。すべての整数型、浮動小数点型に実装されています。

    -

    Required Methods§

    source

    fn golden_sect(self, other: Self) -> Self

    selfother を φ:1 で内分します。整数の場合は近い方に丸めます。

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Golden for f32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for f64

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i8

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i16

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i64

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i128

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for isize

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u8

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u16

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u64

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u128

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for usize

    source§

    fn golden_sect(self, other: Self) -> Self

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn golden_sect(self, other: Self) -> Self

    selfother を φ:1 で内分します。整数の場合は近い方に丸めます。

    +

    Implementations on Foreign Types§

    source§

    impl Golden for u8

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i8

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for usize

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i128

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for f32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i64

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u128

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u16

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for f64

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i16

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for i32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u32

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for isize

    source§

    fn golden_sect(self, other: Self) -> Self

    source§

    impl Golden for u64

    source§

    fn golden_sect(self, other: Self) -> Self

    Implementors§

    \ No newline at end of file diff --git a/gss/trait.Int.html b/gss/trait.Int.html index a853d538..74b8d8ec 100644 --- a/gss/trait.Int.html +++ b/gss/trait.Int.html @@ -1,4 +1,4 @@ -Int in gss - RustInt in gss - Rust
    -

    Trait gss::Int

    source ·
    pub trait Int:
    -    Add<Output = Self>
    -    + Debug
    -    + PartialOrd
    -    + Copy {
    +

    Trait gss::Int

    source ·
    pub trait Int: Add<Output = Self> + Debug + PartialOrd + Copy {
         // Required methods
         fn midpoint_sorted(self, upper: Self) -> Self;
         fn one() -> Self;
    -    fn as_f64(self) -> f64;
    -    fn f64_as(x: f64) -> Self;
    +    fn as_f64(self) -> f64;
    +    fn f64_as(x: f64) -> Self;
     }
    Expand description

    gss_integer の引数型のためのトレイトです。全ての整数型に実装されています。

    -

    Required Methods§

    source

    fn midpoint_sorted(self, upper: Self) -> Self

    数学的な floor((self + upper)/2) と厳密に等しいものを計算します。

    -
    source

    fn one() -> Self

    1

    -
    source

    fn as_f64(self) -> f64

    source

    fn f64_as(x: f64) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Int for i8

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i16

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i32

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i64

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i128

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for isize

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u8

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u16

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u32

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u64

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u128

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for usize

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn midpoint_sorted(self, upper: Self) -> Self

    数学的な floor((self + upper)/2) と厳密に等しいものを計算します。

    +
    source

    fn one() -> Self

    1

    +
    source

    fn as_f64(self) -> f64

    source

    fn f64_as(x: f64) -> Self

    Implementations on Foreign Types§

    source§

    impl Int for isize

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i128

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u128

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i8

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u8

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u32

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u64

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for u16

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for usize

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i16

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i32

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    source§

    impl Int for i64

    source§

    fn midpoint_sorted(self, upper: Self) -> Self

    source§

    fn one() -> Self

    source§

    fn as_f64(self) -> f64

    source§

    fn f64_as(x: f64) -> Self

    Implementors§

    \ No newline at end of file diff --git a/heap_slope_trick/all.html b/heap_slope_trick/all.html index 57ce8067..d030b6cb 100644 --- a/heap_slope_trick/all.html +++ b/heap_slope_trick/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Functions

    \ No newline at end of file +

    List of all items

    Structs

    Functions

    \ No newline at end of file diff --git a/heap_slope_trick/fn.merge.html b/heap_slope_trick/fn.merge.html index d459d30c..8515497f 100644 --- a/heap_slope_trick/fn.merge.html +++ b/heap_slope_trick/fn.merge.html @@ -1,4 +1,4 @@ -merge in heap_slope_trick - Rustmerge in heap_slope_trick - Rust
    -

    Function heap_slope_trick::merge

    source ·
    pub fn merge(a: HeapSlopeTrick, b: HeapSlopeTrick) -> HeapSlopeTrick
    Expand description

    足し算をします。

    -

    §TODO

    +

    Function heap_slope_trick::merge

    source ·
    pub fn merge(a: HeapSlopeTrick, b: HeapSlopeTrick) -> HeapSlopeTrick
    Expand description

    足し算をします。

    +

    TODO

    テストを書きたいです。

    -

    §計算量

    +

    計算量

    O ( N lg N )、ただし N は a と b のうち大きい方長さ

    \ No newline at end of file diff --git a/heap_slope_trick/index.html b/heap_slope_trick/index.html index f265c6cf..0f4cd55c 100644 --- a/heap_slope_trick/index.html +++ b/heap_slope_trick/index.html @@ -1,4 +1,4 @@ -heap_slope_trick - Rustheap_slope_trick - Rust
    -

    Crate heap_slope_trick

    source ·
    Expand description

    BinaryHeap 二本で slope trick をします。

    +

    Crate heap_slope_trick

    source ·
    Expand description

    Structs§

    Functions§

    • 足し算をします。
    \ No newline at end of file +

    Structs

    Functions

    • 足し算をします。
    \ No newline at end of file diff --git a/heap_slope_trick/struct.HeapSlopeTrick.html b/heap_slope_trick/struct.HeapSlopeTrick.html index 0540ffcb..a40bd972 100644 --- a/heap_slope_trick/struct.HeapSlopeTrick.html +++ b/heap_slope_trick/struct.HeapSlopeTrick.html @@ -1,4 +1,4 @@ -HeapSlopeTrick in heap_slope_trick - RustHeapSlopeTrick in heap_slope_trick - Rust
    -

    Struct heap_slope_trick::HeapSlopeTrick

    source ·
    pub struct HeapSlopeTrick { /* private fields */ }
    Expand description

    本体です。

    -

    §Examples

    +
    pub struct HeapSlopeTrick { /* private fields */ }
    Expand description

    本体です。

    +

    Examples

    // f(x) = 0
     let mut slope = HeapSlopeTrick::new();
     
    @@ -52,32 +52,31 @@ 

    §Examples

    assert_eq!(slope.eval(3), 0); assert_eq!(slope.eval(4), 0); assert_eq!(slope.eval(5), 1);
    -

    Implementations§

    source§

    impl HeapSlopeTrick

    source

    pub fn new() -> Self

    零関数 f(x) = 0

    -
    source

    pub fn eval(&self, x: i64) -> i64

    一点評価 f(x)

    -
    source

    pub fn get_argmin(&self) -> [i64; 2]

    最小値を取る x の集合(と [MIN, MAX] の交差)を取得 argmin { f(x) | x in ]-∞, ∞[ }

    -
    source

    pub fn get_minimum(&self) -> i64

    最小値取得 min { f(x) | x in ]-∞, ∞[ }

    -
    source

    pub fn add_const(&mut self, c: i64)

    定数関数加算 g(x) = f(x) + c

    -
    source

    pub fn add_cutoff_diagonal(&mut self, a: i64)

    傾き +1 のカットオフ一次関数加算 g(x) = f(x) + max(x - a, 0)

    -
    source

    pub fn add_cutoff_anti_diagonal(&mut self, a: i64)

    傾き -1 のカットオフ一次関数加算 g(x) = f(x) + max(a - x, 0)

    -
    source

    pub fn add_abs(&mut self, a: i64)

    絶対値関数加算 g(x) = f(x) + |x - a|

    -
    source

    pub fn cumulative_min_from_left(&mut self)

    左から累積最小値 g(x) = min { f(y) | y ∈ ]-∞, x] }

    -
    source

    pub fn cumulative_min_from_right(&mut self)

    右から累積最小値 g(x) = min { f(y) | y ∈ [x, ∞[ }

    -
    source

    pub fn shift(&mut self, a: i64)

    平行移動 g(x) = f ( x - a )

    -
    source

    pub fn sliding_window_minimum(&mut self, a: i64, b: i64)

    スライド最小値 g(x) = min { f(y) | y ∈ [x - b, x - a] }

    -
    source

    pub fn get_tilt_minimum(&self) -> i64

    差分の最小値 min { f(x + 1) - f(x) | x ∈ ]-∞, ∞[ }

    -
    source

    pub fn get_tilt_maximum(&self) -> i64

    差分の最大値 max { f(x + 1) - f(x) | x ∈ ]-∞, ∞[ }

    -
    source

    pub fn articulation_points(&self) -> Vec<[i64; 2]>

    関節点(二階差分が正である点)全体の列 { (x, f(x)) | f(x) + f(x) < f(x - 1) + f(x + 1) }

    -
    source

    pub fn summary(&self) -> Summary

    関節点と差分の範囲を返します。

    -

    Trait Implementations§

    source§

    impl Clone for HeapSlopeTrick

    source§

    fn clone(&self) -> HeapSlopeTrick

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HeapSlopeTrick

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for HeapSlopeTrick

    source§

    fn default() -> HeapSlopeTrick

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Implementations§

    source§

    impl HeapSlopeTrick

    source

    pub fn new() -> Self

    零関数 f(x) = 0

    +
    source

    pub fn eval(&self, x: i64) -> i64

    一点評価 f(x)

    +
    source

    pub fn get_argmin(&self) -> [i64; 2]

    最小値を取る x の集合(と [MIN, MAX] の交差)を取得 argmin { f(x) | x in ]-∞, ∞[ }

    +
    source

    pub fn get_minimum(&self) -> i64

    最小値取得 min { f(x) | x in ]-∞, ∞[ }

    +
    source

    pub fn add_const(&mut self, c: i64)

    定数関数加算 g(x) = f(x) + c

    +
    source

    pub fn add_cutoff_diagonal(&mut self, a: i64)

    傾き +1 のカットオフ一次関数加算 g(x) = f(x) + max(x - a, 0)

    +
    source

    pub fn add_cutoff_anti_diagonal(&mut self, a: i64)

    傾き -1 のカットオフ一次関数加算 g(x) = f(x) + max(a - x, 0)

    +
    source

    pub fn add_abs(&mut self, a: i64)

    絶対値関数加算 g(x) = f(x) + |x - a|

    +
    source

    pub fn cumulative_min_from_left(&mut self)

    左から累積最小値 g(x) = min { f(y) | y ∈ ]-∞, x] }

    +
    source

    pub fn cumulative_min_from_right(&mut self)

    右から累積最小値 g(x) = min { f(y) | y ∈ [x, ∞[ }

    +
    source

    pub fn shift(&mut self, a: i64)

    平行移動 g(x) = f ( x - a )

    +
    source

    pub fn sliding_window_minimum(&mut self, a: i64, b: i64)

    スライド最小値 g(x) = min { f(y) | y ∈ [x - b, x - a] }

    +
    source

    pub fn get_tilt_minimum(&self) -> i64

    差分の最小値 min { f(x + 1) - f(x) | x ∈ ]-∞, ∞[ }

    +
    source

    pub fn get_tilt_maximum(&self) -> i64

    差分の最大値 max { f(x + 1) - f(x) | x ∈ ]-∞, ∞[ }

    +
    source

    pub fn articulation_points(&self) -> Vec<[i64; 2]>

    関節点(二階差分が正である点)全体の列 { (x, f(x)) | f(x) + f(x) < f(x - 1) + f(x + 1) }

    +
    source

    pub fn summary(&self) -> Summary

    関節点と差分の範囲を返します。

    +

    Trait Implementations§

    source§

    impl Clone for HeapSlopeTrick

    source§

    fn clone(&self) -> HeapSlopeTrick

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HeapSlopeTrick

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for HeapSlopeTrick

    source§

    fn default() -> HeapSlopeTrick

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_slope_trick/struct.Summary.html b/heap_slope_trick/struct.Summary.html index 57934898..3d86cac1 100644 --- a/heap_slope_trick/struct.Summary.html +++ b/heap_slope_trick/struct.Summary.html @@ -1,4 +1,4 @@ -Summary in heap_slope_trick - RustSummary in heap_slope_trick - Rust
    -

    Struct heap_slope_trick::Summary

    source ·
    pub struct Summary { /* private fields */ }
    Expand description

    HeapSlopeTrick::summary() の戻り値です。

    -

    Trait Implementations§

    source§

    impl Clone for Summary

    source§

    fn clone(&self) -> Summary

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Summary

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Summary

    source§

    fn default() -> Summary

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Summary

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Summary

    source§

    fn eq(&self, other: &Summary) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for Summary

    source§

    impl StructuralPartialEq for Summary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub struct Summary { /* private fields */ }
    Expand description

    HeapSlopeTrick::summary() の戻り値です。

    +

    Trait Implementations§

    source§

    impl Clone for Summary

    source§

    fn clone(&self) -> Summary

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Summary

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Summary

    source§

    fn default() -> Summary

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Summary

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Summary> for Summary

    source§

    fn eq(&self, other: &Summary) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Summary

    source§

    impl StructuralEq for Summary

    source§

    impl StructuralPartialEq for Summary

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_tricks/all.html b/heap_tricks/all.html index b97e79c6..3bb41b5f 100644 --- a/heap_tricks/all.html +++ b/heap_tricks/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/heap_tricks/index.html b/heap_tricks/index.html index cf885148..4bf83b0a 100644 --- a/heap_tricks/index.html +++ b/heap_tricks/index.html @@ -1,4 +1,4 @@ -heap_tricks - Rustheap_tricks - Rust
    -

    Crate heap_tricks

    source ·
    Expand description

    remove_unchecked のできるヒープです。

    +

    Crate heap_tricks

    source ·
    Expand description

    remove_unchecked のできるヒープです。

    本体は RemovableHeap です。

    -

    §⚠️ 注意点

    +

    ⚠️ 注意点

    RemovableHeap は、ヒープに入っていない要素を削除すると たとえその要素をすぐに挿入し直したとしても、 その後の挙動がすべて未定義になります。

    -

    §パフォーマンスに関する実験

    §実験1: 中央値取得で両方に入れる実装

    +

    パフォーマンスに関する実験

    実験1: 中央値取得で両方に入れる実装

    下記「yukicoder No.738 - 平らな農地」に次の変更を入れたものです。 35 ms だったものが 53 ms に悪化します。 実行時間制限が厳し目なときにはやめたほうが良いかもです。

    @@ -61,7 +61,7 @@

    §このライブラリを使える問題

    +

    このライブラリを使える問題

    固定された数列の順位を答えるだけなら、ウェーブレット行列 のほうが楽という説はあります。

      @@ -72,7 +72,7 @@

      Copy を課しているので String がくるとかなり +
    • コメント: キーに Copy を課しているので String がくるとかなり めんどくさいことに!! むーん……
    • 使う構造体: DoubleHeap (左右移動の明示的追跡あり)
    @@ -179,7 +179,7 @@

    DoubleHeap (削除も使います。)
  • コメント: 本番二分探索を考えてうまく行かず、 -後日 std::collections::BTreeMap で multiset もどきを作って +後日 std::collections::BTreeMap で multiset もどきを作って なんとか通して (181 ms) いました。ヒープ4本の方が速くてきれいで嬉しいですね。
  • @@ -195,13 +195,13 @@

    Structs§

    • ヒープを4本使って中央値などを管理するデータ構造です。 +

    Structs

    • ヒープを4本使って中央値などを管理するデータ構造です。 Handler が必要ないときには DoubleHeap::new() で構築すると 勝手に Nop が採用されます。
    • 何も集約しないことを表す型です。 Handler の一種です。 DoubleHeap::new() で構築すると自動的に採用されます。 -Unit-like struct なので、同名の定数が自動定義されています。
    • 論理削除のできるヒープです。
    • 総和を集約するための型です。 +Unit-like struct なので、同名の定数が自動定義されています。
    • 論理削除のできるヒープです。
    • 総和を集約するための型です。 Handler の一種です。 -Sum::default() でデフォルト構築できます。

    Traits§

    • 集約操作を指定するためのトレイトです。 +Sum::default() でデフォルト構築できます。

    Traits

    • 集約操作を指定するためのトレイトです。 単なるマーカートレイトではなく、集約結果を管理するための オブジェクトとして使用されます
    \ No newline at end of file diff --git a/heap_tricks/struct.DoubleHeap.html b/heap_tricks/struct.DoubleHeap.html index beb08346..adcb2a33 100644 --- a/heap_tricks/struct.DoubleHeap.html +++ b/heap_tricks/struct.DoubleHeap.html @@ -1,4 +1,4 @@ -DoubleHeap in heap_tricks - RustDoubleHeap in heap_tricks - Rust
    -

    Struct heap_tricks::DoubleHeap

    source ·
    pub struct DoubleHeap<T, H> { /* private fields */ }
    Expand description

    ヒープを4本使って中央値などを管理するデータ構造です。 +

    Struct heap_tricks::DoubleHeap

    source ·
    pub struct DoubleHeap<T, H> { /* private fields */ }
    Expand description

    ヒープを4本使って中央値などを管理するデータ構造です。 Handler が必要ないときには DoubleHeap::new() で構築すると 勝手に Nop が採用されます。

    -

    Implementations§

    source§

    impl<T> DoubleHeap<T, Nop>
    where - T: Copy + Ord + Hash,

    source

    pub fn new() -> Self

    source§

    impl<T, H> DoubleHeap<T, H>
    where - T: Copy + Ord + Hash, - H: Handler<T>,

    source

    pub fn with_handler(handler: H) -> Self

    Handler を指定して構築します。

    -
    §Examples
    +

    Implementations§

    source§

    impl<T> DoubleHeap<T, Nop>where + T: Copy + Ord + Hash,

    source

    pub fn new() -> Self

    source§

    impl<T, H> DoubleHeap<T, H>where + T: Copy + Ord + Hash, + H: Handler<T>,

    source

    pub fn with_handler(handler: H) -> Self

    Handler を指定して構築します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
     assert_eq!(heap.collect_sorted_vec(), vec![42]);
    -
    source

    pub fn is_empty(&self) -> bool

    ヒープが空ならば true を返します。

    -
    §Examples
    +
    source

    pub fn is_empty(&self) -> bool

    ヒープが空ならば true を返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     assert_eq!(heap.is_empty(), true);
     heap.push_left(42);
     assert_eq!(heap.is_empty(), false);
    -
    source

    pub fn len(&self) -> usize

    全体の要素数を返します。

    -
    §Examples
    +
    source

    pub fn len(&self) -> usize

    全体の要素数を返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     assert_eq!(heap.len(), 0);
     heap.push_left(42);
     assert_eq!(heap.len(), 1);
    -
    source

    pub fn left_len(&self) -> usize

    左側ヒープの要素数を返します。

    -
    §Examples
    +
    source

    pub fn left_len(&self) -> usize

    左側ヒープの要素数を返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     assert_eq!(heap.left_len(), 0);
    @@ -67,8 +67,8 @@ 
    §Examples
    heap.push_right(42); heap.push_right(42); assert_eq!(heap.left_len(), 1);
    -
    source

    pub fn right_len(&self) -> usize

    右側ヒープの要素数を返します。

    -
    §Examples
    +
    source

    pub fn right_len(&self) -> usize

    右側ヒープの要素数を返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     assert_eq!(heap.right_len(), 0);
    @@ -76,8 +76,8 @@ 
    §Examples
    heap.push_right(42); heap.push_right(42); assert_eq!(heap.right_len(), 2);
    -
    source

    pub fn push_left(&mut self, elm: T)

    左側ヒープの要素数が1増加するように、要素を挿入します。

    -
    §Examples
    +
    source

    pub fn push_left(&mut self, elm: T)

    左側ヒープの要素数が1増加するように、要素を挿入します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     
    @@ -86,8 +86,8 @@ 
    §Examples
    heap.push_right(13); assert_eq!(heap.collect_left_sorted_vec(), vec![13]); assert_eq!(heap.collect_right_sorted_vec(), vec![42, 45]);
    -
    source

    pub fn push_right(&mut self, elm: T)

    右側ヒープの要素数が1増加するように、要素を挿入します。

    -
    §Examples
    +
    source

    pub fn push_right(&mut self, elm: T)

    右側ヒープの要素数が1増加するように、要素を挿入します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     
    @@ -96,16 +96,16 @@ 
    §Examples
    heap.push_right(13); assert_eq!(heap.collect_left_sorted_vec(), vec![13]); assert_eq!(heap.collect_right_sorted_vec(), vec![42, 45]);
    -
    source

    pub fn peek_left(&self) -> Option<T>

    左側ヒープの最大要素があれば返します。

    -
    §Examples
    +
    source

    pub fn peek_left(&self) -> Option<T>

    左側ヒープの最大要素があれば返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
     heap.push_right(45);
     heap.push_right(13);
     assert_eq!(heap.peek_left(), Some(13));
    -
    source

    pub fn peek_right(&self) -> Option<T>

    右側ヒープの最大要素があれば返します。

    -
    §Examples
    +
    source

    pub fn peek_right(&self) -> Option<T>

    右側ヒープの最大要素があれば返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -114,8 +114,8 @@ 
    §Examples
    assert_eq!(heap.peek_left(), Some(13)); assert_eq!(heap.collect_left_sorted_vec(), vec![13]); assert_eq!(heap.collect_right_sorted_vec(), vec![42, 45]);
    -
    source

    pub fn pop_left(&mut self) -> Option<T>

    左側ヒープの最大要素があれば削除して返します。

    -
    §Examples
    +
    source

    pub fn pop_left(&mut self) -> Option<T>

    左側ヒープの最大要素があれば削除して返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -124,8 +124,8 @@ 
    §Examples
    assert_eq!(heap.pop_left(), Some(13)); assert_eq!(heap.collect_left_sorted_vec(), vec![]); assert_eq!(heap.collect_right_sorted_vec(), vec![42, 45]);
    -
    source

    pub fn pop_right(&mut self) -> Option<T>

    右側ヒープの最大要素があれば削除して返します。

    -
    §Examples
    +
    source

    pub fn pop_right(&mut self) -> Option<T>

    右側ヒープの最大要素があれば削除して返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -134,10 +134,10 @@ 
    §Examplesassert_eq!(heap.pop_right(), Some(42)); assert_eq!(heap.collect_left_sorted_vec(), vec![13]); assert_eq!(heap.collect_right_sorted_vec(), vec![45]);
    -
    source

    pub fn move_left(&mut self)

    左側ヒープの要素数が1増加するように、右側ヒープから要素を移動します

    -
    §Panics
    +
    source

    pub fn move_left(&mut self)

    左側ヒープの要素数が1増加するように、右側ヒープから要素を移動します

    +
    Panics

    右側ヒープが空のとき。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -146,10 +146,10 @@ 
    §Examplesassert_eq!(heap.collect_left_sorted_vec(), vec![13, 42]); assert_eq!(heap.collect_right_sorted_vec(), vec![45]);
    -
    source

    pub fn move_right(&mut self)

    右側ヒープの要素数が1増加するように、左側ヒープから要素を移動します

    -
    §Panics
    +
    source

    pub fn move_right(&mut self)

    右側ヒープの要素数が1増加するように、左側ヒープから要素を移動します

    +
    Panics

    左側ヒープが空のとき。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -158,12 +158,12 @@ 
    §Examplesassert_eq!(heap.collect_left_sorted_vec(), vec![]); assert_eq!(heap.collect_right_sorted_vec(), vec![13, 42, 45]);
    -
    source

    pub fn remove_left_unchecked(&mut self, elm: T)

    ヒープに入っている要素を1つ指定して、左側ヒープの要素数が +

    source

    pub fn remove_left_unchecked(&mut self, elm: T)

    ヒープに入っている要素を1つ指定して、左側ヒープの要素数が 1減少するように削除します。

    -
    §⚠️ Undefined Behavior
    +
    ⚠️ Undefined Behavior

    指定された要素がヒープに入っていないとき、 以降の挙動すべてが未定義になります。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -172,12 +172,12 @@ 
    §Examples42); assert_eq!(heap.collect_left_sorted_vec(), vec![]); assert_eq!(heap.collect_right_sorted_vec(), vec![13, 45]);
    -
    source

    pub fn remove_right_unchecked(&mut self, elm: T)

    ヒープに入っている要素を1つ指定して、右側ヒープの要素数が +

    source

    pub fn remove_right_unchecked(&mut self, elm: T)

    ヒープに入っている要素を1つ指定して、右側ヒープの要素数が 1減少するように削除します。

    -
    §⚠️ Undefined Behavior
    +
    ⚠️ Undefined Behavior

    指定された要素がヒープに入っていないとき、 以降の挙動すべてが未定義になります。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(42);
    @@ -186,10 +186,10 @@ 
    §Examples42); assert_eq!(heap.collect_left_sorted_vec(), vec![13]); assert_eq!(heap.collect_right_sorted_vec(), vec![45]);
    -
    source

    pub fn balance_left(&mut self, k: usize)

    左側ヒープの要素が k 個になるように動かします。

    -
    §Panics
    +
    source

    pub fn balance_left(&mut self, k: usize)

    左側ヒープの要素が k 個になるように動かします。

    +
    Panics

    k が総要素数よりも大きいとき。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(10);
    @@ -202,10 +202,10 @@ 
    §Examples1); assert_eq!(heap.collect_left_sorted_vec(), vec![10]); assert_eq!(heap.collect_right_sorted_vec(), vec![11, 12, 13]);
    -
    source

    pub fn balance_right(&mut self, k: usize)

    右側ヒープの要素が k 個になるように動かします。

    -
    §Panics
    +
    source

    pub fn balance_right(&mut self, k: usize)

    右側ヒープの要素が k 個になるように動かします。

    +
    Panics

    k が総要素数よりも大きいとき。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(10);
    @@ -218,10 +218,10 @@ 
    §Examples3); assert_eq!(heap.collect_left_sorted_vec(), vec![10]); assert_eq!(heap.collect_right_sorted_vec(), vec![11, 12, 13]);
    -
    source

    pub fn handler(&self) -> &H

    ハンドラへの参照を返します。

    -
    §Panics
    +
    source

    pub fn handler(&self) -> &H

    ハンドラへの参照を返します。

    +
    Panics

    k が総要素数よりも大きいとき。

    -
    §Examples
    +
    Examples
    use heap_tricks::DoubleHeap;
     use heap_tricks::Sum;
     let mut heap = DoubleHeap::with_handler(Sum::default());
    @@ -235,8 +235,8 @@ 
    §Examples1); assert_eq!(heap.handler().left, 10); assert_eq!(heap.handler().right, 36);
    -
    source

    pub fn collect_left_sorted_vec(&self) -> Vec<T>

    左側ヒープの要素を昇順に格納したベクターを構築して返します。

    -
    §Examples
    +
    source

    pub fn collect_left_sorted_vec(&self) -> Vec<T>

    左側ヒープの要素を昇順に格納したベクターを構築して返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(10);
    @@ -244,8 +244,8 @@ 
    §Examples12); heap.push_right(13); assert_eq!(heap.collect_left_sorted_vec(), vec![10, 11, 12]);
    -
    source

    pub fn collect_right_sorted_vec(&self) -> Vec<T>

    右側ヒープの要素を昇順に格納したベクターを構築して返します。

    -
    §Examples
    +
    source

    pub fn collect_right_sorted_vec(&self) -> Vec<T>

    右側ヒープの要素を昇順に格納したベクターを構築して返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(10);
    @@ -253,8 +253,8 @@ 
    §Examples12); heap.push_right(13); assert_eq!(heap.collect_right_sorted_vec(), vec![13]);
    -
    source

    pub fn collect_sorted_vec(&self) -> Vec<T>

    すべての要素を昇順に格納したベクターを構築して返します。

    -
    §Examples
    +
    source

    pub fn collect_sorted_vec(&self) -> Vec<T>

    すべての要素を昇順に格納したベクターを構築して返します。

    +
    Examples
    use heap_tricks::DoubleHeap;
     let mut heap = DoubleHeap::new();
     heap.push_left(10);
    @@ -262,30 +262,28 @@ 
    §Examples12); heap.push_right(13); assert_eq!(heap.collect_sorted_vec(), vec![10, 11, 12, 13]);
    -

    Trait Implementations§

    source§

    impl<T: Clone, H: Clone> Clone for DoubleHeap<T, H>

    source§

    fn clone(&self) -> DoubleHeap<T, H>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, H> Debug for DoubleHeap<T, H>
    where - T: Copy + Ord + Hash + Debug, - H: Handler<T> + Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T> Default for DoubleHeap<T, Nop>
    where - T: Copy + Ord + Hash,

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<T, H> Freeze for DoubleHeap<T, H>
    where - H: Freeze,

    §

    impl<T, H> RefUnwindSafe for DoubleHeap<T, H>
    where - H: RefUnwindSafe, - T: RefUnwindSafe,

    §

    impl<T, H> Send for DoubleHeap<T, H>
    where - H: Send, - T: Send,

    §

    impl<T, H> Sync for DoubleHeap<T, H>
    where - H: Sync, - T: Sync,

    §

    impl<T, H> Unpin for DoubleHeap<T, H>
    where - H: Unpin, - T: Unpin,

    §

    impl<T, H> UnwindSafe for DoubleHeap<T, H>
    where - H: UnwindSafe, - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Clone, H: Clone> Clone for DoubleHeap<T, H>

    source§

    fn clone(&self) -> DoubleHeap<T, H>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T, H> Debug for DoubleHeap<T, H>where + T: Copy + Ord + Hash + Debug, + H: Handler<T> + Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T> Default for DoubleHeap<T, Nop>where + T: Copy + Ord + Hash,

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<T, H> RefUnwindSafe for DoubleHeap<T, H>where + H: RefUnwindSafe, + T: RefUnwindSafe,

    §

    impl<T, H> Send for DoubleHeap<T, H>where + H: Send, + T: Send,

    §

    impl<T, H> Sync for DoubleHeap<T, H>where + H: Sync, + T: Sync,

    §

    impl<T, H> Unpin for DoubleHeap<T, H>where + H: Unpin, + T: Unpin,

    §

    impl<T, H> UnwindSafe for DoubleHeap<T, H>where + H: UnwindSafe, + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_tricks/struct.Nop.html b/heap_tricks/struct.Nop.html index 5e2269ed..bfbbd3ac 100644 --- a/heap_tricks/struct.Nop.html +++ b/heap_tricks/struct.Nop.html @@ -1,4 +1,4 @@ -Nop in heap_tricks - RustNop in heap_tricks - Rust
    -

    Struct heap_tricks::Nop

    source ·
    pub struct Nop;
    Expand description

    何も集約しないことを表す型です。 +

    Struct heap_tricks::Nop

    source ·
    pub struct Nop;
    Expand description

    何も集約しないことを表す型です。 Handler の一種です。 DoubleHeap::new() で構築すると自動的に採用されます。 Unit-like struct なので、同名の定数が自動定義されています。

    -

    Trait Implementations§

    source§

    impl Clone for Nop

    source§

    fn clone(&self) -> Nop

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Nop

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Nop

    source§

    fn default() -> Nop

    Returns the “default value” for a type. Read more
    source§

    impl<T> Handler<T> for Nop

    source§

    fn push_left(&mut self, _value: T)

    左側に挿入するときのコールバック関数
    source§

    fn pop_left(&mut self, _value: T)

    左側から削除するときのコールバック関数
    source§

    fn push_right(&mut self, _value: T)

    右側に挿入するときのコールバック関数
    source§

    fn pop_right(&mut self, _value: T)

    右側から削除するときのコールバック関数
    source§

    impl Hash for Nop

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Nop

    source§

    fn eq(&self, other: &Nop) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Copy for Nop

    source§

    impl Eq for Nop

    source§

    impl StructuralPartialEq for Nop

    Auto Trait Implementations§

    §

    impl Freeze for Nop

    §

    impl RefUnwindSafe for Nop

    §

    impl Send for Nop

    §

    impl Sync for Nop

    §

    impl Unpin for Nop

    §

    impl UnwindSafe for Nop

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Nop

    source§

    fn clone(&self) -> Nop

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Nop

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Nop

    source§

    fn default() -> Nop

    Returns the “default value” for a type. Read more
    source§

    impl<T> Handler<T> for Nop

    source§

    fn push_left(&mut self, _value: T)

    左側に挿入するときのコールバック関数
    source§

    fn pop_left(&mut self, _value: T)

    左側から削除するときのコールバック関数
    source§

    fn push_right(&mut self, _value: T)

    右側に挿入するときのコールバック関数
    source§

    fn pop_right(&mut self, _value: T)

    右側から削除するときのコールバック関数
    source§

    impl Hash for Nop

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Nop> for Nop

    source§

    fn eq(&self, other: &Nop) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Nop

    source§

    impl Eq for Nop

    source§

    impl StructuralEq for Nop

    source§

    impl StructuralPartialEq for Nop

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Nop

    §

    impl Send for Nop

    §

    impl Sync for Nop

    §

    impl Unpin for Nop

    §

    impl UnwindSafe for Nop

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_tricks/struct.RemovableHeap.html b/heap_tricks/struct.RemovableHeap.html index 56c3be1a..37b3db27 100644 --- a/heap_tricks/struct.RemovableHeap.html +++ b/heap_tricks/struct.RemovableHeap.html @@ -1,4 +1,4 @@ -RemovableHeap in heap_tricks - RustRemovableHeap in heap_tricks - Rust
    -

    Struct heap_tricks::RemovableHeap

    source ·
    pub struct RemovableHeap<T> { /* private fields */ }
    Expand description

    論理削除のできるヒープです。

    -

    §⚠️ 注意点

    +
    pub struct RemovableHeap<T> { /* private fields */ }
    Expand description

    論理削除のできるヒープです。

    +

    ⚠️ 注意点

    ヒープに入っていない要素を削除すると たとえその要素をすぐに挿入し直したとしても、 その後の挙動がすべて未定義になります。

    -

    Implementations§

    source§

    impl<T: Copy + Ord + Hash> RemovableHeap<T>

    source

    pub fn new() -> Self

    空のヒープを構築します。

    -
    §Examples
    +

    Implementations§

    source§

    impl<T: Copy + Ord + Hash> RemovableHeap<T>

    source

    pub fn new() -> Self

    空のヒープを構築します。

    +
    Examples
    use heap_tricks::RemovableHeap;
     let heap = RemovableHeap::<()>::new();
     assert_eq!(heap.collect_sorted_vec(), Vec::new());
    -
    source

    pub fn is_empty(&self) -> bool

    ヒープが空ならば true を返します。

    -
    §Examples
    +
    source

    pub fn is_empty(&self) -> bool

    ヒープが空ならば true を返します。

    +
    Examples
    assert_eq!(RemovableHeap::from_iter(Vec::<u32>::new()).is_empty(), true);
     assert_eq!(RemovableHeap::from_iter(vec![42]).is_empty(), false);
    -
    source

    pub fn len(&self) -> usize

    ヒープの長さを返します。

    -
    §Examples
    +
    source

    pub fn len(&self) -> usize

    ヒープの長さを返します。

    +
    Examples
    assert_eq!(RemovableHeap::from_iter(Vec::<u32>::new()).len(), 0);
     assert_eq!(RemovableHeap::from_iter(vec![42, 45, 56]).len(), 3);
    -
    source

    pub fn push(&mut self, x: T)

    ヒープに新しい要素 x を追加します。

    -
    §Examples
    +
    source

    pub fn push(&mut self, x: T)

    ヒープに新しい要素 x を追加します。

    +
    Examples
    let mut heap = RemovableHeap::from_iter(vec![42, 45, 56]);
     heap.push(48);
     assert_eq!(heap.collect_sorted_vec().as_slice(), &[42, 45, 48, 56]);
    -
    source

    pub fn remove_unchecked(&mut self, x: T)

    ヒープに含まれる要素 x を削除します。 +

    source

    pub fn remove_unchecked(&mut self, x: T)

    ヒープに含まれる要素 x を削除します。 ただし、ヒープに含まれない要素を指定した場合、このメソッドの呼び出し 及びその後の挙動は全て未定義になります。

    -
    §Examples
    +
    Examples
    let mut heap = RemovableHeap::from_iter(vec![42, 45, 56]);
     heap.remove_unchecked(45);
     assert_eq!(heap.collect_sorted_vec().as_slice(), &[42, 56]);
     // heap.remove_unchecked(44); やってはいけません。
    -
    source

    pub fn pop(&mut self) -> Option<T>

    ヒープの最大要素が存在すれば、削除して返します。

    -
    §Examples
    +
    source

    pub fn pop(&mut self) -> Option<T>

    ヒープの最大要素が存在すれば、削除して返します。

    +
    Examples
    let mut heap = RemovableHeap::from_iter(vec![42, 45, 56]);
     assert_eq!(heap.pop(), Some(56));
     assert_eq!(heap.collect_sorted_vec().as_slice(), &[42, 45]);
    -
    source

    pub fn peek(&self) -> Option<T>

    ヒープの最大要素が存在すれば、返します。

    -
    §Examples
    +
    source

    pub fn peek(&self) -> Option<T>

    ヒープの最大要素が存在すれば、返します。

    +
    Examples
    let mut heap = RemovableHeap::from_iter(vec![42, 45, 56]);
     assert_eq!(heap.peek(), Some(56));
     assert_eq!(heap.collect_sorted_vec().as_slice(), &[42, 45, 56]);
    -
    source

    pub fn collect_sorted_vec(&self) -> Vec<T>

    ヒープの要素を昇順に格納したベクターを構築します。

    -
    §Examples
    +
    source

    pub fn collect_sorted_vec(&self) -> Vec<T>

    ヒープの要素を昇順に格納したベクターを構築します。

    +
    Examples
    let heap = RemovableHeap::from_iter(vec![42, 45, 56]);
     assert_eq!(heap.collect_sorted_vec().as_slice(), &[42, 45, 56]);
    -

    Trait Implementations§

    source§

    impl<T: Clone> Clone for RemovableHeap<T>

    source§

    fn clone(&self) -> RemovableHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Copy + Ord + Hash + Debug> Debug for RemovableHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Copy + Ord + Hash> Default for RemovableHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Copy + Ord + Hash> FromIterator<T> for RemovableHeap<T>

    source§

    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    §

    impl<T> Freeze for RemovableHeap<T>

    §

    impl<T> RefUnwindSafe for RemovableHeap<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for RemovableHeap<T>
    where - T: Send,

    §

    impl<T> Sync for RemovableHeap<T>
    where - T: Sync,

    §

    impl<T> Unpin for RemovableHeap<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for RemovableHeap<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Clone> Clone for RemovableHeap<T>

    source§

    fn clone(&self) -> RemovableHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Copy + Ord + Hash + Debug> Debug for RemovableHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Copy + Ord + Hash> Default for RemovableHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Copy + Ord + Hash> FromIterator<T> for RemovableHeap<T>

    source§

    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for RemovableHeap<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for RemovableHeap<T>where + T: Send,

    §

    impl<T> Sync for RemovableHeap<T>where + T: Sync,

    §

    impl<T> Unpin for RemovableHeap<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for RemovableHeap<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_tricks/struct.Sum.html b/heap_tricks/struct.Sum.html index 65f6a10e..3e240f14 100644 --- a/heap_tricks/struct.Sum.html +++ b/heap_tricks/struct.Sum.html @@ -1,4 +1,4 @@ -Sum in heap_tricks - RustSum in heap_tricks - Rust
    -

    Struct heap_tricks::Sum

    source ·
    pub struct Sum<T> {
    +

    Struct heap_tricks::Sum

    source ·
    pub struct Sum<T> {
         pub left: T,
         pub right: T,
     }
    Expand description

    総和を集約するための型です。 Handler の一種です。 Sum::default() でデフォルト構築できます。

    -

    Fields§

    §left: T§right: T

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Sum<T>

    source§

    fn clone(&self) -> Sum<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Sum<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default> Default for Sum<T>

    source§

    fn default() -> Sum<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T> Handler<T> for Sum<T>
    where - T: AddAssign<T> + SubAssign<T>,

    source§

    fn push_left(&mut self, value: T)

    左側に挿入するときのコールバック関数
    source§

    fn pop_left(&mut self, value: T)

    左側から削除するときのコールバック関数
    source§

    fn push_right(&mut self, value: T)

    右側に挿入するときのコールバック関数
    source§

    fn pop_right(&mut self, value: T)

    右側から削除するときのコールバック関数
    source§

    impl<T: Hash> Hash for Sum<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq for Sum<T>

    source§

    fn eq(&self, other: &Sum<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Copy> Copy for Sum<T>

    source§

    impl<T: Eq> Eq for Sum<T>

    source§

    impl<T> StructuralPartialEq for Sum<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for Sum<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for Sum<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for Sum<T>
    where - T: Send,

    §

    impl<T> Sync for Sum<T>
    where - T: Sync,

    §

    impl<T> Unpin for Sum<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Sum<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §left: T§right: T

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Sum<T>

    source§

    fn clone(&self) -> Sum<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Sum<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default> Default for Sum<T>

    source§

    fn default() -> Sum<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T> Handler<T> for Sum<T>where + T: AddAssign<T> + SubAssign<T>,

    source§

    fn push_left(&mut self, value: T)

    左側に挿入するときのコールバック関数
    source§

    fn pop_left(&mut self, value: T)

    左側から削除するときのコールバック関数
    source§

    fn push_right(&mut self, value: T)

    右側に挿入するときのコールバック関数
    source§

    fn pop_right(&mut self, value: T)

    右側から削除するときのコールバック関数
    source§

    impl<T: Hash> Hash for Sum<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq<Sum<T>> for Sum<T>

    source§

    fn eq(&self, other: &Sum<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Copy> Copy for Sum<T>

    source§

    impl<T: Eq> Eq for Sum<T>

    source§

    impl<T> StructuralEq for Sum<T>

    source§

    impl<T> StructuralPartialEq for Sum<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Sum<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for Sum<T>where + T: Send,

    §

    impl<T> Sync for Sum<T>where + T: Sync,

    §

    impl<T> Unpin for Sum<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Sum<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/heap_tricks/trait.Handler.html b/heap_tricks/trait.Handler.html index f4c24564..30e51943 100644 --- a/heap_tricks/trait.Handler.html +++ b/heap_tricks/trait.Handler.html @@ -1,4 +1,4 @@ -Handler in heap_tricks - RustHandler in heap_tricks - Rust
    -

    Trait heap_tricks::Handler

    source ·
    pub trait Handler<T> {
    +

    Trait heap_tricks::Handler

    source ·
    pub trait Handler<T> {
         // Required methods
         fn push_left(&mut self, value: T);
         fn pop_left(&mut self, value: T);
    @@ -43,9 +43,9 @@
     オブジェクトとして使用されます

    NopSum を使っておけばだいたい大丈夫ですが、 必要なら自分で定義することができます。

    -

    Required Methods§

    source

    fn push_left(&mut self, value: T)

    左側に挿入するときのコールバック関数

    -
    source

    fn pop_left(&mut self, value: T)

    左側から削除するときのコールバック関数

    -
    source

    fn push_right(&mut self, value: T)

    右側に挿入するときのコールバック関数

    -
    source

    fn pop_right(&mut self, value: T)

    右側から削除するときのコールバック関数

    -

    Implementors§

    source§

    impl<T> Handler<T> for Nop

    source§

    impl<T> Handler<T> for Sum<T>
    where - T: AddAssign<T> + SubAssign<T>,

    \ No newline at end of file +

    Required Methods§

    source

    fn push_left(&mut self, value: T)

    左側に挿入するときのコールバック関数

    +
    source

    fn pop_left(&mut self, value: T)

    左側から削除するときのコールバック関数

    +
    source

    fn push_right(&mut self, value: T)

    右側に挿入するときのコールバック関数

    +
    source

    fn pop_right(&mut self, value: T)

    右側から削除するときのコールバック関数

    +

    Implementors§

    source§

    impl<T> Handler<T> for Nop

    source§

    impl<T> Handler<T> for Sum<T>where + T: AddAssign<T> + SubAssign<T>,

    \ No newline at end of file diff --git a/help.html b/help.html index 8aa60ff9..cc22d4a2 100644 --- a/help.html +++ b/help.html @@ -1,4 +1,4 @@ -HelpRustdoc help
    -

    Rustdoc help

    Back
    \ No newline at end of file +

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/hld/all.html b/hld/all.html index a39c740a..88b5b39a 100644 --- a/hld/all.html +++ b/hld/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/hld/index.html b/hld/index.html index 0b8e0416..4cedc783 100644 --- a/hld/index.html +++ b/hld/index.html @@ -1,4 +1,4 @@ -hld - Rusthld - Rust
    -

    Crate hld

    source ·
    Expand description

    Heavy-Light Decomposition

    -

    §Usage

    +

    Crate hld

    source ·
    Expand description

    Heavy-Light Decomposition

    +

    Usage

    -

    Structs§

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/hld/struct.Hld.html b/hld/struct.Hld.html index 15e53340..5661d33c 100644 --- a/hld/struct.Hld.html +++ b/hld/struct.Hld.html @@ -1,4 +1,4 @@ -Hld in hld - RustHld in hld - Rust
    -

    Struct hld::Hld

    source ·
    pub struct Hld {
    -    pub parent: Vec<usize>,
    -    pub index: Vec<usize>,
    -    pub head: Vec<usize>,
    +

    Struct hld::Hld

    source ·
    pub struct Hld {
    +    pub parent: Vec<usize>,
    +    pub index: Vec<usize>,
    +    pub head: Vec<usize>,
     }
    Expand description

    Heavy-Light Decomposition

    -

    Fields§

    §parent: Vec<usize>

    vertex id -> parent vertex id

    -
    §index: Vec<usize>

    vertex id -> vertex index (in the hld order)

    -
    §head: Vec<usize>

    vertex id -> head vertex id

    -

    Implementations§

    source§

    impl Hld

    source

    pub fn from_short_parents(parent: Vec<usize>) -> (Self, Vec<Vec<usize>>)

    From $p _ 1, \dots, p _ { n - 1 }$. Root is always $0$.

    -
    source

    pub fn from_edges( - root: usize, - edges: &[(usize, usize)], -) -> (Self, Vec<Vec<usize>>)

    From the set of undirected edges $(u _ 0, v _ 0), \dots ( u _ { n - 2 } , v _ { n - 2 } )$

    +

    Fields§

    §parent: Vec<usize>

    vertex id -> parent vertex id

    +
    §index: Vec<usize>

    vertex id -> vertex index (in the hld order)

    +
    §head: Vec<usize>

    vertex id -> head vertex id

    +

    Implementations§

    source§

    impl Hld

    source

    pub fn from_short_parents(parent: Vec<usize>) -> (Self, Vec<Vec<usize>>)

    From $p _ 1, \dots, p _ { n - 1 }$. Root is always $0$.

    +
    source

    pub fn from_edges( + root: usize, + edges: &[(usize, usize)] +) -> (Self, Vec<Vec<usize>>)

    From the set of undirected edges $(u _ 0, v _ 0), \dots ( u _ { n - 2 } , v _ { n - 2 } )$

    The second return value g is the graph with parents removed.

    -
    source

    pub fn from_edge_iterator( - root: usize, - edges: impl ExactSizeIterator<Item = (usize, usize)>, -) -> (Self, Vec<Vec<usize>>)

    Iterator version of from_edges

    -
    source

    pub fn path_segments(&self, from: usize, to: usize) -> PathSegments<'_>

    Decompose the (directed) path from --> to to the path segments.

    -
    §Items
    +
    source

    pub fn from_edge_iterator( + root: usize, + edges: impl ExactSizeIterator<Item = (usize, usize)> +) -> (Self, Vec<Vec<usize>>)

    Iterator version of from_edges

    +
    source

    pub fn path_segments(&self, from: usize, to: usize) -> PathSegments<'_>

    Decompose the (directed) path from --> to to the path segments.

    +
    Items
    • i: root-side
    • j: left-side
    • last: last path segments (i.e. contains the LCA)
    • reverse: from --> to and i --> j is in the different direction
    -
    source

    pub fn path_segments_by_index( +

    source

    pub fn path_segments_by_index( &self, - i: usize, - j: usize, -) -> impl Iterator<Item = (usize, usize, bool, bool)> + '_

    Variation of path_segments that returns the index.

    -
    source

    pub fn ledacy_iter_v( + i: usize, + j: usize +) -> impl Iterator<Item = (usize, usize, bool, bool)> + '_

    Variation of path_segments that returns the index.

    +
    source

    pub fn ledacy_iter_v( &self, - i: usize, - j: usize, -) -> impl Iterator<Item = (usize, usize)> + '_

    deprecated

    -
    source

    pub fn lca(&self, i: usize, j: usize) -> usize

    Returns the lca

    -
    source

    pub fn dist(&self, i: usize, j: usize) -> usize

    Returns the distance between two vertices

    -
    source

    pub fn between(&self, i: usize, j: usize, k: usize) -> bool

    j lies between i and k

    -

    Auto Trait Implementations§

    §

    impl Freeze for Hld

    §

    impl RefUnwindSafe for Hld

    §

    impl Send for Hld

    §

    impl Sync for Hld

    §

    impl Unpin for Hld

    §

    impl UnwindSafe for Hld

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + i: usize, + j: usize +) -> impl Iterator<Item = (usize, usize)> + '_

    deprecated

    +
    source

    pub fn lca(&self, i: usize, j: usize) -> usize

    Returns the lca

    +
    source

    pub fn dist(&self, i: usize, j: usize) -> usize

    Returns the distance between two vertices

    +
    source

    pub fn between(&self, i: usize, j: usize, k: usize) -> bool

    j lies between i and k

    +

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Hld

    §

    impl Send for Hld

    §

    impl Sync for Hld

    §

    impl Unpin for Hld

    §

    impl UnwindSafe for Hld

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/hld/struct.PathSegments.html b/hld/struct.PathSegments.html index 964929e0..cb634946 100644 --- a/hld/struct.PathSegments.html +++ b/hld/struct.PathSegments.html @@ -1,4 +1,4 @@ -PathSegments in hld - RustPathSegments in hld - Rust
    -

    Struct hld::PathSegments

    source ·
    pub struct PathSegments<'a> { /* private fields */ }
    Expand description

    Iterator

    -

    Trait Implementations§

    source§

    impl Iterator for PathSegments<'_>

    source§

    type Item = (usize, usize, bool, bool)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct hld::PathSegments

    source ·
    pub struct PathSegments<'a> { /* private fields */ }
    Expand description

    Iterator

    +

    Trait Implementations§

    source§

    impl Iterator for PathSegments<'_>

    §

    type Item = (usize, usize, bool, bool)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
    source§

    impl FusedIterator for PathSegments<'_>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for PathSegments<'a>

    §

    impl<'a> RefUnwindSafe for PathSegments<'a>

    §

    impl<'a> Send for PathSegments<'a>

    §

    impl<'a> Sync for PathSegments<'a>

    §

    impl<'a> Unpin for PathSegments<'a>

    §

    impl<'a> UnwindSafe for PathSegments<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more
    source§

    impl FusedIterator for PathSegments<'_>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for PathSegments<'a>

    §

    impl<'a> Send for PathSegments<'a>

    §

    impl<'a> Sync for PathSegments<'a>

    §

    impl<'a> Unpin for PathSegments<'a>

    §

    impl<'a> UnwindSafe for PathSegments<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/hopkarp/all.html b/hopkarp/all.html index 664719d7..7f0609fa 100644 --- a/hopkarp/all.html +++ b/hopkarp/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Functions

    \ No newline at end of file +

    List of all items

    Structs

    Functions

    \ No newline at end of file diff --git a/hopkarp/fn.hopkarp.html b/hopkarp/fn.hopkarp.html index 260611b4..125a8d7d 100644 --- a/hopkarp/fn.hopkarp.html +++ b/hopkarp/fn.hopkarp.html @@ -1,4 +1,4 @@ -hopkarp in hopkarp - Rusthopkarp in hopkarp - Rust
    -

    Function hopkarp::hopkarp

    source ·
    pub fn hopkarp(w: usize, graph: &[Vec<usize>]) -> HopkarpResult
    Expand description

    Takes a forward adjacency list and the length of the right side, and returns a maximum +

    Function hopkarp::hopkarp

    source ·
    pub fn hopkarp(w: usize, graph: &[Vec<usize>]) -> HopkarpResult
    Expand description

    Takes a forward adjacency list and the length of the right side, and returns a maximum cardinality bipartite matching.

    -

    §Complexity

    +

    Complexity

    O ( √V E ) in worst.

    \ No newline at end of file diff --git a/hopkarp/index.html b/hopkarp/index.html index 8065847e..8f07feaa 100644 --- a/hopkarp/index.html +++ b/hopkarp/index.html @@ -1,4 +1,4 @@ -hopkarp - Rusthopkarp - Rust
    -

    Crate hopkarp

    source ·
    Expand description

    Finds a maximum cardinality bipartite matching by Hopcroft―Karp’s algorithm.

    -

    §Basic usage

    +

    Crate hopkarp

    source ·
    Expand description

    Finds a maximum cardinality bipartite matching by Hopcroft―Karp’s algorithm.

    +

    Basic usage

    Use a function hopkarp and get results via HopkarpResult.

    -

    §Example

    +

    Example

    use hopkarp::hopkarp;
     
     let g = vec![vec![0, 1], vec![0]];
     let result = hopkarp(2, &g);
     assert_eq!(result.count, 2);
    -

    Structs§

    • Summary of the result of Hopcroft―Karp’s algorithm.

    Functions§

    • Takes a forward adjacency list and the length of the right side, and returns a maximum +

    Structs

    • Summary of the result of Hopcroft―Karp’s algorithm.

    Functions

    • Takes a forward adjacency list and the length of the right side, and returns a maximum cardinality bipartite matching.
    \ No newline at end of file diff --git a/hopkarp/struct.HopkarpResult.html b/hopkarp/struct.HopkarpResult.html index aad0b9c4..c11b6b85 100644 --- a/hopkarp/struct.HopkarpResult.html +++ b/hopkarp/struct.HopkarpResult.html @@ -1,4 +1,4 @@ -HopkarpResult in hopkarp - RustHopkarpResult in hopkarp - Rust
    -

    Struct hopkarp::HopkarpResult

    source ·
    pub struct HopkarpResult {
    -    pub count: usize,
    -    pub forward: Box<[Option<usize>]>,
    -    pub backward: Box<[Option<usize>]>,
    -    pub left: Box<[bool]>,
    -    pub right: Box<[bool]>,
    +

    Struct hopkarp::HopkarpResult

    source ·
    pub struct HopkarpResult {
    +    pub count: usize,
    +    pub forward: Box<[Option<usize>]>,
    +    pub backward: Box<[Option<usize>]>,
    +    pub left: Box<[bool]>,
    +    pub right: Box<[bool]>,
     }
    Expand description

    Summary of the result of Hopcroft―Karp’s algorithm.

    -

    §Maximum cardinality matching

    +

    Maximum cardinality matching

    For all i < h and j < w, it holds that forward[i] == Some(j) and Some(i) == backward[j] if (i, j) is an edge of the resulting matching, while forward[i].is_none() if i is not in match and backward[j].is_none() if j is not in match.

    -

    §Minimum cut

    +

    Minimum cut

    The set of i < h s.t. left[i] is true and j < w s.t. right[j] is true consists the set of vertices which are reachable from the source in the resulting residual graph.

    -

    Fields§

    §count: usize

    Cardinality of a maximum cardinality bipartite matching.

    -
    §forward: Box<[Option<usize>]>§backward: Box<[Option<usize>]>§left: Box<[bool]>§right: Box<[bool]>

    Trait Implementations§

    source§

    impl Clone for HopkarpResult

    source§

    fn clone(&self) -> HopkarpResult

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HopkarpResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for HopkarpResult

    source§

    fn default() -> HopkarpResult

    Returns the “default value” for a type. Read more
    source§

    impl Hash for HopkarpResult

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for HopkarpResult

    source§

    fn eq(&self, other: &HopkarpResult) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for HopkarpResult

    source§

    impl StructuralPartialEq for HopkarpResult

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §count: usize

    Cardinality of a maximum cardinality bipartite matching.

    +
    §forward: Box<[Option<usize>]>§backward: Box<[Option<usize>]>§left: Box<[bool]>§right: Box<[bool]>

    Trait Implementations§

    source§

    impl Clone for HopkarpResult

    source§

    fn clone(&self) -> HopkarpResult

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for HopkarpResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for HopkarpResult

    source§

    fn default() -> HopkarpResult

    Returns the “default value” for a type. Read more
    source§

    impl Hash for HopkarpResult

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<HopkarpResult> for HopkarpResult

    source§

    fn eq(&self, other: &HopkarpResult) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for HopkarpResult

    source§

    impl StructuralEq for HopkarpResult

    source§

    impl StructuralPartialEq for HopkarpResult

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/hungarian/all.html b/hungarian/all.html index 0ea92bb0..0947a05f 100644 --- a/hungarian/all.html +++ b/hungarian/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file diff --git a/hungarian/fn.hungarian.html b/hungarian/fn.hungarian.html index 877ba5bb..98ea554b 100644 --- a/hungarian/fn.hungarian.html +++ b/hungarian/fn.hungarian.html @@ -1,4 +1,4 @@ -hungarian in hungarian - Rusthungarian in hungarian - Rust
    -

    Function hungarian::hungarian

    source ·
    pub fn hungarian<T: Value>(cost_matrix: &[Vec<T>]) -> HungarianResult<T>
    Expand description

    See the crate level documentation

    +

    Function hungarian::hungarian

    source ·
    pub fn hungarian<T: Value>(cost_matrix: &[Vec<T>]) -> HungarianResult<T>
    Expand description
    \ No newline at end of file diff --git a/hungarian/index.html b/hungarian/index.html index 2b1984a4..2e6c822d 100644 --- a/hungarian/index.html +++ b/hungarian/index.html @@ -1,4 +1,4 @@ -hungarian - Rusthungarian - Rust
    -

    Crate hungarian

    source ·
    Expand description

    Solve an assignment problem by Hungarian algorithm.

    -

    §Example

    +

    Crate hungarian

    source ·
    Expand description

    Solve an assignment problem by Hungarian algorithm.

    +

    Example

    Basic usage:

    use hungarian::hungarian;
    @@ -43,4 +43,4 @@ 

    §Example

    assert_eq!(result.value, 17); assert_eq!(&*result.forward, vec![0, 2].as_slice()); assert_eq!(&*result.backward, vec![Some(0), None, Some(1)].as_slice());
    -

    Structs§

    • A value object to represent the optimal solution of an assignment problem.

    Traits§

    Functions§

    \ No newline at end of file +

    Structs

    • A value object to represent the optimal solution of an assignment problem.

    Traits

    Functions

    \ No newline at end of file diff --git a/hungarian/struct.HungarianResult.html b/hungarian/struct.HungarianResult.html index 21745078..42a27a36 100644 --- a/hungarian/struct.HungarianResult.html +++ b/hungarian/struct.HungarianResult.html @@ -1,4 +1,4 @@ -HungarianResult in hungarian - RustHungarianResult in hungarian - Rust
    -

    Struct hungarian::HungarianResult

    source ·
    pub struct HungarianResult<T: Value> {
    -    pub forward: Box<[usize]>,
    -    pub backward: Box<[Option<usize>]>,
    -    pub left: Box<[T]>,
    -    pub right: Box<[T]>,
    +
    pub struct HungarianResult<T: Value> {
    +    pub forward: Box<[usize]>,
    +    pub backward: Box<[Option<usize>]>,
    +    pub left: Box<[T]>,
    +    pub right: Box<[T]>,
         pub value: T,
     }
    Expand description

    A value object to represent the optimal solution of an assignment problem.

    -

    Fields§

    §forward: Box<[usize]>

    Takes the first component of a match and returns the second one.

    -
    §backward: Box<[Option<usize>]>

    Takes the second component of a match and returns the first one.

    -
    §left: Box<[T]>

    A left half of an optimal potential.

    -
    §right: Box<[T]>

    A right half of an optimal potential.

    -
    §value: T

    The value of an optimal solution.

    -

    Trait Implementations§

    source§

    impl<T: Clone + Value> Clone for HungarianResult<T>

    source§

    fn clone(&self) -> HungarianResult<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Value> Debug for HungarianResult<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq + Value> PartialEq for HungarianResult<T>

    source§

    fn eq(&self, other: &HungarianResult<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq + Value> Eq for HungarianResult<T>

    source§

    impl<T: Value> StructuralPartialEq for HungarianResult<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for HungarianResult<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for HungarianResult<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for HungarianResult<T>
    where - T: Send,

    §

    impl<T> Sync for HungarianResult<T>
    where - T: Sync,

    §

    impl<T> Unpin for HungarianResult<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for HungarianResult<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §forward: Box<[usize]>

    Takes the first component of a match and returns the second one.

    +
    §backward: Box<[Option<usize>]>

    Takes the second component of a match and returns the first one.

    +
    §left: Box<[T]>

    A left half of an optimal potential.

    +
    §right: Box<[T]>

    A right half of an optimal potential.

    +
    §value: T

    The value of an optimal solution.

    +

    Trait Implementations§

    source§

    impl<T: Clone + Value> Clone for HungarianResult<T>

    source§

    fn clone(&self) -> HungarianResult<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Value> Debug for HungarianResult<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq + Value> PartialEq<HungarianResult<T>> for HungarianResult<T>

    source§

    fn eq(&self, other: &HungarianResult<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq + Value> Eq for HungarianResult<T>

    source§

    impl<T: Value> StructuralEq for HungarianResult<T>

    source§

    impl<T: Value> StructuralPartialEq for HungarianResult<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for HungarianResult<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for HungarianResult<T>where + T: Send,

    §

    impl<T> Sync for HungarianResult<T>where + T: Sync,

    §

    impl<T> Unpin for HungarianResult<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for HungarianResult<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/hungarian/trait.Value.html b/hungarian/trait.Value.html index 4ccdd438..d18534c8 100644 --- a/hungarian/trait.Value.html +++ b/hungarian/trait.Value.html @@ -1,4 +1,4 @@ -Value in hungarian - RustValue in hungarian - Rust
    -

    Trait hungarian::Value

    source ·
    pub trait Value:
    -    Sized
    -    + Copy
    -    + Add<Output = Self>
    -    + AddAssign
    -    + Sub<Output = Self>
    -    + SubAssign
    -    + Sum
    -    + PartialOrd {
    +

    Trait hungarian::Value

    source ·
    pub trait Value: Sized + Copy + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Sum + PartialOrd {
         // Required methods
         fn zero() -> Self;
         fn infinity() -> Self;
     }
    Expand description

    A trait to adapt a value type to hungarian

    This trait is already implemented for all the signed and unsigned integer types.

    -

    Required Methods§

    source

    fn zero() -> Self

    source

    fn infinity() -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Value for f32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for f64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i8

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i16

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i128

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for isize

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u8

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u16

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u128

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for usize

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn zero() -> Self

    source

    fn infinity() -> Self

    Implementations on Foreign Types§

    source§

    impl Value for i32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for f32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i128

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u8

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for usize

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u128

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for f64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for isize

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i8

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u64

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u16

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for i16

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    source§

    impl Value for u32

    source§

    fn zero() -> Self

    source§

    fn infinity() -> Self

    Implementors§

    \ No newline at end of file diff --git a/implementors/alloc/string/trait.ToString.js b/implementors/alloc/string/trait.ToString.js new file mode 100644 index 00000000..0b986c17 --- /dev/null +++ b/implementors/alloc/string/trait.ToString.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl ToString for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/binary/trait.Pow.js b/implementors/binary/trait.Pow.js new file mode 100644 index 00000000..205ab2d3 --- /dev/null +++ b/implementors/binary/trait.Pow.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"binary":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/cht/trait.ConvexOrConcave.js b/implementors/cht/trait.ConvexOrConcave.js new file mode 100644 index 00000000..ed570e2d --- /dev/null +++ b/implementors/cht/trait.ConvexOrConcave.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"cht":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/cipolla/trait.Unsigned.js b/implementors/cipolla/trait.Unsigned.js new file mode 100644 index 00000000..b704ed89 --- /dev/null +++ b/implementors/cipolla/trait.Unsigned.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"cipolla":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js new file mode 100644 index 00000000..e656a72a --- /dev/null +++ b/implementors/core/clone/trait.Clone.js @@ -0,0 +1,39 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: Clone, F: Clone, I: Clone> Clone for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T: Clone> Clone for AvlTree<T>"]], +"bfs01":[["impl Clone for Weight"]], +"bitvec":[["impl Clone for BitVec"]], +"bsgs":[["impl<T: Clone, Mul: Clone> Clone for Bsgs<T, Mul>"]], +"cht":[["impl Clone for Convex"],["impl<C: Clone> Clone for VecCht<C>"],["impl<C: Clone> Clone for BTreeCht<C>"],["impl Clone for Concave"],["impl Clone for Quadratic"]], +"dinic":[["impl<T: Clone> Clone for Dinic<T>"],["impl<T: Clone> Clone for Edge<T>"],["impl Clone for EdgeKey"]], +"dual_segtree":[["impl<O: Clone + Ops> Clone for DualSegtree<O>where\n O::Value: Clone,"]], +"erato":[["impl Clone for Sieve"],["impl Clone for LpdSieve"]], +"fp":[["impl<const P: u64> Clone for Fp<P>"]], +"gco":[["impl Clone for GcoResult"],["impl Clone for Gco"]], +"heap_slope_trick":[["impl Clone for HeapSlopeTrick"],["impl Clone for Summary"]], +"heap_tricks":[["impl<T: Clone> Clone for Sum<T>"],["impl<T: Clone, H: Clone> Clone for DoubleHeap<T, H>"],["impl<T: Clone> Clone for RemovableHeap<T>"],["impl Clone for Nop"]], +"hopkarp":[["impl Clone for HopkarpResult"]], +"hungarian":[["impl<T: Clone + Value> Clone for HungarianResult<T>"]], +"interval_heap":[["impl<T: Clone + Ord> Clone for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T: Clone> Clone for Segbeats<T>"]], +"lazy_segtree":[["impl<O: Clone + Op> Clone for LazySegtree<O>where\n O::Value: Clone,\n O::Operator: Clone,"]], +"lin_ineq":[["impl<T: Clone> Clone for Interval<T>"]], +"low_link":[["impl Clone for LowLink"]], +"mincost_flow":[["impl Clone for MinCostFlow"],["impl Clone for Edge"]], +"partially_persistent_union_find":[["impl Clone for PartiallyPersistentUnionFind"]], +"radix_heap":[["impl<T: Clone> Clone for RadixHeap<T>"]], +"rational":[["impl<T: Clone + Signed> Clone for Rational<T>"]], +"rbtree":[["impl<T: Clone, O: Op<Value = T>> Clone for RbTree<T, O>where\n O::Summary: Clone,"]], +"scc":[["impl Clone for Scc"]], +"segbeats":[["impl<T: Clone> Clone for Segbeats<T>"]], +"segbeats_task3":[["impl<T: Clone> Clone for Segbeats<T>"]], +"skew_heap":[["impl<T: Clone> Clone for SkewHeap<T>"]], +"snippetter":[["impl Clone for CrateMetadata"]], +"splay_tree":[["impl<O: LazyOps> Clone for SplayTree<O>"]], +"trie":[["impl<V: Clone> Clone for TrieMap<V>"],["impl Clone for TrieSet"]], +"two_sat":[["impl Clone for TwoSat"]], +"uf_checklist":[["impl Clone for UfChecklist"]], +"union_find":[["impl<O: Clone + Op> Clone for UnionFind<O>where\n O::Value: Clone,"]], +"vec_lines":[["impl<T: Clone> Clone for Line<T>"],["impl<T: Clone, C: Clone> Clone for VecLines<T, C>"],["impl Clone for IncreasingTilt"],["impl Clone for DecreasingTilt"]], +"wavelet_matrix":[["impl<'a> Clone for Spans<'a>"],["impl Clone for StaticBitVec"],["impl Clone for WaveletMatrix"],["impl<'a> Clone for SpanInNode<'a>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.Eq.js b/implementors/core/cmp/trait.Eq.js new file mode 100644 index 00000000..89f0ad87 --- /dev/null +++ b/implementors/core/cmp/trait.Eq.js @@ -0,0 +1,27 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: Eq, F: Eq, I: Eq> Eq for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T: Eq> Eq for AvlTree<T>"]], +"bfs01":[["impl Eq for Weight"]], +"bitvec":[["impl Eq for BitVec"]], +"cht":[["impl<C: Eq> Eq for VecCht<C>"],["impl Eq for Quadratic"],["impl<C: Eq> Eq for BTreeCht<C>"]], +"dinic":[["impl<T: Eq> Eq for Edge<T>"],["impl Eq for EdgeKey"]], +"fp":[["impl<const P: u64> Eq for Fp<P>"]], +"gco":[["impl Eq for GcoResult"]], +"heap_slope_trick":[["impl Eq for Summary"]], +"heap_tricks":[["impl Eq for Nop"],["impl<T: Eq> Eq for Sum<T>"]], +"hopkarp":[["impl Eq for HopkarpResult"]], +"hungarian":[["impl<T: Eq + Value> Eq for HungarianResult<T>"]], +"interval_heap":[["impl<T: Eq + Ord> Eq for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T: Eq> Eq for Segbeats<T>"]], +"low_link":[["impl Eq for LowLink"]], +"mincost_flow":[["impl Eq for Edge"]], +"radix_heap":[["impl<T: Eq> Eq for RadixHeap<T>"]], +"rational":[["impl<T: Signed> Eq for Rational<T>"]], +"scc":[["impl Eq for Scc"]], +"segbeats":[["impl<T: Eq> Eq for Segbeats<T>"]], +"segbeats_task3":[["impl<T: Eq> Eq for Segbeats<T>"]], +"splay_tree":[["impl<O: LazyOps> Eq for SplayTree<O>where\n O::Value: Eq,"]], +"two_sat":[["impl Eq for TwoSat"]], +"vec_lines":[["impl<T: Eq> Eq for Line<T>"],["impl Eq for IncreasingTilt"],["impl Eq for DecreasingTilt"],["impl<T: Eq, C: Eq> Eq for VecLines<T, C>"]], +"wavelet_matrix":[["impl Eq for StaticBitVec"],["impl<'a> Eq for SpanInNode<'a>"],["impl<'a> Eq for Spans<'a>"],["impl Eq for WaveletMatrix"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.Ord.js b/implementors/core/cmp/trait.Ord.js new file mode 100644 index 00000000..36d21bc1 --- /dev/null +++ b/implementors/core/cmp/trait.Ord.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"avl_tree":[["impl<T: Ord> Ord for AvlTree<T>"]], +"rational":[["impl<T: Signed> Ord for Rational<T>"]], +"splay_tree":[["impl<O: LazyOps> Ord for SplayTree<O>where\n O::Value: Ord,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js new file mode 100644 index 00000000..2df949ad --- /dev/null +++ b/implementors/core/cmp/trait.PartialEq.js @@ -0,0 +1,34 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: PartialEq, F: PartialEq, I: PartialEq> PartialEq<Skipped<'a, T, F, I>> for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T: PartialEq> PartialEq<AvlTree<T>> for AvlTree<T>"],["impl<T, A> PartialEq<[A]> for AvlTree<T>where\n T: PartialEq<A> + PartialEq,"]], +"bfs01":[["impl PartialEq<Weight> for Weight"]], +"bitvec":[["impl PartialEq<BitVec> for BitVec"]], +"cht":[["impl<C: PartialEq> PartialEq<BTreeCht<C>> for BTreeCht<C>"],["impl PartialEq<Quadratic> for Quadratic"],["impl<C: PartialEq> PartialEq<VecCht<C>> for VecCht<C>"]], +"dinic":[["impl PartialEq<EdgeKey> for EdgeKey"],["impl<T: PartialEq> PartialEq<Dinic<T>> for Dinic<T>"],["impl<T: PartialEq> PartialEq<Edge<T>> for Edge<T>"]], +"dual_segtree":[["impl<O: PartialEq + Ops> PartialEq<DualSegtree<O>> for DualSegtree<O>where\n O::Value: PartialEq,"]], +"erato":[["impl PartialEq<Sieve> for Sieve"],["impl PartialEq<LpdSieve> for LpdSieve"]], +"fp":[["impl<const P: u64> PartialEq<Fp<P>> for Fp<P>"]], +"gco":[["impl PartialEq<Gco> for Gco"],["impl PartialEq<GcoResult> for GcoResult"]], +"heap_slope_trick":[["impl PartialEq<Summary> for Summary"]], +"heap_tricks":[["impl<T: PartialEq> PartialEq<Sum<T>> for Sum<T>"],["impl PartialEq<Nop> for Nop"]], +"hopkarp":[["impl PartialEq<HopkarpResult> for HopkarpResult"]], +"hungarian":[["impl<T: PartialEq + Value> PartialEq<HungarianResult<T>> for HungarianResult<T>"]], +"interval_heap":[["impl<T: PartialEq + Ord> PartialEq<IntervalHeap<T>> for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T: PartialEq> PartialEq<Segbeats<T>> for Segbeats<T>"]], +"low_link":[["impl PartialEq<LowLink> for LowLink"]], +"mincost_flow":[["impl PartialEq<Edge> for Edge"],["impl PartialEq<MinCostFlow> for MinCostFlow"]], +"radix_heap":[["impl<T: PartialEq> PartialEq<RadixHeap<T>> for RadixHeap<T>"]], +"rational":[["impl<T: Signed> PartialEq<Rational<T>> for Rational<T>"]], +"rbtree":[["impl<T: PartialEq, O: Op<Value = T>> PartialEq<RbTree<T, O>> for RbTree<T, O>where\n O::Summary: PartialEq,"]], +"scc":[["impl PartialEq<Scc> for Scc"]], +"segbeats":[["impl<T: PartialEq> PartialEq<Segbeats<T>> for Segbeats<T>"]], +"segbeats_task3":[["impl<T: PartialEq> PartialEq<Segbeats<T>> for Segbeats<T>"]], +"skew_heap":[["impl<T: PartialEq> PartialEq<SkewHeap<T>> for SkewHeap<T>"]], +"snippetter":[["impl PartialEq<CrateMetadata> for CrateMetadata"]], +"splay_tree":[["impl<O: LazyOps> PartialEq<SplayTree<O>> for SplayTree<O>where\n O::Value: PartialEq,"]], +"trie":[["impl PartialEq<TrieSet> for TrieSet"],["impl<V: PartialEq> PartialEq<TrieMap<V>> for TrieMap<V>"]], +"two_sat":[["impl PartialEq<TwoSat> for TwoSat"]], +"union_find":[["impl<O: PartialEq + Op> PartialEq<UnionFind<O>> for UnionFind<O>where\n O::Value: PartialEq,"]], +"vec_lines":[["impl<T: PartialEq, C: PartialEq> PartialEq<VecLines<T, C>> for VecLines<T, C>"],["impl PartialEq<IncreasingTilt> for IncreasingTilt"],["impl PartialEq<DecreasingTilt> for DecreasingTilt"],["impl<T: PartialEq> PartialEq<Line<T>> for Line<T>"]], +"wavelet_matrix":[["impl<'a> PartialEq<Spans<'a>> for Spans<'a>"],["impl<'a> PartialEq<SpanInNode<'a>> for SpanInNode<'a>"],["impl PartialEq<StaticBitVec> for StaticBitVec"],["impl PartialEq<WaveletMatrix> for WaveletMatrix"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/cmp/trait.PartialOrd.js b/implementors/core/cmp/trait.PartialOrd.js new file mode 100644 index 00000000..c262fb8f --- /dev/null +++ b/implementors/core/cmp/trait.PartialOrd.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"avl_tree":[["impl<T: PartialOrd> PartialOrd<AvlTree<T>> for AvlTree<T>"]], +"rational":[["impl<T: Signed> PartialOrd<Rational<T>> for Rational<T>"]], +"splay_tree":[["impl<O: LazyOps> PartialOrd<SplayTree<O>> for SplayTree<O>where\n O::Value: PartialOrd,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.From.js b/implementors/core/convert/trait.From.js new file mode 100644 index 00000000..c9c4082d --- /dev/null +++ b/implementors/core/convert/trait.From.js @@ -0,0 +1,8 @@ +(function() {var implementors = { +"cht":[["impl From<i64> for Quadratic"]], +"dual_segtree":[["impl<O: Ops> From<Vec<<O as Ops>::Value, Global>> for DualSegtree<O>"]], +"fp":[["impl<const P: u64> From<i16> for Fp<P>"],["impl<const P: u64> From<isize> for Fp<P>"],["impl<const P: u64> From<i64> for Fp<P>"],["impl<const P: u64> From<i32> for Fp<P>"],["impl<const P: u64> From<u32> for Fp<P>"],["impl<const P: u64> From<u64> for Fp<P>"],["impl<const P: u64> From<i128> for Fp<P>"],["impl<const P: u64> From<u128> for Fp<P>"],["impl<const P: u64> From<u16> for Fp<P>"],["impl<const P: u64> From<i8> for Fp<P>"],["impl<const P: u64> From<usize> for Fp<P>"],["impl<const P: u64> From<u8> for Fp<P>"]], +"interval_heap":[["impl<T: Ord> From<Vec<T, Global>> for IntervalHeap<T>"]], +"sparse_table":[["impl<'a, O: Op> From<&'a [<O as Op>::Value]> for SparseTable<O>where\n O::Value: Clone,"],["impl<O: Op> From<Vec<<O as Op>::Value, Global>> for SparseTable<O>"],["impl<O: Op> From<Vec<Vec<<O as Op>::Value, Global>, Global>> for SparseTable2d<O>"],["impl<'a, O: Op> From<&'a [Vec<<O as Op>::Value, Global>]> for SparseTable2d<O>where\n O::Value: Clone,"]], +"swag":[["impl<O: Op> From<Vec<<O as Op>::Value, Global>> for DequeueSwag<O>where\n O::Value: Clone,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js new file mode 100644 index 00000000..df639217 --- /dev/null +++ b/implementors/core/default/trait.Default.js @@ -0,0 +1,28 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: Default, F: Default, I: Default> Default for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T> Default for AvlTree<T>"]], +"bitvec":[["impl Default for BitVec"]], +"cht":[["impl<C: Default> Default for VecCht<C>"],["impl Default for Quadratic"],["impl<C: Default> Default for BTreeCht<C>"]], +"dual_segtree":[["impl<O: Default + Ops> Default for DualSegtree<O>where\n O::Value: Default,"]], +"erato":[["impl Default for Sieve"],["impl Default for LpdSieve"]], +"gco":[["impl Default for Gco"],["impl Default for GcoResult"]], +"heap_slope_trick":[["impl Default for Summary"],["impl Default for HeapSlopeTrick"]], +"heap_tricks":[["impl Default for Nop"],["impl<T: Copy + Ord + Hash> Default for RemovableHeap<T>"],["impl<T> Default for DoubleHeap<T, Nop>where\n T: Copy + Ord + Hash,"],["impl<T: Default> Default for Sum<T>"]], +"hopkarp":[["impl Default for HopkarpResult"]], +"interval_heap":[["impl<T: Ord> Default for IntervalHeap<T>"]], +"low_link":[["impl Default for LowLink"]], +"mincost_flow":[["impl Default for Edge"],["impl Default for MinCostFlow"]], +"radix_heap":[["impl<T: Debug> Default for RadixHeap<T>"]], +"rational":[["impl<T: Default + Signed> Default for Rational<T>"]], +"rb":[["impl<K: Ord, V> Default for Multimap<K, V>"],["impl<K: Ord> Default for Multiset<K>"],["impl<O: Op> Default for Seg<O>"],["impl<K: Ord, O: MultimapOp> Default for MultimapSeg<K, O>"]], +"rbtree":[["impl<T, O: Op<Value = T>> Default for RbTree<T, O>"]], +"scc":[["impl Default for Scc"]], +"skew_heap":[["impl<T: Ord> Default for SkewHeap<T>"]], +"splay_tree":[["impl<O: LazyOps> Default for SplayTree<O>"]], +"swag":[["impl<O: Op> Default for DequeueSwag<O>"]], +"trie":[["impl Default for TrieSet"],["impl<V> Default for TrieMap<V>"]], +"two_sat":[["impl Default for TwoSat"]], +"union_find":[["impl<O: Default + Op> Default for UnionFind<O>where\n O::Value: Default,"]], +"vec_lines":[["impl<T: Default> Default for Line<T>"],["impl<T: Signed, C: Constraint> Default for VecLines<T, C>"]], +"wavelet_matrix":[["impl Default for StaticBitVec"],["impl Default for WaveletMatrix"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js new file mode 100644 index 00000000..c161b719 --- /dev/null +++ b/implementors/core/fmt/trait.Debug.js @@ -0,0 +1,45 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: Debug, F: Debug, I: Debug> Debug for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T: Debug> Debug for AvlTree<T>"]], +"bfs01":[["impl Debug for Weight"]], +"bitvec":[["impl Debug for BitVec"]], +"bsgs":[["impl<T: Debug, Mul> Debug for Bsgs<T, Mul>"]], +"cht":[["impl Debug for Quadratic"],["impl<C: Debug> Debug for BTreeCht<C>"],["impl<C: Debug> Debug for VecCht<C>"],["impl Debug for Concave"],["impl Debug for Convex"]], +"dinic":[["impl Debug for EdgeKey"],["impl<T: Debug> Debug for Edge<T>"],["impl<T: Value> Debug for Dinic<T>"]], +"dual_segtree":[["impl<O: Ops> Debug for DualSegtree<O>"]], +"erato":[["impl Debug for LpdSieve"],["impl Debug for Sieve"]], +"fp":[["impl<const P: u64> Debug for Fp<P>"]], +"gco":[["impl Debug for Gco"],["impl Debug for GcoResult"]], +"heap_slope_trick":[["impl Debug for HeapSlopeTrick"],["impl Debug for Summary"]], +"heap_tricks":[["impl<T: Debug> Debug for Sum<T>"],["impl Debug for Nop"],["impl<T, H> Debug for DoubleHeap<T, H>where\n T: Copy + Ord + Hash + Debug,\n H: Handler<T> + Debug,"],["impl<T: Copy + Ord + Hash + Debug> Debug for RemovableHeap<T>"]], +"hopkarp":[["impl Debug for HopkarpResult"]], +"hungarian":[["impl<T: Debug + Value> Debug for HungarianResult<T>"]], +"interval_heap":[["impl<T: Debug + Ord> Debug for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T: Debug> Debug for Segbeats<T>"]], +"lazy_segtree":[["impl<O: Debug + Op> Debug for LazySegtree<O>where\n O::Value: Debug,\n O::Operator: Debug,"]], +"lin_ineq":[["impl<T: Debug + Signed> Debug for Interval<T>"]], +"low_link":[["impl Debug for LowLink"]], +"mincost_flow":[["impl Debug for Edge"],["impl Debug for MinCostFlow"]], +"partially_persistent_union_find":[["impl Debug for PartiallyPersistentUnionFind"]], +"radix_heap":[["impl<T: Debug> Debug for RadixHeap<T>"]], +"randtools":[["impl Debug for SimpleGraph"],["impl Debug for SimpleDigraphEdges"],["impl Debug for SimpleDigraph"],["impl Debug for Tree"],["impl Debug for SubRange"],["impl Debug for DistinctTwo"],["impl Debug for SimpleGraphEdges"],["impl Debug for NonEmptySubRange"],["impl Debug for LogUniform"]], +"rational":[["impl<T: Signed> Debug for Rational<T>"]], +"rb":[["impl<K: Ord + Debug, V: Debug> Debug for Multimap<K, V>"],["impl<K: Ord + Debug> Debug for Multiset<K>"],["impl<O: Op> Debug for Seg<O>where\n O::Value: Debug,"]], +"rbtree":[["impl<T: Debug, O: Op<Value = T>> Debug for RbTree<T, O>"]], +"scc":[["impl Debug for Scc"]], +"segbeats":[["impl<T: Debug> Debug for Segbeats<T>"]], +"segbeats_task3":[["impl<T: Elm> Debug for Segbeats<T>"]], +"segtree":[["impl<'a, O: Op> Debug for Entry<'a, O>where\n O::Value: Debug,"],["impl<K, O: Op> Debug for SegtreeWithCompression<K, O>where\n K: Debug,\n O::Value: Debug,"],["impl<O: Op> Debug for Dense2dSegtree<O>where\n O::Value: Debug,"],["impl<K, L, O: Op> Debug for Sparse2dSegtree<K, L, O>where\n K: Debug,\n L: Debug,\n O::Value: Debug,"],["impl<O: Op> Debug for Segtree<O>where\n O::Value: Debug,"]], +"skew_heap":[["impl<T: Debug + Ord> Debug for SkewHeap<T>"]], +"snippetter":[["impl Debug for CrateMetadata"]], +"sparse_table":[["impl<O: Op> Debug for SparseTable2d<O>where\n O::Value: Debug,"],["impl<O: Op> Debug for SparseTable<O>where\n O::Value: Debug,"]], +"splay_tree":[["impl<O: LazyOps> Debug for SplayTree<O>"]], +"swag":[["impl<O: Op> Debug for DequeueSwag<O>where\n O::Value: Debug,"]], +"trie":[["impl Debug for TrieSet"],["impl<V: Debug> Debug for TrieMap<V>"]], +"two_sat":[["impl Debug for TwoSat"]], +"uf_checklist":[["impl<'a> Debug for Iter<'a>"],["impl Debug for UfChecklist"]], +"union_find":[["impl<O: Op> Debug for UnionFind<O>where\n O::Value: Debug,"]], +"veb":[["impl Debug for VebSet"],["impl<V: Debug> Debug for VebMap<V>"]], +"vec_lines":[["impl Debug for IncreasingTilt"],["impl Debug for DecreasingTilt"],["impl<T: Debug, C: Debug> Debug for VecLines<T, C>"],["impl<T: Debug> Debug for Line<T>"]], +"wavelet_matrix":[["impl<'a> Debug for Spans<'a>"],["impl Debug for WaveletMatrix"],["impl Debug for StaticBitVec"],["impl<'a> Debug for SpanInNode<'a>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js new file mode 100644 index 00000000..b8f72af5 --- /dev/null +++ b/implementors/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> Display for Fp<P>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/hash/trait.Hash.js b/implementors/core/hash/trait.Hash.js new file mode 100644 index 00000000..d3ed8b86 --- /dev/null +++ b/implementors/core/hash/trait.Hash.js @@ -0,0 +1,22 @@ +(function() {var implementors = { +"accum":[["impl<'a, T: Hash, F: Hash, I: Hash> Hash for Skipped<'a, T, F, I>"]], +"avl_tree":[["impl<T: Hash> Hash for AvlTree<T>"]], +"bfs01":[["impl Hash for Weight"]], +"bitvec":[["impl Hash for BitVec"]], +"cht":[["impl Hash for Quadratic"],["impl<C: Hash> Hash for VecCht<C>"],["impl Hash for Convex"],["impl Hash for Concave"],["impl<C: Hash> Hash for BTreeCht<C>"]], +"fp":[["impl<const P: u64> Hash for Fp<P>"]], +"gco":[["impl Hash for GcoResult"],["impl Hash for Gco"]], +"heap_slope_trick":[["impl Hash for Summary"]], +"heap_tricks":[["impl<T: Hash> Hash for Sum<T>"],["impl Hash for Nop"]], +"hopkarp":[["impl Hash for HopkarpResult"]], +"low_link":[["impl Hash for LowLink"]], +"mincost_flow":[["impl Hash for Edge"],["impl Hash for MinCostFlow"]], +"rbtree":[["impl<T: Hash, O: Op<Value = T>> Hash for RbTree<T, O>where\n O::Summary: Hash,"]], +"scc":[["impl Hash for Scc"]], +"skew_heap":[["impl<T: Hash> Hash for SkewHeap<T>"]], +"splay_tree":[["impl<O: LazyOps> Hash for SplayTree<O>where\n O::Value: Hash,"]], +"two_sat":[["impl Hash for TwoSat"]], +"union_find":[["impl<O: Hash + Op> Hash for UnionFind<O>where\n O::Value: Hash,"]], +"vec_lines":[["impl<T: Hash, C: Hash> Hash for VecLines<T, C>"],["impl<T: Hash> Hash for Line<T>"],["impl Hash for IncreasingTilt"],["impl Hash for DecreasingTilt"]], +"wavelet_matrix":[["impl<'a> Hash for Spans<'a>"],["impl Hash for WaveletMatrix"],["impl<'a> Hash for SpanInNode<'a>"],["impl Hash for StaticBitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/accum/trait.Product.js b/implementors/core/iter/traits/accum/trait.Product.js new file mode 100644 index 00000000..2de5a79d --- /dev/null +++ b/implementors/core/iter/traits/accum/trait.Product.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"fp":[["impl<'a, const P: u64> Product<&'a Fp<P>> for Fp<P>"],["impl<const P: u64> Product<Fp<P>> for Fp<P>"]], +"lin_ineq":[["impl<'a, T: 'a + Signed> Product<&'a Interval<T>> for Interval<T>"],["impl<T: Signed> Product<Interval<T>> for Interval<T>"]], +"rational":[["impl<'a, T: 'a + Signed> Product<&'a Rational<T>> for Rational<T>"],["impl<T: Signed> Product<Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/accum/trait.Sum.js b/implementors/core/iter/traits/accum/trait.Sum.js new file mode 100644 index 00000000..271a13b6 --- /dev/null +++ b/implementors/core/iter/traits/accum/trait.Sum.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<'a, const P: u64> Sum<&'a Fp<P>> for Fp<P>"],["impl<const P: u64> Sum<Fp<P>> for Fp<P>"]], +"rational":[["impl<T: Signed> Sum<Rational<T>> for Rational<T>"],["impl<'a, T: 'a + Signed> Sum<&'a Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.Extend.js b/implementors/core/iter/traits/collect/trait.Extend.js new file mode 100644 index 00000000..75bb6c6a --- /dev/null +++ b/implementors/core/iter/traits/collect/trait.Extend.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"interval_heap":[["impl<T: Ord> Extend<T> for IntervalHeap<T>"]], +"skew_heap":[["impl<A: Ord> Extend<A> for SkewHeap<A>"],["impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A>"]], +"swag":[["impl<O: Op> Extend<<O as Op>::Value> for DequeueSwag<O>where\n O::Value: Clone,"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.FromIterator.js b/implementors/core/iter/traits/collect/trait.FromIterator.js new file mode 100644 index 00000000..e0956ecd --- /dev/null +++ b/implementors/core/iter/traits/collect/trait.FromIterator.js @@ -0,0 +1,17 @@ +(function() {var implementors = { +"avl_tree":[["impl<T> FromIterator<T> for AvlTree<T>"]], +"bitvec":[["impl FromIterator<bool> for BitVec"]], +"dual_segtree":[["impl<O: Ops> FromIterator<<O as Ops>::Value> for DualSegtree<O>"]], +"heap_tricks":[["impl<T: Copy + Ord + Hash> FromIterator<T> for RemovableHeap<T>"]], +"interval_heap":[["impl<T: Ord> FromIterator<T> for IntervalHeap<T>"]], +"lazy_segtree":[["impl<O: Op> FromIterator<<O as Op>::Value> for LazySegtree<O>where\n O::Value: Clone,\n O::Operator: Clone,"]], +"rb":[["impl<O: Op> FromIterator<<O as Op>::Value> for Seg<O>"]], +"rbtree":[["impl<A, O: Op<Value = A>> FromIterator<A> for RbTree<A, O>"]], +"segtree":[["impl<K, O: Op> FromIterator<(K, <O as Op>::Value)> for SegtreeWithCompression<K, O>where\n K: Clone + Ord,\n O::Value: Clone,"],["impl<O: Op> FromIterator<<O as Op>::Value> for Segtree<O>where\n O::Value: Clone,"],["impl<K, L, O: Op> FromIterator<(K, L, <O as Op>::Value)> for Sparse2dSegtree<K, L, O>where\n K: Ord + Clone,\n L: Ord + Clone,\n O::Value: Clone,"]], +"skew_heap":[["impl<A: Ord> FromIterator<A> for SkewHeap<A>"]], +"sparse_table":[["impl<O: Op> FromIterator<<O as Op>::Value> for SparseTable<O>"]], +"splay_tree":[["impl<O: LazyOps> FromIterator<<O as LazyOps>::Value> for SplayTree<O>"]], +"swag":[["impl<O: Op> FromIterator<<O as Op>::Value> for DequeueSwag<O>where\n O::Value: Clone,"]], +"veb":[["impl<V> FromIterator<(usize, V)> for VebMap<V>"],["impl FromIterator<usize> for VebSet"]], +"wavelet_matrix":[["impl FromIterator<bool> for StaticBitVec"],["impl FromIterator<usize> for WaveletMatrix"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/collect/trait.IntoIterator.js b/implementors/core/iter/traits/collect/trait.IntoIterator.js new file mode 100644 index 00000000..621efac8 --- /dev/null +++ b/implementors/core/iter/traits/collect/trait.IntoIterator.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"avl_tree":[["impl<'a, T> IntoIterator for &'a AvlTree<T>"],["impl<T> IntoIterator for AvlTree<T>"]], +"bitvec":[["impl<'a> IntoIterator for &'a BitVec"]], +"interval_heap":[["impl<T: Ord> IntoIterator for IntervalHeap<T>"]], +"rb":[["impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V>"],["impl<'a, O: Op> IntoIterator for &'a Seg<O>"],["impl<'a, K: Ord> IntoIterator for &'a Multiset<K>"],["impl<'a, K: Ord, O: MultimapOp> IntoIterator for &'a MultimapSeg<K, O>"]], +"rbtree":[["impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O>"]], +"splay_tree":[["impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O>"]], +"swag":[["impl<O: Op> IntoIterator for DequeueSwag<O>"],["impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js b/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js new file mode 100644 index 00000000..c4ac6660 --- /dev/null +++ b/implementors/core/iter/traits/double_ended/trait.DoubleEndedIterator.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"avl_tree":[["impl<'a, T> DoubleEndedIterator for Iter<'a, T>"]], +"splay_tree":[["impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/iterator/trait.Iterator.js b/implementors/core/iter/traits/iterator/trait.Iterator.js new file mode 100644 index 00000000..76f23d9d --- /dev/null +++ b/implementors/core/iter/traits/iterator/trait.Iterator.js @@ -0,0 +1,12 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>where\n F: FnMut(&T, &T) -> T,\n I: FnMut() -> T,"]], +"avl_tree":[["impl<'a, T> Iterator for Iter<'a, T>"],["impl<T> Iterator for IntoIter<T>"]], +"bitvec":[["impl<'a> Iterator for Iter<'a>"]], +"erato":[["impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T>"],["impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T>"],["impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T>"],["impl<T: Int, P: PrimeFactors<T>> Iterator for Unique<T, P>"],["impl<T: Int, P: PrimeFactors<T>> Iterator for Rle<T, P>"]], +"hld":[["impl Iterator for PathSegments<'_>"]], +"rbtree":[["impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O>"]], +"splay_tree":[["impl<'a, O: LazyOps> Iterator for Iter<'a, O>"]], +"trial":[["impl<T: Value> Iterator for PrimeFactorsRle<T>"],["impl<T: Value> Iterator for PrimeFactors<T>"],["impl<T: Value> Iterator for Divisors<T>"]], +"uf_checklist":[["impl Iterator for Iter<'_>"]], +"wavelet_matrix":[["impl<'a> Iterator for Spans<'a>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/iter/traits/marker/trait.FusedIterator.js b/implementors/core/iter/traits/marker/trait.FusedIterator.js new file mode 100644 index 00000000..708a25ee --- /dev/null +++ b/implementors/core/iter/traits/marker/trait.FusedIterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"hld":[["impl FusedIterator for PathSegments<'_>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js new file mode 100644 index 00000000..a34a0573 --- /dev/null +++ b/implementors/core/marker/trait.Copy.js @@ -0,0 +1,11 @@ +(function() {var implementors = { +"bfs01":[["impl Copy for Weight"]], +"cht":[["impl Copy for Quadratic"],["impl Copy for Convex"],["impl Copy for Concave"]], +"dinic":[["impl Copy for EdgeKey"],["impl<T: Copy> Copy for Edge<T>"]], +"fp":[["impl<const P: u64> Copy for Fp<P>"]], +"heap_tricks":[["impl Copy for Nop"],["impl<T: Copy> Copy for Sum<T>"]], +"lin_ineq":[["impl<T: Copy> Copy for Interval<T>"]], +"mincost_flow":[["impl Copy for Edge"]], +"rational":[["impl<T: Copy + Signed> Copy for Rational<T>"]], +"vec_lines":[["impl<T: Copy> Copy for Line<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js new file mode 100644 index 00000000..a99e9362 --- /dev/null +++ b/implementors/core/marker/trait.Freeze.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> Freeze for Skipped<'a, T, F, I>where\n F: Freeze,\n I: Freeze,\n T: Freeze,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> Freeze for AvlTree<T>",1,["avl_tree::AvlTree"]],["impl<'a, T> Freeze for Iter<'a, T>",1,["avl_tree::Iter"]],["impl<T> Freeze for IntoIter<T>",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl Freeze for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl Freeze for BitVec",1,["bitvec::BitVec"]],["impl<'a> Freeze for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> Freeze for Bsgs<T, Mul>where\n Mul: Freeze,\n T: Freeze,",1,["bsgs::Bsgs"]]], +"cht":[["impl Freeze for Convex",1,["cht::Convex"]],["impl Freeze for Concave",1,["cht::Concave"]],["impl<C> Freeze for VecCht<C>",1,["cht::VecCht"]],["impl<C> Freeze for BTreeCht<C>",1,["cht::BTreeCht"]],["impl Freeze for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> Freeze for Dinic<T>",1,["dinic::Dinic"]],["impl<T> Freeze for Edge<T>where\n T: Freeze,",1,["dinic::Edge"]],["impl Freeze for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> Freeze for DualSegtree<O>",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> Freeze for Unique<T, P>where\n P: Freeze,\n T: Freeze,",1,["erato::converters::Unique"]],["impl<T, P> Freeze for Rle<T, P>where\n P: Freeze,\n T: Freeze,",1,["erato::converters::Rle"]],["impl Freeze for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Freeze for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Freeze for PrimeNumbers<'a, S, T>",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Freeze for PrimeFactorsByTrialDivision<'a, T>where\n T: Freeze,",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> Freeze for PrimeFactorsByLookup<'a, T>where\n T: Freeze,",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> Freeze for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Freeze for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl Freeze for Gco",1,["gco::Gco"]],["impl Freeze for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl Freeze for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Freeze for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl Freeze for Nop",1,["heap_tricks::Nop"]],["impl<T> Freeze for Sum<T>where\n T: Freeze,",1,["heap_tricks::Sum"]],["impl<T, H> Freeze for DoubleHeap<T, H>where\n H: Freeze,",1,["heap_tricks::DoubleHeap"]],["impl<T> Freeze for RemovableHeap<T>",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl Freeze for Hld",1,["hld::Hld"]],["impl<'a> Freeze for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl Freeze for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> Freeze for HungarianResult<T>where\n T: Freeze,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> Freeze for IntervalHeap<T>",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> !Freeze for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> Freeze for LazySegtree<O>",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> Freeze for Interval<T>where\n T: Freeze,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> Freeze for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl Freeze for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl Freeze for Edge",1,["mincost_flow::Edge"]],["impl Freeze for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl Freeze for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> Freeze for RadixHeap<T>",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl Freeze for LogUniform",1,["randtools::LogUniform"]],["impl Freeze for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Freeze for SubRange",1,["randtools::SubRange"]],["impl Freeze for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Freeze for Tree",1,["randtools::Tree"]],["impl Freeze for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Freeze for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Freeze for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Freeze for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> Freeze for Rational<T>where\n T: Freeze,",1,["rational::Rational"]]], +"rb":[["impl<K, O> Freeze for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> Freeze for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<K> Freeze for Multiset<K>",1,["rb::map::Multiset"]],["impl<O> Freeze for Seg<O>",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> Freeze for RbTree<T, O>where\n T: Freeze,",1,["rbtree::RbTree"]],["impl<T> Freeze for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> Freeze for Iter<'a, T, O>",1,["rbtree::Iter"]]], +"scc":[["impl Freeze for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> !Freeze for Segbeats<T>",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> !Freeze for Segbeats<T>",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> Freeze for Segtree<O>",1,["segtree::Segtree"]],["impl<'a, O> Freeze for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, O> Freeze for SegtreeWithCompression<K, O>",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> Freeze for Sparse2dSegtree<K, L, O>",1,["segtree::Sparse2dSegtree"]],["impl<O> Freeze for Dense2dSegtree<O>",1,["segtree::Dense2dSegtree"]],["impl<'a, O> Freeze for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> Freeze for SkewHeap<T>",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl Freeze for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> Freeze for SparseTable<O>",1,["sparse_table::SparseTable"]],["impl<O> Freeze for SparseTable2d<O>",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> Freeze for Nop<T>",1,["splay_tree::Nop"]],["impl<O> Freeze for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> !Freeze for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<'a, O> Freeze for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> Freeze for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> Freeze for DequeueSwag<O>",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> Freeze for TwoWayTreeFoldResult<T>",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> Freeze for Divisors<T>where\n T: Freeze,",1,["trial::divisors::Divisors"]],["impl<T> Freeze for PrimeFactorsRle<T>where\n T: Freeze,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> Freeze for PrimeFactors<T>where\n T: Freeze,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> Freeze for TrieMap<V>",1,["trie::trie_map::TrieMap"]],["impl Freeze for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl Freeze for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl Freeze for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Freeze for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl Freeze for EdgeCount",1,["union_find::EdgeCount"]],["impl Freeze for VertexCount",1,["union_find::VertexCount"]],["impl Freeze for HasCycle",1,["union_find::HasCycle"]],["impl<O> Freeze for UnionFind<O>",1,["union_find::UnionFind"]]], +"veb":[["impl<V> Freeze for VebMap<V>",1,["veb::VebMap"]],["impl Freeze for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> Freeze for VecLines<T, C>",1,["vec_lines::VecLines"]],["impl<T> Freeze for Line<T>where\n T: Freeze,",1,["vec_lines::Line"]],["impl Freeze for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Freeze for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl Freeze for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl Freeze for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> Freeze for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> Freeze for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js new file mode 100644 index 00000000..49ca7987 --- /dev/null +++ b/implementors/core/marker/trait.Send.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> Send for Skipped<'a, T, F, I>where\n F: Send,\n I: Send,\n T: Send + Sync,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> Send for AvlTree<T>where\n T: Send,",1,["avl_tree::AvlTree"]],["impl<'a, T> Send for Iter<'a, T>where\n T: Sync,",1,["avl_tree::Iter"]],["impl<T> Send for IntoIter<T>where\n T: Send,",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl Send for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl Send for BitVec",1,["bitvec::BitVec"]],["impl<'a> Send for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> Send for Bsgs<T, Mul>where\n Mul: Send,\n T: Send,",1,["bsgs::Bsgs"]]], +"cht":[["impl Send for Convex",1,["cht::Convex"]],["impl Send for Concave",1,["cht::Concave"]],["impl<C> Send for VecCht<C>",1,["cht::VecCht"]],["impl<C> Send for BTreeCht<C>",1,["cht::BTreeCht"]],["impl Send for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> Send for Dinic<T>where\n T: Send,",1,["dinic::Dinic"]],["impl<T> Send for Edge<T>where\n T: Send,",1,["dinic::Edge"]],["impl Send for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> Send for DualSegtree<O>where\n <O as Ops>::Value: Send,",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> Send for Unique<T, P>where\n P: Send,\n T: Send,",1,["erato::converters::Unique"]],["impl<T, P> Send for Rle<T, P>where\n P: Send,\n T: Send,",1,["erato::converters::Rle"]],["impl Send for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Send for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Send for PrimeNumbers<'a, S, T>where\n T: Send,\n <S as SieveKind>::SieveValue: Send,",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Send for PrimeFactorsByTrialDivision<'a, T>where\n T: Send,",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> Send for PrimeFactorsByLookup<'a, T>where\n T: Send,",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> Send for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Send for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl Send for Gco",1,["gco::Gco"]],["impl Send for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl Send for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Send for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl Send for Nop",1,["heap_tricks::Nop"]],["impl<T> Send for Sum<T>where\n T: Send,",1,["heap_tricks::Sum"]],["impl<T, H> Send for DoubleHeap<T, H>where\n H: Send,\n T: Send,",1,["heap_tricks::DoubleHeap"]],["impl<T> Send for RemovableHeap<T>where\n T: Send,",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl Send for Hld",1,["hld::Hld"]],["impl<'a> Send for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl Send for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> Send for HungarianResult<T>where\n T: Send,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> Send for IntervalHeap<T>where\n T: Send,",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> Send for Segbeats<T>where\n T: Send,",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> Send for LazySegtree<O>where\n <O as Op>::Operator: Send,\n <O as Op>::Value: Send,",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> Send for Interval<T>where\n T: Send,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> !Send for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl Send for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl Send for Edge",1,["mincost_flow::Edge"]],["impl Send for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl Send for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> Send for RadixHeap<T>where\n T: Send,",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl Send for LogUniform",1,["randtools::LogUniform"]],["impl Send for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Send for SubRange",1,["randtools::SubRange"]],["impl Send for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Send for Tree",1,["randtools::Tree"]],["impl Send for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Send for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Send for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Send for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> Send for Rational<T>where\n T: Send,",1,["rational::Rational"]]], +"rb":[["impl<K, O> !Send for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> !Send for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<K> !Send for Multiset<K>",1,["rb::map::Multiset"]],["impl<O> !Send for Seg<O>",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> Send for RbTree<T, O>where\n T: Send,\n <O as Op>::Summary: Send,",1,["rbtree::RbTree"]],["impl<T> Send for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> Send for Iter<'a, T, O>where\n T: Sync,\n <O as Op>::Summary: Sync,",1,["rbtree::Iter"]]], +"scc":[["impl Send for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> Send for Segbeats<T>where\n T: Send,",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> Send for Segbeats<T>where\n T: Send,",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> Send for Segtree<O>where\n <O as Op>::Value: Send,",1,["segtree::Segtree"]],["impl<'a, O> Send for Entry<'a, O>where\n <O as Op>::Value: Send,",1,["segtree::Entry"]],["impl<K, O> Send for SegtreeWithCompression<K, O>where\n K: Send,\n <O as Op>::Value: Send,",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> Send for Sparse2dSegtree<K, L, O>where\n K: Send,\n L: Send,\n <O as Op>::Value: Send,",1,["segtree::Sparse2dSegtree"]],["impl<O> Send for Dense2dSegtree<O>where\n <O as Op>::Value: Send,",1,["segtree::Dense2dSegtree"]],["impl<'a, O> Send for Dense2dEntry<'a, O>where\n <O as Op>::Value: Send,",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> Send for SkewHeap<T>where\n T: Send,",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl Send for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> Send for SparseTable<O>where\n <O as Op>::Value: Send,",1,["sparse_table::SparseTable"]],["impl<O> Send for SparseTable2d<O>where\n <O as Op>::Value: Send,",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> Send for Nop<T>",1,["splay_tree::Nop"]],["impl<O> Send for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> !Send for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<'a, O> !Send for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> !Send for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> Send for DequeueSwag<O>where\n <O as Op>::Value: Send,",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> Send for TwoWayTreeFoldResult<T>where\n T: Send,",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> Send for Divisors<T>where\n T: Send,",1,["trial::divisors::Divisors"]],["impl<T> Send for PrimeFactorsRle<T>where\n T: Send,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> Send for PrimeFactors<T>where\n T: Send,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> Send for TrieMap<V>where\n V: Send,",1,["trie::trie_map::TrieMap"]],["impl Send for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl Send for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl Send for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Send for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl Send for EdgeCount",1,["union_find::EdgeCount"]],["impl Send for VertexCount",1,["union_find::VertexCount"]],["impl Send for HasCycle",1,["union_find::HasCycle"]],["impl<O> Send for UnionFind<O>where\n <O as Op>::Value: Send,",1,["union_find::UnionFind"]]], +"veb":[["impl<V> Send for VebMap<V>where\n V: Send,",1,["veb::VebMap"]],["impl Send for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> Send for VecLines<T, C>where\n T: Send,",1,["vec_lines::VecLines"]],["impl<T> Send for Line<T>where\n T: Send,",1,["vec_lines::Line"]],["impl Send for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Send for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl Send for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl Send for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> Send for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> Send for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.StructuralEq.js b/implementors/core/marker/trait.StructuralEq.js new file mode 100644 index 00000000..63d43b57 --- /dev/null +++ b/implementors/core/marker/trait.StructuralEq.js @@ -0,0 +1,24 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> StructuralEq for Skipped<'a, T, F, I>"]], +"bfs01":[["impl StructuralEq for Weight"]], +"bitvec":[["impl StructuralEq for BitVec"]], +"cht":[["impl<C> StructuralEq for BTreeCht<C>"],["impl StructuralEq for Quadratic"],["impl<C> StructuralEq for VecCht<C>"]], +"dinic":[["impl<T> StructuralEq for Edge<T>"],["impl StructuralEq for EdgeKey"]], +"fp":[["impl<const P: u64> StructuralEq for Fp<P>"]], +"gco":[["impl StructuralEq for GcoResult"]], +"heap_slope_trick":[["impl StructuralEq for Summary"]], +"heap_tricks":[["impl<T> StructuralEq for Sum<T>"],["impl StructuralEq for Nop"]], +"hopkarp":[["impl StructuralEq for HopkarpResult"]], +"hungarian":[["impl<T: Value> StructuralEq for HungarianResult<T>"]], +"interval_heap":[["impl<T: Ord> StructuralEq for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T> StructuralEq for Segbeats<T>"]], +"low_link":[["impl StructuralEq for LowLink"]], +"mincost_flow":[["impl StructuralEq for Edge"]], +"radix_heap":[["impl<T> StructuralEq for RadixHeap<T>"]], +"scc":[["impl StructuralEq for Scc"]], +"segbeats":[["impl<T> StructuralEq for Segbeats<T>"]], +"segbeats_task3":[["impl<T> StructuralEq for Segbeats<T>"]], +"two_sat":[["impl StructuralEq for TwoSat"]], +"vec_lines":[["impl<T> StructuralEq for Line<T>"],["impl<T, C> StructuralEq for VecLines<T, C>"],["impl StructuralEq for DecreasingTilt"],["impl StructuralEq for IncreasingTilt"]], +"wavelet_matrix":[["impl StructuralEq for StaticBitVec"],["impl<'a> StructuralEq for Spans<'a>"],["impl<'a> StructuralEq for SpanInNode<'a>"],["impl StructuralEq for WaveletMatrix"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 00000000..b1e6c69e --- /dev/null +++ b/implementors/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,30 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> StructuralPartialEq for Skipped<'a, T, F, I>"]], +"bfs01":[["impl StructuralPartialEq for Weight"]], +"bitvec":[["impl StructuralPartialEq for BitVec"]], +"cht":[["impl<C> StructuralPartialEq for VecCht<C>"],["impl StructuralPartialEq for Quadratic"],["impl<C> StructuralPartialEq for BTreeCht<C>"]], +"dinic":[["impl<T> StructuralPartialEq for Edge<T>"],["impl StructuralPartialEq for EdgeKey"],["impl<T> StructuralPartialEq for Dinic<T>"]], +"dual_segtree":[["impl<O: Ops> StructuralPartialEq for DualSegtree<O>"]], +"erato":[["impl StructuralPartialEq for LpdSieve"],["impl StructuralPartialEq for Sieve"]], +"fp":[["impl<const P: u64> StructuralPartialEq for Fp<P>"]], +"gco":[["impl StructuralPartialEq for Gco"],["impl StructuralPartialEq for GcoResult"]], +"heap_slope_trick":[["impl StructuralPartialEq for Summary"]], +"heap_tricks":[["impl StructuralPartialEq for Nop"],["impl<T> StructuralPartialEq for Sum<T>"]], +"hopkarp":[["impl StructuralPartialEq for HopkarpResult"]], +"hungarian":[["impl<T: Value> StructuralPartialEq for HungarianResult<T>"]], +"interval_heap":[["impl<T: Ord> StructuralPartialEq for IntervalHeap<T>"]], +"lazy_segbeats":[["impl<T> StructuralPartialEq for Segbeats<T>"]], +"low_link":[["impl StructuralPartialEq for LowLink"]], +"mincost_flow":[["impl StructuralPartialEq for Edge"],["impl StructuralPartialEq for MinCostFlow"]], +"radix_heap":[["impl<T> StructuralPartialEq for RadixHeap<T>"]], +"scc":[["impl StructuralPartialEq for Scc"]], +"segbeats":[["impl<T> StructuralPartialEq for Segbeats<T>"]], +"segbeats_task3":[["impl<T> StructuralPartialEq for Segbeats<T>"]], +"skew_heap":[["impl<T> StructuralPartialEq for SkewHeap<T>"]], +"snippetter":[["impl StructuralPartialEq for CrateMetadata"]], +"trie":[["impl StructuralPartialEq for TrieSet"],["impl<V> StructuralPartialEq for TrieMap<V>"]], +"two_sat":[["impl StructuralPartialEq for TwoSat"]], +"union_find":[["impl<O: Op> StructuralPartialEq for UnionFind<O>"]], +"vec_lines":[["impl<T, C> StructuralPartialEq for VecLines<T, C>"],["impl<T> StructuralPartialEq for Line<T>"],["impl StructuralPartialEq for IncreasingTilt"],["impl StructuralPartialEq for DecreasingTilt"]], +"wavelet_matrix":[["impl<'a> StructuralPartialEq for Spans<'a>"],["impl StructuralPartialEq for WaveletMatrix"],["impl<'a> StructuralPartialEq for SpanInNode<'a>"],["impl StructuralPartialEq for StaticBitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js new file mode 100644 index 00000000..9d683d1b --- /dev/null +++ b/implementors/core/marker/trait.Sync.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> Sync for Skipped<'a, T, F, I>where\n F: Sync,\n I: Sync,\n T: Sync,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> Sync for AvlTree<T>where\n T: Sync,",1,["avl_tree::AvlTree"]],["impl<'a, T> Sync for Iter<'a, T>where\n T: Sync,",1,["avl_tree::Iter"]],["impl<T> Sync for IntoIter<T>where\n T: Sync,",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl Sync for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl Sync for BitVec",1,["bitvec::BitVec"]],["impl<'a> Sync for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> Sync for Bsgs<T, Mul>where\n Mul: Sync,\n T: Sync,",1,["bsgs::Bsgs"]]], +"cht":[["impl Sync for Convex",1,["cht::Convex"]],["impl Sync for Concave",1,["cht::Concave"]],["impl<C> Sync for VecCht<C>",1,["cht::VecCht"]],["impl<C> Sync for BTreeCht<C>",1,["cht::BTreeCht"]],["impl Sync for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> Sync for Dinic<T>where\n T: Sync,",1,["dinic::Dinic"]],["impl<T> Sync for Edge<T>where\n T: Sync,",1,["dinic::Edge"]],["impl Sync for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> Sync for DualSegtree<O>where\n <O as Ops>::Value: Sync,",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> Sync for Unique<T, P>where\n P: Sync,\n T: Sync,",1,["erato::converters::Unique"]],["impl<T, P> Sync for Rle<T, P>where\n P: Sync,\n T: Sync,",1,["erato::converters::Rle"]],["impl Sync for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Sync for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Sync for PrimeNumbers<'a, S, T>where\n T: Sync,\n <S as SieveKind>::SieveValue: Sync,",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Sync for PrimeFactorsByTrialDivision<'a, T>where\n T: Sync,",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> Sync for PrimeFactorsByLookup<'a, T>where\n T: Sync,",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> Sync for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Sync for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl Sync for Gco",1,["gco::Gco"]],["impl Sync for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl Sync for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Sync for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl Sync for Nop",1,["heap_tricks::Nop"]],["impl<T> Sync for Sum<T>where\n T: Sync,",1,["heap_tricks::Sum"]],["impl<T, H> Sync for DoubleHeap<T, H>where\n H: Sync,\n T: Sync,",1,["heap_tricks::DoubleHeap"]],["impl<T> Sync for RemovableHeap<T>where\n T: Sync,",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl Sync for Hld",1,["hld::Hld"]],["impl<'a> Sync for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl Sync for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> Sync for HungarianResult<T>where\n T: Sync,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> Sync for IntervalHeap<T>where\n T: Sync,",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> !Sync for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> Sync for LazySegtree<O>where\n <O as Op>::Operator: Sync,\n <O as Op>::Value: Sync,",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> Sync for Interval<T>where\n T: Sync,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> !Sync for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl Sync for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl Sync for Edge",1,["mincost_flow::Edge"]],["impl Sync for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl Sync for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> Sync for RadixHeap<T>where\n T: Sync,",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl Sync for LogUniform",1,["randtools::LogUniform"]],["impl Sync for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Sync for SubRange",1,["randtools::SubRange"]],["impl Sync for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Sync for Tree",1,["randtools::Tree"]],["impl Sync for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Sync for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Sync for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Sync for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> Sync for Rational<T>where\n T: Sync,",1,["rational::Rational"]]], +"rb":[["impl<K, O> !Sync for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> !Sync for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<K> !Sync for Multiset<K>",1,["rb::map::Multiset"]],["impl<O> !Sync for Seg<O>",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> Sync for RbTree<T, O>where\n T: Sync,\n <O as Op>::Summary: Sync,",1,["rbtree::RbTree"]],["impl<T> Sync for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> Sync for Iter<'a, T, O>where\n T: Sync,\n <O as Op>::Summary: Sync,",1,["rbtree::Iter"]]], +"scc":[["impl Sync for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> !Sync for Segbeats<T>",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> !Sync for Segbeats<T>",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> Sync for Segtree<O>where\n <O as Op>::Value: Sync,",1,["segtree::Segtree"]],["impl<'a, O> Sync for Entry<'a, O>where\n <O as Op>::Value: Sync,",1,["segtree::Entry"]],["impl<K, O> Sync for SegtreeWithCompression<K, O>where\n K: Sync,\n <O as Op>::Value: Sync,",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> Sync for Sparse2dSegtree<K, L, O>where\n K: Sync,\n L: Sync,\n <O as Op>::Value: Sync,",1,["segtree::Sparse2dSegtree"]],["impl<O> Sync for Dense2dSegtree<O>where\n <O as Op>::Value: Sync,",1,["segtree::Dense2dSegtree"]],["impl<'a, O> Sync for Dense2dEntry<'a, O>where\n <O as Op>::Value: Sync,",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> Sync for SkewHeap<T>where\n T: Sync,",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl Sync for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> Sync for SparseTable<O>where\n <O as Op>::Value: Sync,",1,["sparse_table::SparseTable"]],["impl<O> Sync for SparseTable2d<O>where\n <O as Op>::Value: Sync,",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> Sync for Nop<T>",1,["splay_tree::Nop"]],["impl<O> Sync for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> !Sync for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<'a, O> !Sync for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> !Sync for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> Sync for DequeueSwag<O>where\n <O as Op>::Value: Sync,",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> Sync for TwoWayTreeFoldResult<T>where\n T: Sync,",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> Sync for Divisors<T>where\n T: Sync,",1,["trial::divisors::Divisors"]],["impl<T> Sync for PrimeFactorsRle<T>where\n T: Sync,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> Sync for PrimeFactors<T>where\n T: Sync,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> Sync for TrieMap<V>where\n V: Sync,",1,["trie::trie_map::TrieMap"]],["impl Sync for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl Sync for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl Sync for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Sync for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl Sync for EdgeCount",1,["union_find::EdgeCount"]],["impl Sync for VertexCount",1,["union_find::VertexCount"]],["impl Sync for HasCycle",1,["union_find::HasCycle"]],["impl<O> Sync for UnionFind<O>where\n <O as Op>::Value: Sync,",1,["union_find::UnionFind"]]], +"veb":[["impl<V> Sync for VebMap<V>where\n V: Sync,",1,["veb::VebMap"]],["impl Sync for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> Sync for VecLines<T, C>where\n T: Sync,",1,["vec_lines::VecLines"]],["impl<T> Sync for Line<T>where\n T: Sync,",1,["vec_lines::Line"]],["impl Sync for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Sync for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl Sync for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl Sync for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> Sync for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> Sync for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js new file mode 100644 index 00000000..2151c168 --- /dev/null +++ b/implementors/core/marker/trait.Unpin.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> Unpin for Skipped<'a, T, F, I>where\n F: Unpin,\n I: Unpin,\n T: Unpin,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> Unpin for AvlTree<T>",1,["avl_tree::AvlTree"]],["impl<'a, T> Unpin for Iter<'a, T>",1,["avl_tree::Iter"]],["impl<T> Unpin for IntoIter<T>",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl Unpin for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl Unpin for BitVec",1,["bitvec::BitVec"]],["impl<'a> Unpin for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> Unpin for Bsgs<T, Mul>where\n Mul: Unpin,\n T: Unpin,",1,["bsgs::Bsgs"]]], +"cht":[["impl Unpin for Convex",1,["cht::Convex"]],["impl Unpin for Concave",1,["cht::Concave"]],["impl<C> Unpin for VecCht<C>",1,["cht::VecCht"]],["impl<C> Unpin for BTreeCht<C>",1,["cht::BTreeCht"]],["impl Unpin for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> Unpin for Dinic<T>where\n T: Unpin,",1,["dinic::Dinic"]],["impl<T> Unpin for Edge<T>where\n T: Unpin,",1,["dinic::Edge"]],["impl Unpin for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> Unpin for DualSegtree<O>where\n <O as Ops>::Value: Unpin,",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> Unpin for Unique<T, P>where\n P: Unpin,\n T: Unpin,",1,["erato::converters::Unique"]],["impl<T, P> Unpin for Rle<T, P>where\n P: Unpin,\n T: Unpin,",1,["erato::converters::Rle"]],["impl Unpin for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Unpin for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Unpin for PrimeNumbers<'a, S, T>where\n T: Unpin,",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Unpin for PrimeFactorsByTrialDivision<'a, T>where\n T: Unpin,",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> Unpin for PrimeFactorsByLookup<'a, T>where\n T: Unpin,",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> Unpin for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Unpin for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl Unpin for Gco",1,["gco::Gco"]],["impl Unpin for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl Unpin for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Unpin for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl Unpin for Nop",1,["heap_tricks::Nop"]],["impl<T> Unpin for Sum<T>where\n T: Unpin,",1,["heap_tricks::Sum"]],["impl<T, H> Unpin for DoubleHeap<T, H>where\n H: Unpin,\n T: Unpin,",1,["heap_tricks::DoubleHeap"]],["impl<T> Unpin for RemovableHeap<T>where\n T: Unpin,",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl Unpin for Hld",1,["hld::Hld"]],["impl<'a> Unpin for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl Unpin for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> Unpin for HungarianResult<T>where\n T: Unpin,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> Unpin for IntervalHeap<T>where\n T: Unpin,",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> Unpin for Segbeats<T>where\n T: Unpin,",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> Unpin for LazySegtree<O>where\n <O as Op>::Operator: Unpin,\n <O as Op>::Value: Unpin,",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> Unpin for Interval<T>where\n T: Unpin,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> Unpin for LinkCutTreeBase<O>where\n <O as OpBase>::InternalValue: Unpin,",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl Unpin for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl Unpin for Edge",1,["mincost_flow::Edge"]],["impl Unpin for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl Unpin for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> Unpin for RadixHeap<T>where\n T: Unpin,",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl Unpin for LogUniform",1,["randtools::LogUniform"]],["impl Unpin for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Unpin for SubRange",1,["randtools::SubRange"]],["impl Unpin for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Unpin for Tree",1,["randtools::Tree"]],["impl Unpin for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Unpin for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Unpin for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Unpin for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> Unpin for Rational<T>where\n T: Unpin,",1,["rational::Rational"]]], +"rb":[["impl<K, O> Unpin for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> Unpin for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<K> Unpin for Multiset<K>",1,["rb::map::Multiset"]],["impl<O> Unpin for Seg<O>",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> Unpin for RbTree<T, O>where\n T: Unpin,",1,["rbtree::RbTree"]],["impl<T> Unpin for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> Unpin for Iter<'a, T, O>",1,["rbtree::Iter"]]], +"scc":[["impl Unpin for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> Unpin for Segbeats<T>where\n T: Unpin,",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> Unpin for Segbeats<T>where\n T: Unpin,",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> Unpin for Segtree<O>where\n <O as Op>::Value: Unpin,",1,["segtree::Segtree"]],["impl<'a, O> Unpin for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, O> Unpin for SegtreeWithCompression<K, O>where\n K: Unpin,\n <O as Op>::Value: Unpin,",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> Unpin for Sparse2dSegtree<K, L, O>where\n K: Unpin,\n L: Unpin,\n <O as Op>::Value: Unpin,",1,["segtree::Sparse2dSegtree"]],["impl<O> Unpin for Dense2dSegtree<O>where\n <O as Op>::Value: Unpin,",1,["segtree::Dense2dSegtree"]],["impl<'a, O> Unpin for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> Unpin for SkewHeap<T>",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl Unpin for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> Unpin for SparseTable<O>where\n <O as Op>::Value: Unpin,",1,["sparse_table::SparseTable"]],["impl<O> Unpin for SparseTable2d<O>where\n <O as Op>::Value: Unpin,",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> Unpin for Nop<T>",1,["splay_tree::Nop"]],["impl<O> Unpin for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> Unpin for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<'a, O> Unpin for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> Unpin for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> Unpin for DequeueSwag<O>where\n <O as Op>::Value: Unpin,",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> Unpin for TwoWayTreeFoldResult<T>where\n T: Unpin,",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> Unpin for Divisors<T>where\n T: Unpin,",1,["trial::divisors::Divisors"]],["impl<T> Unpin for PrimeFactorsRle<T>where\n T: Unpin,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> Unpin for PrimeFactors<T>where\n T: Unpin,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> Unpin for TrieMap<V>",1,["trie::trie_map::TrieMap"]],["impl Unpin for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl Unpin for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl Unpin for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Unpin for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl Unpin for EdgeCount",1,["union_find::EdgeCount"]],["impl Unpin for VertexCount",1,["union_find::VertexCount"]],["impl Unpin for HasCycle",1,["union_find::HasCycle"]],["impl<O> Unpin for UnionFind<O>where\n <O as Op>::Value: Unpin,",1,["union_find::UnionFind"]]], +"veb":[["impl<V> Unpin for VebMap<V>where\n V: Unpin,",1,["veb::VebMap"]],["impl Unpin for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> Unpin for VecLines<T, C>where\n T: Unpin,",1,["vec_lines::VecLines"]],["impl<T> Unpin for Line<T>where\n T: Unpin,",1,["vec_lines::Line"]],["impl Unpin for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Unpin for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl Unpin for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl Unpin for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> Unpin for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> Unpin for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Add.js b/implementors/core/ops/arith/trait.Add.js new file mode 100644 index 00000000..f4a4f244 --- /dev/null +++ b/implementors/core/ops/arith/trait.Add.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"cht":[["impl<T: Into<Self>> Add<T> for Quadratic"],["impl Add<Quadratic> for i64"]], +"fp":[["impl<const P: u64, T: Into<Fp<P>>> Add<T> for Fp<P>"],["impl<const P: u64> Add<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Add<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Add<T> for &Fp<P>"]], +"rational":[["impl<'a, T: Signed> Add<&'a Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Add<Rational<M>> for Rational<M>"],["impl<'a, T: Signed> Add<Rational<T>> for &'a Rational<T>"],["impl<'a, T: Signed> Add<&'a Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.AddAssign.js b/implementors/core/ops/arith/trait.AddAssign.js new file mode 100644 index 00000000..68169abd --- /dev/null +++ b/implementors/core/ops/arith/trait.AddAssign.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> AddAssign<&Fp<P>> for Fp<P>"],["impl<const P: u64> AddAssign<Fp<P>> for Fp<P>"]], +"rational":[["impl<T: Signed> AddAssign<Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Div.js b/implementors/core/ops/arith/trait.Div.js new file mode 100644 index 00000000..57fbeb00 --- /dev/null +++ b/implementors/core/ops/arith/trait.Div.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> Div<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Div<T> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Div<T> for &Fp<P>"],["impl<const P: u64> Div<&Fp<P>> for &Fp<P>"]], +"rational":[["impl<'a, T: Signed> Div<&'a Rational<T>> for Rational<T>"],["impl<M: Signed> Div<Rational<M>> for Rational<M>"],["impl<'a, T: Signed> Div<Rational<T>> for &'a Rational<T>"],["impl<'a, T: Signed> Div<&'a Rational<T>> for &'a Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.DivAssign.js b/implementors/core/ops/arith/trait.DivAssign.js new file mode 100644 index 00000000..b4814470 --- /dev/null +++ b/implementors/core/ops/arith/trait.DivAssign.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> DivAssign<Fp<P>> for Fp<P>"],["impl<const P: u64> DivAssign<&Fp<P>> for Fp<P>"]], +"rational":[["impl<T: Signed> DivAssign<Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Mul.js b/implementors/core/ops/arith/trait.Mul.js new file mode 100644 index 00000000..30140558 --- /dev/null +++ b/implementors/core/ops/arith/trait.Mul.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"cht":[["impl<T: Into<Self>> Mul<T> for Quadratic"],["impl Mul<Quadratic> for i64"]], +"fp":[["impl<const P: u64> Mul<&Fp<P>> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Mul<T> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Mul<T> for Fp<P>"],["impl<const P: u64> Mul<&Fp<P>> for Fp<P>"]], +"lin_ineq":[["impl<'a, T: Signed> Mul<Interval<T>> for &'a Interval<T>"],["impl<'a, T: Signed> Mul<&'a Interval<T>> for &'a Interval<T>"],["impl<T: Signed> Mul<Interval<T>> for Interval<T>"],["impl<'a, T: Signed> Mul<&'a Interval<T>> for Interval<T>"]], +"rational":[["impl<'a, T: Signed> Mul<Rational<T>> for &'a Rational<T>"],["impl<'a, T: Signed> Mul<&'a Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Mul<Rational<M>> for Rational<M>"],["impl<'a, T: Signed> Mul<&'a Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.MulAssign.js b/implementors/core/ops/arith/trait.MulAssign.js new file mode 100644 index 00000000..99a6f911 --- /dev/null +++ b/implementors/core/ops/arith/trait.MulAssign.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> MulAssign<&Fp<P>> for Fp<P>"],["impl<const P: u64> MulAssign<Fp<P>> for Fp<P>"]], +"rational":[["impl<T: Signed> MulAssign<Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Neg.js b/implementors/core/ops/arith/trait.Neg.js new file mode 100644 index 00000000..0d157216 --- /dev/null +++ b/implementors/core/ops/arith/trait.Neg.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"cht":[["impl Neg for Quadratic"]], +"fp":[["impl<const P: u64> Neg for Fp<P>"]], +"rational":[["impl<T: Signed> Neg for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.Sub.js b/implementors/core/ops/arith/trait.Sub.js new file mode 100644 index 00000000..674cd25d --- /dev/null +++ b/implementors/core/ops/arith/trait.Sub.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"cht":[["impl<T: Into<Self>> Sub<T> for Quadratic"],["impl Sub<Quadratic> for i64"]], +"fp":[["impl<const P: u64> Sub<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Sub<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Sub<T> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Sub<T> for &Fp<P>"]], +"rational":[["impl<M: Signed> Sub<Rational<M>> for Rational<M>"],["impl<'a, T: Signed> Sub<&'a Rational<T>> for &'a Rational<T>"],["impl<'a, T: Signed> Sub<Rational<T>> for &'a Rational<T>"],["impl<'a, T: Signed> Sub<&'a Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/arith/trait.SubAssign.js b/implementors/core/ops/arith/trait.SubAssign.js new file mode 100644 index 00000000..65e7c88e --- /dev/null +++ b/implementors/core/ops/arith/trait.SubAssign.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"fp":[["impl<const P: u64> SubAssign<Fp<P>> for Fp<P>"],["impl<const P: u64> SubAssign<&Fp<P>> for Fp<P>"]], +"rational":[["impl<T: Signed> SubAssign<Rational<T>> for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/bit/trait.BitAndAssign.js b/implementors/core/ops/bit/trait.BitAndAssign.js new file mode 100644 index 00000000..36328039 --- /dev/null +++ b/implementors/core/ops/bit/trait.BitAndAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl BitAndAssign<&BitVec> for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/bit/trait.BitOrAssign.js b/implementors/core/ops/bit/trait.BitOrAssign.js new file mode 100644 index 00000000..9604069a --- /dev/null +++ b/implementors/core/ops/bit/trait.BitOrAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl BitOrAssign<&BitVec> for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/bit/trait.BitXorAssign.js b/implementors/core/ops/bit/trait.BitXorAssign.js new file mode 100644 index 00000000..9bfafc5d --- /dev/null +++ b/implementors/core/ops/bit/trait.BitXorAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl BitXorAssign<&BitVec> for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/bit/trait.ShlAssign.js b/implementors/core/ops/bit/trait.ShlAssign.js new file mode 100644 index 00000000..09e30a62 --- /dev/null +++ b/implementors/core/ops/bit/trait.ShlAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl ShlAssign<i16> for BitVec"],["impl ShlAssign<u32> for BitVec"],["impl ShlAssign<i128> for BitVec"],["impl ShlAssign<u128> for BitVec"],["impl ShlAssign<isize> for BitVec"],["impl ShlAssign<usize> for BitVec"],["impl ShlAssign<u16> for BitVec"],["impl ShlAssign<u64> for BitVec"],["impl ShlAssign<u8> for BitVec"],["impl ShlAssign<i32> for BitVec"],["impl ShlAssign<i8> for BitVec"],["impl ShlAssign<i64> for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/bit/trait.ShrAssign.js b/implementors/core/ops/bit/trait.ShrAssign.js new file mode 100644 index 00000000..ec36a6f7 --- /dev/null +++ b/implementors/core/ops/bit/trait.ShrAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bitvec":[["impl ShrAssign<i64> for BitVec"],["impl ShrAssign<u32> for BitVec"],["impl ShrAssign<isize> for BitVec"],["impl ShrAssign<usize> for BitVec"],["impl ShrAssign<i8> for BitVec"],["impl ShrAssign<u8> for BitVec"],["impl ShrAssign<u64> for BitVec"],["impl ShrAssign<i128> for BitVec"],["impl ShrAssign<u16> for BitVec"],["impl ShrAssign<i16> for BitVec"],["impl ShrAssign<u128> for BitVec"],["impl ShrAssign<i32> for BitVec"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/deref/trait.Deref.js b/implementors/core/ops/deref/trait.Deref.js new file mode 100644 index 00000000..ca12f9e3 --- /dev/null +++ b/implementors/core/ops/deref/trait.Deref.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"segtree":[["impl<'a, O: Op> Deref for Dense2dEntry<'a, O>"],["impl<'a, O: Op> Deref for Entry<'a, O>"]], +"splay_tree":[["impl<O: LazyOps> Deref for Entry<'_, O>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/deref/trait.DerefMut.js b/implementors/core/ops/deref/trait.DerefMut.js new file mode 100644 index 00000000..5bfe649b --- /dev/null +++ b/implementors/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"segtree":[["impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O>"],["impl<'a, O: Op> DerefMut for Entry<'a, O>"]], +"splay_tree":[["impl<O: LazyOps> DerefMut for Entry<'_, O>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/drop/trait.Drop.js b/implementors/core/ops/drop/trait.Drop.js new file mode 100644 index 00000000..b4ca4776 --- /dev/null +++ b/implementors/core/ops/drop/trait.Drop.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"segtree":[["impl<'a, O: Op> Drop for Entry<'a, O>"],["impl<'a, O: Op> Drop for Dense2dEntry<'a, O>"]], +"splay_tree":[["impl<O: LazyOps> Drop for SplayTree<O>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/index/trait.Index.js b/implementors/core/ops/index/trait.Index.js new file mode 100644 index 00000000..9a522663 --- /dev/null +++ b/implementors/core/ops/index/trait.Index.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"avl_tree":[["impl<T> Index<usize> for AvlTree<T>"]], +"fp":[["impl<const P: u64> Index<usize> for Factorial<P>"]], +"segtree":[["impl<O: Op> Index<usize> for Segtree<O>"],["impl<K: Ord, L: Ord, O: Op> Index<(K, L)> for Sparse2dSegtree<K, L, O>"],["impl<K: Ord, L: Ord, O: Op> Index<K> for Sparse2dSegtree<K, L, O>"],["impl<O: Op> Index<usize> for Dense2dSegtree<O>"],["impl<K: Ord, O: Op> Index<K> for SegtreeWithCompression<K, O>"]], +"sparse_table":[["impl<O: Op> Index<usize> for SparseTable<O>"]], +"splay_tree":[["impl<O: LazyOps> Index<usize> for SplayTree<O>"]], +"swag":[["impl<O: Op> Index<usize> for DequeueSwag<O>"]], +"veb":[["impl<V> Index<usize> for VebMap<V>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/index/trait.IndexMut.js b/implementors/core/ops/index/trait.IndexMut.js new file mode 100644 index 00000000..0d16e7f4 --- /dev/null +++ b/implementors/core/ops/index/trait.IndexMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"veb":[["impl<V> IndexMut<usize> for VebMap<V>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 00000000..88784dc8 --- /dev/null +++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> RefUnwindSafe for Skipped<'a, T, F, I>where\n F: RefUnwindSafe,\n I: RefUnwindSafe,\n T: RefUnwindSafe,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> RefUnwindSafe for AvlTree<T>where\n T: RefUnwindSafe,",1,["avl_tree::AvlTree"]],["impl<'a, T> RefUnwindSafe for Iter<'a, T>where\n T: RefUnwindSafe,",1,["avl_tree::Iter"]],["impl<T> RefUnwindSafe for IntoIter<T>where\n T: RefUnwindSafe,",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl RefUnwindSafe for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl RefUnwindSafe for BitVec",1,["bitvec::BitVec"]],["impl<'a> RefUnwindSafe for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> RefUnwindSafe for Bsgs<T, Mul>where\n Mul: RefUnwindSafe,\n T: RefUnwindSafe,",1,["bsgs::Bsgs"]]], +"cht":[["impl RefUnwindSafe for Convex",1,["cht::Convex"]],["impl RefUnwindSafe for Concave",1,["cht::Concave"]],["impl<C> RefUnwindSafe for VecCht<C>",1,["cht::VecCht"]],["impl<C> RefUnwindSafe for BTreeCht<C>",1,["cht::BTreeCht"]],["impl RefUnwindSafe for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> RefUnwindSafe for Dinic<T>where\n T: RefUnwindSafe,",1,["dinic::Dinic"]],["impl<T> RefUnwindSafe for Edge<T>where\n T: RefUnwindSafe,",1,["dinic::Edge"]],["impl RefUnwindSafe for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> RefUnwindSafe for DualSegtree<O>where\n <O as Ops>::Value: RefUnwindSafe,",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> RefUnwindSafe for Unique<T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["erato::converters::Unique"]],["impl<T, P> RefUnwindSafe for Rle<T, P>where\n P: RefUnwindSafe,\n T: RefUnwindSafe,",1,["erato::converters::Rle"]],["impl RefUnwindSafe for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl RefUnwindSafe for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> RefUnwindSafe for PrimeNumbers<'a, S, T>where\n T: RefUnwindSafe,\n <S as SieveKind>::SieveValue: RefUnwindSafe,",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> RefUnwindSafe for PrimeFactorsByTrialDivision<'a, T>where\n T: RefUnwindSafe,",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> RefUnwindSafe for PrimeFactorsByLookup<'a, T>where\n T: RefUnwindSafe,",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> RefUnwindSafe for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> RefUnwindSafe for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl RefUnwindSafe for Gco",1,["gco::Gco"]],["impl RefUnwindSafe for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl RefUnwindSafe for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl RefUnwindSafe for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl RefUnwindSafe for Nop",1,["heap_tricks::Nop"]],["impl<T> RefUnwindSafe for Sum<T>where\n T: RefUnwindSafe,",1,["heap_tricks::Sum"]],["impl<T, H> RefUnwindSafe for DoubleHeap<T, H>where\n H: RefUnwindSafe,\n T: RefUnwindSafe,",1,["heap_tricks::DoubleHeap"]],["impl<T> RefUnwindSafe for RemovableHeap<T>where\n T: RefUnwindSafe,",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl RefUnwindSafe for Hld",1,["hld::Hld"]],["impl<'a> RefUnwindSafe for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl RefUnwindSafe for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> RefUnwindSafe for HungarianResult<T>where\n T: RefUnwindSafe,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> RefUnwindSafe for IntervalHeap<T>where\n T: RefUnwindSafe,",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> RefUnwindSafe for LazySegtree<O>where\n <O as Op>::Operator: RefUnwindSafe,\n <O as Op>::Value: RefUnwindSafe,",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> RefUnwindSafe for Interval<T>where\n T: RefUnwindSafe,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> RefUnwindSafe for LinkCutTreeBase<O>where\n <O as OpBase>::InternalValue: RefUnwindSafe,",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl RefUnwindSafe for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl RefUnwindSafe for Edge",1,["mincost_flow::Edge"]],["impl RefUnwindSafe for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl RefUnwindSafe for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> RefUnwindSafe for RadixHeap<T>where\n T: RefUnwindSafe,",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl RefUnwindSafe for LogUniform",1,["randtools::LogUniform"]],["impl RefUnwindSafe for DistinctTwo",1,["randtools::DistinctTwo"]],["impl RefUnwindSafe for SubRange",1,["randtools::SubRange"]],["impl RefUnwindSafe for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl RefUnwindSafe for Tree",1,["randtools::Tree"]],["impl RefUnwindSafe for SimpleGraph",1,["randtools::SimpleGraph"]],["impl RefUnwindSafe for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl RefUnwindSafe for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl RefUnwindSafe for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> RefUnwindSafe for Rational<T>where\n T: RefUnwindSafe,",1,["rational::Rational"]]], +"rb":[["impl<K, O> RefUnwindSafe for MultimapSeg<K, O>where\n K: RefUnwindSafe,\n <O as MultimapOp>::Acc: RefUnwindSafe,\n <O as MultimapOp>::Value: RefUnwindSafe,",1,["rb::map::MultimapSeg"]],["impl<K, V> RefUnwindSafe for Multimap<K, V>where\n K: RefUnwindSafe,\n V: RefUnwindSafe,",1,["rb::map::Multimap"]],["impl<K> RefUnwindSafe for Multiset<K>where\n K: RefUnwindSafe,",1,["rb::map::Multiset"]],["impl<O> RefUnwindSafe for Seg<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> RefUnwindSafe for RbTree<T, O>where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,",1,["rbtree::RbTree"]],["impl<T> RefUnwindSafe for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> RefUnwindSafe for Iter<'a, T, O>where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,",1,["rbtree::Iter"]]], +"scc":[["impl RefUnwindSafe for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> RefUnwindSafe for Segtree<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::Segtree"]],["impl<'a, O> RefUnwindSafe for Entry<'a, O>where\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::Entry"]],["impl<K, O> RefUnwindSafe for SegtreeWithCompression<K, O>where\n K: RefUnwindSafe,\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> RefUnwindSafe for Sparse2dSegtree<K, L, O>where\n K: RefUnwindSafe,\n L: RefUnwindSafe,\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::Sparse2dSegtree"]],["impl<O> RefUnwindSafe for Dense2dSegtree<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::Dense2dSegtree"]],["impl<'a, O> RefUnwindSafe for Dense2dEntry<'a, O>where\n <O as Op>::Value: RefUnwindSafe,",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> RefUnwindSafe for SkewHeap<T>where\n T: RefUnwindSafe,",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl RefUnwindSafe for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> RefUnwindSafe for SparseTable<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["sparse_table::SparseTable"]],["impl<O> RefUnwindSafe for SparseTable2d<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> RefUnwindSafe for Nop<T>",1,["splay_tree::Nop"]],["impl<O> RefUnwindSafe for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> !RefUnwindSafe for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<'a, O> !RefUnwindSafe for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> !RefUnwindSafe for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> RefUnwindSafe for DequeueSwag<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> RefUnwindSafe for TwoWayTreeFoldResult<T>where\n T: RefUnwindSafe,",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> RefUnwindSafe for Divisors<T>where\n T: RefUnwindSafe,",1,["trial::divisors::Divisors"]],["impl<T> RefUnwindSafe for PrimeFactorsRle<T>where\n T: RefUnwindSafe,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> RefUnwindSafe for PrimeFactors<T>where\n T: RefUnwindSafe,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> RefUnwindSafe for TrieMap<V>where\n V: RefUnwindSafe,",1,["trie::trie_map::TrieMap"]],["impl RefUnwindSafe for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl RefUnwindSafe for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl RefUnwindSafe for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> RefUnwindSafe for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl RefUnwindSafe for EdgeCount",1,["union_find::EdgeCount"]],["impl RefUnwindSafe for VertexCount",1,["union_find::VertexCount"]],["impl RefUnwindSafe for HasCycle",1,["union_find::HasCycle"]],["impl<O> RefUnwindSafe for UnionFind<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["union_find::UnionFind"]]], +"veb":[["impl<V> RefUnwindSafe for VebMap<V>where\n V: RefUnwindSafe,",1,["veb::VebMap"]],["impl RefUnwindSafe for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> RefUnwindSafe for VecLines<T, C>where\n T: RefUnwindSafe,",1,["vec_lines::VecLines"]],["impl<T> RefUnwindSafe for Line<T>where\n T: RefUnwindSafe,",1,["vec_lines::Line"]],["impl RefUnwindSafe for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl RefUnwindSafe for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl RefUnwindSafe for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl RefUnwindSafe for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> RefUnwindSafe for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> RefUnwindSafe for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 00000000..8711c618 --- /dev/null +++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,49 @@ +(function() {var implementors = { +"accum":[["impl<'a, T, F, I> UnwindSafe for Skipped<'a, T, F, I>where\n F: UnwindSafe,\n I: UnwindSafe,\n T: UnwindSafe + RefUnwindSafe,",1,["accum::Skipped"]]], +"avl_tree":[["impl<T> UnwindSafe for AvlTree<T>where\n T: UnwindSafe,",1,["avl_tree::AvlTree"]],["impl<'a, T> UnwindSafe for Iter<'a, T>where\n T: RefUnwindSafe,",1,["avl_tree::Iter"]],["impl<T> UnwindSafe for IntoIter<T>where\n T: UnwindSafe,",1,["avl_tree::IntoIter"]]], +"bfs01":[["impl UnwindSafe for Weight",1,["bfs01::Weight"]]], +"bitvec":[["impl UnwindSafe for BitVec",1,["bitvec::BitVec"]],["impl<'a> UnwindSafe for Iter<'a>",1,["bitvec::Iter"]]], +"bsgs":[["impl<T, Mul> UnwindSafe for Bsgs<T, Mul>where\n Mul: UnwindSafe,\n T: UnwindSafe,",1,["bsgs::Bsgs"]]], +"cht":[["impl UnwindSafe for Convex",1,["cht::Convex"]],["impl UnwindSafe for Concave",1,["cht::Concave"]],["impl<C> UnwindSafe for VecCht<C>",1,["cht::VecCht"]],["impl<C> UnwindSafe for BTreeCht<C>",1,["cht::BTreeCht"]],["impl UnwindSafe for Quadratic",1,["cht::Quadratic"]]], +"dinic":[["impl<T> UnwindSafe for Dinic<T>where\n T: UnwindSafe,",1,["dinic::Dinic"]],["impl<T> UnwindSafe for Edge<T>where\n T: UnwindSafe,",1,["dinic::Edge"]],["impl UnwindSafe for EdgeKey",1,["dinic::EdgeKey"]]], +"dual_segtree":[["impl<O> UnwindSafe for DualSegtree<O>where\n <O as Ops>::Value: UnwindSafe,",1,["dual_segtree::DualSegtree"]]], +"erato":[["impl<T, P> UnwindSafe for Unique<T, P>where\n P: UnwindSafe,\n T: UnwindSafe,",1,["erato::converters::Unique"]],["impl<T, P> UnwindSafe for Rle<T, P>where\n P: UnwindSafe,\n T: UnwindSafe,",1,["erato::converters::Rle"]],["impl UnwindSafe for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl UnwindSafe for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> !UnwindSafe for PrimeNumbers<'a, S, T>",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> !UnwindSafe for PrimeFactorsByTrialDivision<'a, T>",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<'a, T> !UnwindSafe for PrimeFactorsByLookup<'a, T>",1,["erato::sieve_base::PrimeFactorsByLookup"]]], +"fp":[["impl<const P: u64> UnwindSafe for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> UnwindSafe for Fp<P>",1,["fp::Fp"]]], +"gco":[["impl UnwindSafe for Gco",1,["gco::Gco"]],["impl UnwindSafe for GcoResult",1,["gco::GcoResult"]]], +"heap_slope_trick":[["impl UnwindSafe for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl UnwindSafe for Summary",1,["heap_slope_trick::Summary"]]], +"heap_tricks":[["impl UnwindSafe for Nop",1,["heap_tricks::Nop"]],["impl<T> UnwindSafe for Sum<T>where\n T: UnwindSafe,",1,["heap_tricks::Sum"]],["impl<T, H> UnwindSafe for DoubleHeap<T, H>where\n H: UnwindSafe,\n T: UnwindSafe,",1,["heap_tricks::DoubleHeap"]],["impl<T> UnwindSafe for RemovableHeap<T>where\n T: UnwindSafe,",1,["heap_tricks::RemovableHeap"]]], +"hld":[["impl UnwindSafe for Hld",1,["hld::Hld"]],["impl<'a> UnwindSafe for PathSegments<'a>",1,["hld::PathSegments"]]], +"hopkarp":[["impl UnwindSafe for HopkarpResult",1,["hopkarp::HopkarpResult"]]], +"hungarian":[["impl<T> UnwindSafe for HungarianResult<T>where\n T: UnwindSafe,",1,["hungarian::HungarianResult"]]], +"interval_heap":[["impl<T> UnwindSafe for IntervalHeap<T>where\n T: UnwindSafe,",1,["interval_heap::IntervalHeap"]]], +"lazy_segbeats":[["impl<T> UnwindSafe for Segbeats<T>where\n T: UnwindSafe,",1,["lazy_segbeats::Segbeats"]]], +"lazy_segtree":[["impl<O> UnwindSafe for LazySegtree<O>where\n <O as Op>::Operator: UnwindSafe,\n <O as Op>::Value: UnwindSafe,",1,["lazy_segtree::LazySegtree"]]], +"lin_ineq":[["impl<T> UnwindSafe for Interval<T>where\n T: UnwindSafe,",1,["lin_ineq::Interval"]]], +"link_cut_tree":[["impl<O> UnwindSafe for LinkCutTreeBase<O>where\n <O as OpBase>::InternalValue: UnwindSafe + RefUnwindSafe,",1,["link_cut_tree::base::LinkCutTreeBase"]]], +"low_link":[["impl UnwindSafe for LowLink",1,["low_link::LowLink"]]], +"mincost_flow":[["impl UnwindSafe for Edge",1,["mincost_flow::Edge"]],["impl UnwindSafe for MinCostFlow",1,["mincost_flow::MinCostFlow"]]], +"partially_persistent_union_find":[["impl UnwindSafe for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]], +"radix_heap":[["impl<T> UnwindSafe for RadixHeap<T>where\n T: UnwindSafe,",1,["radix_heap::RadixHeap"]]], +"randtools":[["impl UnwindSafe for LogUniform",1,["randtools::LogUniform"]],["impl UnwindSafe for DistinctTwo",1,["randtools::DistinctTwo"]],["impl UnwindSafe for SubRange",1,["randtools::SubRange"]],["impl UnwindSafe for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl UnwindSafe for Tree",1,["randtools::Tree"]],["impl UnwindSafe for SimpleGraph",1,["randtools::SimpleGraph"]],["impl UnwindSafe for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl UnwindSafe for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl UnwindSafe for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]]], +"rational":[["impl<T> UnwindSafe for Rational<T>where\n T: UnwindSafe,",1,["rational::Rational"]]], +"rb":[["impl<K, O> UnwindSafe for MultimapSeg<K, O>where\n K: RefUnwindSafe,\n <O as MultimapOp>::Acc: RefUnwindSafe,\n <O as MultimapOp>::Value: RefUnwindSafe,",1,["rb::map::MultimapSeg"]],["impl<K, V> UnwindSafe for Multimap<K, V>where\n K: RefUnwindSafe,\n V: RefUnwindSafe,",1,["rb::map::Multimap"]],["impl<K> UnwindSafe for Multiset<K>where\n K: RefUnwindSafe,",1,["rb::map::Multiset"]],["impl<O> UnwindSafe for Seg<O>where\n <O as Op>::Value: RefUnwindSafe,",1,["rb::seq::Seg"]]], +"rbtree":[["impl<T, O> UnwindSafe for RbTree<T, O>where\n T: UnwindSafe,\n <O as Op>::Summary: UnwindSafe,",1,["rbtree::RbTree"]],["impl<T> UnwindSafe for Nop<T>",1,["rbtree::Nop"]],["impl<'a, T, O> UnwindSafe for Iter<'a, T, O>where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,",1,["rbtree::Iter"]]], +"scc":[["impl UnwindSafe for Scc",1,["scc::Scc"]]], +"segbeats":[["impl<T> UnwindSafe for Segbeats<T>where\n T: UnwindSafe,",1,["segbeats::Segbeats"]]], +"segbeats_task3":[["impl<T> UnwindSafe for Segbeats<T>where\n T: UnwindSafe,",1,["segbeats_task3::Segbeats"]]], +"segtree":[["impl<O> UnwindSafe for Segtree<O>where\n <O as Op>::Value: UnwindSafe,",1,["segtree::Segtree"]],["impl<'a, O> !UnwindSafe for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, O> UnwindSafe for SegtreeWithCompression<K, O>where\n K: UnwindSafe,\n <O as Op>::Value: UnwindSafe,",1,["segtree::SegtreeWithCompression"]],["impl<K, L, O> UnwindSafe for Sparse2dSegtree<K, L, O>where\n K: UnwindSafe,\n L: UnwindSafe,\n <O as Op>::Value: UnwindSafe,",1,["segtree::Sparse2dSegtree"]],["impl<O> UnwindSafe for Dense2dSegtree<O>where\n <O as Op>::Value: UnwindSafe,",1,["segtree::Dense2dSegtree"]],["impl<'a, O> !UnwindSafe for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]]], +"skew_heap":[["impl<T> UnwindSafe for SkewHeap<T>where\n T: UnwindSafe,",1,["skew_heap::SkewHeap"]]], +"snippetter":[["impl UnwindSafe for CrateMetadata",1,["snippetter::CrateMetadata"]]], +"sparse_table":[["impl<O> UnwindSafe for SparseTable<O>where\n <O as Op>::Value: UnwindSafe,",1,["sparse_table::SparseTable"]],["impl<O> UnwindSafe for SparseTable2d<O>where\n <O as Op>::Value: UnwindSafe,",1,["sparse_table::SparseTable2d"]]], +"splay_tree":[["impl<T> UnwindSafe for Nop<T>",1,["splay_tree::Nop"]],["impl<O> UnwindSafe for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> UnwindSafe for SplayTree<O>where\n <O as LazyOps>::Acc: RefUnwindSafe,\n <O as LazyOps>::Lazy: RefUnwindSafe,\n <O as LazyOps>::Value: RefUnwindSafe,",1,["splay_tree::SplayTree"]],["impl<'a, O> !UnwindSafe for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<'a, O> !UnwindSafe for Entry<'a, O>",1,["splay_tree::Entry"]]], +"swag":[["impl<O> UnwindSafe for DequeueSwag<O>where\n <O as Op>::Value: UnwindSafe,",1,["swag::DequeueSwag"]]], +"tree_fold":[["impl<T> UnwindSafe for TwoWayTreeFoldResult<T>where\n T: UnwindSafe,",1,["tree_fold::TwoWayTreeFoldResult"]]], +"trial":[["impl<T> UnwindSafe for Divisors<T>where\n T: UnwindSafe,",1,["trial::divisors::Divisors"]],["impl<T> UnwindSafe for PrimeFactorsRle<T>where\n T: UnwindSafe,",1,["trial::prime_factors::PrimeFactorsRle"]],["impl<T> UnwindSafe for PrimeFactors<T>where\n T: UnwindSafe,",1,["trial::prime_factors::PrimeFactors"]]], +"trie":[["impl<V> UnwindSafe for TrieMap<V>where\n V: UnwindSafe,",1,["trie::trie_map::TrieMap"]],["impl UnwindSafe for TrieSet",1,["trie::trie_set::TrieSet"]]], +"two_sat":[["impl UnwindSafe for TwoSat",1,["two_sat::TwoSat"]]], +"uf_checklist":[["impl UnwindSafe for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> !UnwindSafe for Iter<'a>",1,["uf_checklist::Iter"]]], +"union_find":[["impl UnwindSafe for EdgeCount",1,["union_find::EdgeCount"]],["impl UnwindSafe for VertexCount",1,["union_find::VertexCount"]],["impl UnwindSafe for HasCycle",1,["union_find::HasCycle"]],["impl<O> UnwindSafe for UnionFind<O>where\n <O as Op>::Value: UnwindSafe,",1,["union_find::UnionFind"]]], +"veb":[["impl<V> UnwindSafe for VebMap<V>where\n V: UnwindSafe,",1,["veb::VebMap"]],["impl UnwindSafe for VebSet",1,["veb::VebSet"]]], +"vec_lines":[["impl<T, C> UnwindSafe for VecLines<T, C>where\n T: UnwindSafe,",1,["vec_lines::VecLines"]],["impl<T> UnwindSafe for Line<T>where\n T: UnwindSafe,",1,["vec_lines::Line"]],["impl UnwindSafe for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl UnwindSafe for IncreasingTilt",1,["vec_lines::IncreasingTilt"]]], +"wavelet_matrix":[["impl UnwindSafe for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl UnwindSafe for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl<'a> UnwindSafe for Spans<'a>",1,["wavelet_matrix::Spans"]],["impl<'a> UnwindSafe for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/str/traits/trait.FromStr.js b/implementors/core/str/traits/trait.FromStr.js new file mode 100644 index 00000000..804348b1 --- /dev/null +++ b/implementors/core/str/traits/trait.FromStr.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"rational":[["impl<T: Signed> FromStr for Rational<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/dinic/trait.Value.js b/implementors/dinic/trait.Value.js new file mode 100644 index 00000000..8d4a7f82 --- /dev/null +++ b/implementors/dinic/trait.Value.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"dinic":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/erato/converters/trait.PrimeFactors.js b/implementors/erato/converters/trait.PrimeFactors.js new file mode 100644 index 00000000..58bf2a09 --- /dev/null +++ b/implementors/erato/converters/trait.PrimeFactors.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"erato":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/erato/int/trait.Int.js b/implementors/erato/int/trait.Int.js new file mode 100644 index 00000000..58bf2a09 --- /dev/null +++ b/implementors/erato/int/trait.Int.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"erato":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/euclid/trait.Int.js b/implementors/euclid/trait.Int.js new file mode 100644 index 00000000..014561c2 --- /dev/null +++ b/implementors/euclid/trait.Int.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"euclid":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/euclid/trait.Signed.js b/implementors/euclid/trait.Signed.js new file mode 100644 index 00000000..014561c2 --- /dev/null +++ b/implementors/euclid/trait.Signed.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"euclid":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/euclid/trait.Unsigned.js b/implementors/euclid/trait.Unsigned.js new file mode 100644 index 00000000..014561c2 --- /dev/null +++ b/implementors/euclid/trait.Unsigned.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"euclid":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/fp/trait.PrimitiveRoot.js b/implementors/fp/trait.PrimitiveRoot.js new file mode 100644 index 00000000..b452fb62 --- /dev/null +++ b/implementors/fp/trait.PrimitiveRoot.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"fp":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/gss/trait.Float.js b/implementors/gss/trait.Float.js new file mode 100644 index 00000000..c5979044 --- /dev/null +++ b/implementors/gss/trait.Float.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"gss":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/gss/trait.Golden.js b/implementors/gss/trait.Golden.js new file mode 100644 index 00000000..c5979044 --- /dev/null +++ b/implementors/gss/trait.Golden.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"gss":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/gss/trait.Int.js b/implementors/gss/trait.Int.js new file mode 100644 index 00000000..c5979044 --- /dev/null +++ b/implementors/gss/trait.Int.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"gss":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/heap_tricks/trait.Handler.js b/implementors/heap_tricks/trait.Handler.js new file mode 100644 index 00000000..1b065065 --- /dev/null +++ b/implementors/heap_tricks/trait.Handler.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"heap_tricks":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/hungarian/trait.Value.js b/implementors/hungarian/trait.Value.js new file mode 100644 index 00000000..e588839f --- /dev/null +++ b/implementors/hungarian/trait.Value.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"hungarian":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/io/trait.ParseLine.js b/implementors/io/trait.ParseLine.js new file mode 100644 index 00000000..b2deb647 --- /dev/null +++ b/implementors/io/trait.ParseLine.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"io":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/lazy_segbeats/trait.Elm.js b/implementors/lazy_segbeats/trait.Elm.js new file mode 100644 index 00000000..6a53842f --- /dev/null +++ b/implementors/lazy_segbeats/trait.Elm.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"lazy_segbeats":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/lin_ineq/trait.Signed.js b/implementors/lin_ineq/trait.Signed.js new file mode 100644 index 00000000..0bd1ed95 --- /dev/null +++ b/implementors/lin_ineq/trait.Signed.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"lin_ineq":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/numeric_search/trait.Float.js b/implementors/numeric_search/trait.Float.js new file mode 100644 index 00000000..6a582db9 --- /dev/null +++ b/implementors/numeric_search/trait.Float.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"numeric_search":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/numeric_search/trait.Signed.js b/implementors/numeric_search/trait.Signed.js new file mode 100644 index 00000000..6a582db9 --- /dev/null +++ b/implementors/numeric_search/trait.Signed.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"numeric_search":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/numeric_search/trait.Unsigned.js b/implementors/numeric_search/trait.Unsigned.js new file mode 100644 index 00000000..6a582db9 --- /dev/null +++ b/implementors/numeric_search/trait.Unsigned.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"numeric_search":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/rand/distributions/distribution/trait.Distribution.js b/implementors/rand/distributions/distribution/trait.Distribution.js new file mode 100644 index 00000000..427335fa --- /dev/null +++ b/implementors/rand/distributions/distribution/trait.Distribution.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"randtools":[["impl Distribution<usize> for LogUniform"],["impl Distribution<Vec<Vec<usize, Global>, Global>> for SimpleGraph"],["impl Distribution<(usize, usize)> for DistinctTwo"],["impl Distribution<Range<usize>> for NonEmptySubRange"],["impl Distribution<Vec<Vec<usize, Global>, Global>> for SimpleDigraph"],["impl Distribution<Vec<(usize, usize), Global>> for SimpleDigraphEdges"],["impl Distribution<Vec<Vec<usize, Global>, Global>> for Tree"],["impl Distribution<Range<usize>> for SubRange"],["impl Distribution<Vec<(usize, usize), Global>> for SimpleGraphEdges"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/rational/trait.Signed.js b/implementors/rational/trait.Signed.js new file mode 100644 index 00000000..3c37960a --- /dev/null +++ b/implementors/rational/trait.Signed.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"rational":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/rbtree/trait.Op.js b/implementors/rbtree/trait.Op.js new file mode 100644 index 00000000..30a32dce --- /dev/null +++ b/implementors/rbtree/trait.Op.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"rbtree":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/riff/binary_search/trait.BinarySearch.js b/implementors/riff/binary_search/trait.BinarySearch.js new file mode 100644 index 00000000..fd2b2c4a --- /dev/null +++ b/implementors/riff/binary_search/trait.BinarySearch.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"riff":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/riff/change_min_max/trait.ChangeMinMax.js b/implementors/riff/change_min_max/trait.ChangeMinMax.js new file mode 100644 index 00000000..fd2b2c4a --- /dev/null +++ b/implementors/riff/change_min_max/trait.ChangeMinMax.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"riff":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/riff/numeric_traits/trait.Unsigned.js b/implementors/riff/numeric_traits/trait.Unsigned.js new file mode 100644 index 00000000..fd2b2c4a --- /dev/null +++ b/implementors/riff/numeric_traits/trait.Unsigned.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"riff":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/riff/pop_if/trait.PopIf.js b/implementors/riff/pop_if/trait.PopIf.js new file mode 100644 index 00000000..fd2b2c4a --- /dev/null +++ b/implementors/riff/pop_if/trait.PopIf.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"riff":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/segbeats/trait.Elm.js b/implementors/segbeats/trait.Elm.js new file mode 100644 index 00000000..85da7417 --- /dev/null +++ b/implementors/segbeats/trait.Elm.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"segbeats":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/segbeats_task3/trait.Elm.js b/implementors/segbeats_task3/trait.Elm.js new file mode 100644 index 00000000..9715642e --- /dev/null +++ b/implementors/segbeats_task3/trait.Elm.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"segbeats_task3":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/serde/ser/trait.Serialize.js b/implementors/serde/ser/trait.Serialize.js new file mode 100644 index 00000000..42cbdf38 --- /dev/null +++ b/implementors/serde/ser/trait.Serialize.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"snippetter":[["impl Serialize for CrateMetadata"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/splay_tree/trait.LazyOps.js b/implementors/splay_tree/trait.LazyOps.js new file mode 100644 index 00000000..8c29b404 --- /dev/null +++ b/implementors/splay_tree/trait.LazyOps.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"splay_tree":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/splay_tree/trait.Value.js b/implementors/splay_tree/trait.Value.js new file mode 100644 index 00000000..8c29b404 --- /dev/null +++ b/implementors/splay_tree/trait.Value.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"splay_tree":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/trial/trait.Value.js b/implementors/trial/trait.Value.js new file mode 100644 index 00000000..6a5f84c6 --- /dev/null +++ b/implementors/trial/trait.Value.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"trial":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/union_find/trait.Op.js b/implementors/union_find/trait.Op.js new file mode 100644 index 00000000..9b9f057a --- /dev/null +++ b/implementors/union_find/trait.Op.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"union_find":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/vec_lines/trait.Constraint.js b/implementors/vec_lines/trait.Constraint.js new file mode 100644 index 00000000..72d1f988 --- /dev/null +++ b/implementors/vec_lines/trait.Constraint.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"vec_lines":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/vec_lines/trait.Signed.js b/implementors/vec_lines/trait.Signed.js new file mode 100644 index 00000000..72d1f988 --- /dev/null +++ b/implementors/vec_lines/trait.Signed.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"vec_lines":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/interval_heap/all.html b/interval_heap/all.html index 52a69c30..e300dc62 100644 --- a/interval_heap/all.html +++ b/interval_heap/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/interval_heap/index.html b/interval_heap/index.html index eef2372e..dfd519c9 100644 --- a/interval_heap/index.html +++ b/interval_heap/index.html @@ -1,4 +1,4 @@ -interval_heap - Rustinterval_heap - Rust
    -

    Crate interval_heap

    source ·
    Expand description

    §Interval Heaps

    +

    Crate interval_heap

    source ·
    Expand description

    Interval Heaps

    van Leeuwen, Jan, and Derick Wood. “Interval heaps.” The Computer Journal 36.3 (1993): 209-216.

    -

    Structs§

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/interval_heap/struct.IntervalHeap.html b/interval_heap/struct.IntervalHeap.html index 4c7d8754..14df5806 100644 --- a/interval_heap/struct.IntervalHeap.html +++ b/interval_heap/struct.IntervalHeap.html @@ -1,4 +1,4 @@ -IntervalHeap in interval_heap - RustIntervalHeap in interval_heap - Rust
    -

    Struct interval_heap::IntervalHeap

    source ·
    pub struct IntervalHeap<T: Ord> { /* private fields */ }
    Expand description

    Interval heap (double-ended priority queue)

    -

    Implementations§

    source§

    impl<T: Ord> IntervalHeap<T>

    source

    pub fn new() -> Self

    Constructs a new, empty interval heap.

    -
    source

    pub fn peek_min(&self) -> Option<&T>

    Returns $\min(S)$.

    -
    source

    pub fn peek_max(&self) -> Option<&T>

    Returns $\max(S)$.

    -
    source

    pub fn pop_min(&mut self) -> Option<T>

    Removes and returns $\min(S)$.

    -
    source

    pub fn pop_max(&mut self) -> Option<T>

    Removes and returns $\max(S)$.

    -
    source

    pub fn push(&mut self, x: T)

    $S \leftarrow S \cup \{\!\{x\}\!\}$.

    -

    Trait Implementations§

    source§

    impl<T: Clone + Ord> Clone for IntervalHeap<T>

    source§

    fn clone(&self) -> IntervalHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Ord> Debug for IntervalHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Ord> Default for IntervalHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Ord> Extend<T> for IntervalHeap<T>

    source§

    fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T: Ord> From<Vec<T>> for IntervalHeap<T>

    source§

    fn from(values: Vec<T>) -> Self

    Converts to this type from the input type.
    source§

    impl<T: Ord> FromIterator<T> for IntervalHeap<T>

    source§

    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T: Ord> IntoIterator for IntervalHeap<T>

    source§

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T: PartialEq + Ord> PartialEq for IntervalHeap<T>

    source§

    fn eq(&self, other: &IntervalHeap<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq + Ord> Eq for IntervalHeap<T>

    source§

    impl<T: Ord> StructuralPartialEq for IntervalHeap<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for IntervalHeap<T>

    §

    impl<T> RefUnwindSafe for IntervalHeap<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for IntervalHeap<T>
    where - T: Send,

    §

    impl<T> Sync for IntervalHeap<T>
    where - T: Sync,

    §

    impl<T> Unpin for IntervalHeap<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for IntervalHeap<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub struct IntervalHeap<T: Ord> { /* private fields */ }
    Expand description

    Interval heap (double-ended priority queue)

    +

    Implementations§

    source§

    impl<T: Ord> IntervalHeap<T>

    source

    pub fn new() -> Self

    Constructs a new, empty interval heap.

    +
    source

    pub fn peek_min(&self) -> Option<&T>

    Returns $\min(S)$.

    +
    source

    pub fn peek_max(&self) -> Option<&T>

    Returns $\max(S)$.

    +
    source

    pub fn pop_min(&mut self) -> Option<T>

    Removes and returns $\min(S)$.

    +
    source

    pub fn pop_max(&mut self) -> Option<T>

    Removes and returns $\max(S)$.

    +
    source

    pub fn push(&mut self, x: T)

    $S \leftarrow S \cup \{\!\{x\}\!\}$.

    +

    Trait Implementations§

    source§

    impl<T: Clone + Ord> Clone for IntervalHeap<T>

    source§

    fn clone(&self) -> IntervalHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Ord> Debug for IntervalHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Ord> Default for IntervalHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Ord> Extend<T> for IntervalHeap<T>

    source§

    fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<T: Ord> From<Vec<T, Global>> for IntervalHeap<T>

    source§

    fn from(values: Vec<T>) -> Self

    Converts to this type from the input type.
    source§

    impl<T: Ord> FromIterator<T> for IntervalHeap<T>

    source§

    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T: Ord> IntoIterator for IntervalHeap<T>

    §

    type IntoIter = IntoIter<T, Global>

    Which kind of iterator are we turning this into?
    §

    type Item = T

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T: PartialEq + Ord> PartialEq<IntervalHeap<T>> for IntervalHeap<T>

    source§

    fn eq(&self, other: &IntervalHeap<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq + Ord> Eq for IntervalHeap<T>

    source§

    impl<T: Ord> StructuralEq for IntervalHeap<T>

    source§

    impl<T: Ord> StructuralPartialEq for IntervalHeap<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for IntervalHeap<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for IntervalHeap<T>where + T: Send,

    §

    impl<T> Sync for IntervalHeap<T>where + T: Sync,

    §

    impl<T> Unpin for IntervalHeap<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for IntervalHeap<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/io/all.html b/io/all.html index f65269bd..57bcf868 100644 --- a/io/all.html +++ b/io/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Traits

    Functions

    \ No newline at end of file +

    List of all items

    Traits

    Functions

    \ No newline at end of file diff --git a/io/fn.input.html b/io/fn.input.html index 06f05f28..9c0af08d 100644 --- a/io/fn.input.html +++ b/io/fn.input.html @@ -1,4 +1,4 @@ -input in io - Rustinput in io - Rust
    -

    Function io::input

    source ·
    pub fn input<T: ParseLine>() -> T
    Expand description

    Read input from stdin and parse it.

    +

    Function io::input

    source ·
    pub fn input<T: ParseLine>() -> T
    Expand description

    Read input from stdin and parse it.

    \ No newline at end of file diff --git a/io/index.html b/io/index.html index 12c18c3a..872b513b 100644 --- a/io/index.html +++ b/io/index.html @@ -1,4 +1,4 @@ -io - Rustio - Rust
    -

    Crate io

    source ·
    Expand description

    Read input from stdin and parse it.

    -

    §Example

    # use io::input;
    +

    Crate io

    source ·
    Expand description

    Read input from stdin and parse it.

    +

    Example

    # use io::input;
     let (a, b): (i32, i32) = input();
     let a: Vec<i32> = input();
    -

    §Types that can be parsed

    +

    Types that can be parsed

    -

    Traits§

    Functions§

    • Read input from stdin and parse it.
    \ No newline at end of file +

    Traits

    Functions

    • Read input from stdin and parse it.
    \ No newline at end of file diff --git a/io/trait.ParseLine.html b/io/trait.ParseLine.html index 5daaecf4..4c8174eb 100644 --- a/io/trait.ParseLine.html +++ b/io/trait.ParseLine.html @@ -1,4 +1,4 @@ -ParseLine in io - RustParseLine in io - Rust
    -

    Trait io::ParseLine

    source ·
    pub trait ParseLine {
    +

    Trait io::ParseLine

    source ·
    pub trait ParseLine {
         // Required method
    -    fn parse_line(s: &str) -> Self;
    +    fn parse_line(s: &str) -> Self;
     }
    Expand description

    Trait for types that can be parsed.

    -

    Required Methods§

    source

    fn parse_line(s: &str) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl ParseLine for char

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i8

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i16

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i32

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i64

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i128

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for isize

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u8

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u16

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u32

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u64

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u128

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for usize

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for String

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine> ParseLine for (T0, T1)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine> ParseLine for (T0, T1, T2)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine> ParseLine for (T0, T1, T2, T3)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine> ParseLine for (T0, T1, T2, T3, T4)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine, T8: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine, T8: ParseLine, T9: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T: ParseLine> ParseLine for Vec<T>

    source§

    fn parse_line(s: &str) -> Self

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn parse_line(s: &str) -> Self

    Implementations on Foreign Types§

    source§

    impl ParseLine for String

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine> ParseLine for (T0, T1, T2)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i128

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i16

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine> ParseLine for (T0, T1, T2, T3, T4)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine, T8: ParseLine, T9: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i8

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u64

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i32

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u32

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine> ParseLine for (T0, T1, T2, T3)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for usize

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u128

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for i64

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for char

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T: ParseLine> ParseLine for Vec<T>

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u16

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine> ParseLine for (T0, T1)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for isize

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl<T0: ParseLine, T1: ParseLine, T2: ParseLine, T3: ParseLine, T4: ParseLine, T5: ParseLine, T6: ParseLine, T7: ParseLine, T8: ParseLine> ParseLine for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

    source§

    fn parse_line(s: &str) -> Self

    source§

    impl ParseLine for u8

    source§

    fn parse_line(s: &str) -> Self

    Implementors§

    \ No newline at end of file diff --git a/lagrange/all.html b/lagrange/all.html index b89df029..85b4bfd5 100644 --- a/lagrange/all.html +++ b/lagrange/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/lagrange/fn.evaluate.html b/lagrange/fn.evaluate.html index 5660a8e3..acf492d6 100644 --- a/lagrange/fn.evaluate.html +++ b/lagrange/fn.evaluate.html @@ -1,4 +1,4 @@ -evaluate in lagrange - Rustevaluate in lagrange - Rust
    -

    Function lagrange::evaluate

    source ·
    pub fn evaluate<const P: u64>(a: &[Fp<P>], x: Fp<P>) -> Fp<P>
    Expand description

    多項式の係数から 1 点での評価を計算します。

    -

    §使い方

    +

    Function lagrange::evaluate

    source ·
    pub fn evaluate<const P: u64>(a: &[Fp<P>], x: Fp<P>) -> Fp<P>
    Expand description

    多項式の係数から 1 点での評価を計算します。

    +

    使い方

    use lagrange::evaluate;
     type Fp = fp::Fp<998244353>;
     
    @@ -42,6 +42,6 @@ 

    §使い方

    evaluate(&[Fp::new(0), Fp::new(0), Fp::new(1)], Fp::new(13)), Fp::new(169) );
    -

    §計算量

    +

    計算量

    O ( N )

    \ No newline at end of file diff --git a/lagrange/fn.interpolate.html b/lagrange/fn.interpolate.html index bd1cb299..b4315d4c 100644 --- a/lagrange/fn.interpolate.html +++ b/lagrange/fn.interpolate.html @@ -1,4 +1,4 @@ -interpolate in lagrange - Rustinterpolate in lagrange - Rust
    -

    Function lagrange::interpolate

    source ·
    pub fn interpolate<const P: u64>(evals: &[[Fp<P>; 2]]) -> Vec<Fp<P>>
    Expand description

    x 座標の異なるような N 点の評価から、N - 1 次以下の多項式を一意的に復元します。

    -

    §使い方

    +

    Function lagrange::interpolate

    source ·
    pub fn interpolate<const P: u64>(evals: &[[Fp<P>; 2]]) -> Vec<Fp<P>>
    Expand description

    x 座標の異なるような N 点の評価から、N - 1 次以下の多項式を一意的に復元します。

    +

    使い方

    use lagrange::interpolate;
     type Fp = fp::Fp<998244353>;
     
    @@ -46,10 +46,10 @@ 

    §使い方

    ]; let poly = [Fp::new(0), Fp::new(0), Fp::new(1), Fp::new(0)]; assert_eq!(interpolate(&eval), poly);
    -

    §計算量

    +

    計算量

    xi - xj の逆数の計算でログが乗ります。

    O ( N ^ 2 lg P )

    -

    §Panics

    +

    Panics

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/lin_ineq/trait.Signed.html b/lin_ineq/trait.Signed.html index 735f786a..761e7220 100644 --- a/lin_ineq/trait.Signed.html +++ b/lin_ineq/trait.Signed.html @@ -1,4 +1,4 @@ -Signed in lin_ineq - RustSigned in lin_ineq - Rust
    -

    Trait lin_ineq::Signed

    source ·
    pub trait Signed:
    -    Sized
    -    + Copy
    -    + Ord
    -    + Neg<Output = Self>
    -    + Sub<Output = Self> {
    +

    Trait lin_ineq::Signed

    source ·
    pub trait Signed: Sized + Copy + Ord + Neg<Output = Self> + Sub<Output = Self> {
         const MIN: Self;
         const MAX: Self;
         const ZERO: Self;
    @@ -45,4 +40,4 @@
         // Required method
         fn div_euclid(self, rhs: Self) -> Self;
     }
    Expand description

    符号付き整数です。

    -

    Required Associated Constants§

    source

    const MIN: Self

    source

    const MAX: Self

    source

    const ZERO: Self

    Required Methods§

    source

    fn div_euclid(self, rhs: Self) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Signed for i8

    source§

    const MIN: Self = -128i8

    source§

    const MAX: Self = 127i8

    source§

    const ZERO: Self = 0i8

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i16

    source§

    const MIN: Self = -32_768i16

    source§

    const MAX: Self = 32_767i16

    source§

    const ZERO: Self = 0i16

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i32

    source§

    const MIN: Self = -2_147_483_648i32

    source§

    const MAX: Self = 2_147_483_647i32

    source§

    const ZERO: Self = 0i32

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i64

    source§

    const MIN: Self = -9_223_372_036_854_775_808i64

    source§

    const MAX: Self = 9_223_372_036_854_775_807i64

    source§

    const ZERO: Self = 0i64

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i128

    source§

    const MIN: Self = -170_141_183_460_469_231_731_687_303_715_884_105_728i128

    source§

    const MAX: Self = 170_141_183_460_469_231_731_687_303_715_884_105_727i128

    source§

    const ZERO: Self = 0i128

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for isize

    source§

    const MIN: Self = -9_223_372_036_854_775_808isize

    source§

    const MAX: Self = 9_223_372_036_854_775_807isize

    source§

    const ZERO: Self = 0isize

    source§

    fn div_euclid(self, rhs: Self) -> Self

    Implementors§

    \ No newline at end of file +

    Required Associated Constants§

    source

    const MIN: Self

    source

    const MAX: Self

    source

    const ZERO: Self

    Required Methods§

    source

    fn div_euclid(self, rhs: Self) -> Self

    Implementations on Foreign Types§

    source§

    impl Signed for i16

    source§

    const MIN: Self = -32_768i16

    source§

    const MAX: Self = 32_767i16

    source§

    const ZERO: Self = 0i16

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i128

    source§

    const MIN: Self = -170_141_183_460_469_231_731_687_303_715_884_105_728i128

    source§

    const MAX: Self = 170_141_183_460_469_231_731_687_303_715_884_105_727i128

    source§

    const ZERO: Self = 0i128

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i32

    source§

    const MIN: Self = -2_147_483_648i32

    source§

    const MAX: Self = 2_147_483_647i32

    source§

    const ZERO: Self = 0i32

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i64

    source§

    const MIN: Self = -9_223_372_036_854_775_808i64

    source§

    const MAX: Self = 9_223_372_036_854_775_807i64

    source§

    const ZERO: Self = 0i64

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for isize

    source§

    const MIN: Self = -9_223_372_036_854_775_808isize

    source§

    const MAX: Self = 9_223_372_036_854_775_807isize

    source§

    const ZERO: Self = 0isize

    source§

    fn div_euclid(self, rhs: Self) -> Self

    source§

    impl Signed for i8

    source§

    const MIN: Self = -128i8

    source§

    const MAX: Self = 127i8

    source§

    const ZERO: Self = 0i8

    source§

    fn div_euclid(self, rhs: Self) -> Self

    Implementors§

    \ No newline at end of file diff --git a/link_cut_tree/all.html b/link_cut_tree/all.html index 4eb3b052..a6078c18 100644 --- a/link_cut_tree/all.html +++ b/link_cut_tree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +

    List of all items

    Structs

    Traits

    Type Definitions

    \ No newline at end of file diff --git a/link_cut_tree/index.html b/link_cut_tree/index.html index dc5efb73..35b3c321 100644 --- a/link_cut_tree/index.html +++ b/link_cut_tree/index.html @@ -1,4 +1,4 @@ -link_cut_tree - Rustlink_cut_tree - Rust
    -

    Crate link_cut_tree

    source ·
    Expand description

    Link-Cut Tree

    -

    §Summary

    +

    Crate link_cut_tree

    source ·
    Expand description

    Link-Cut Tree

    +

    Summary

    Provided data structures are as follows:

    Operations are specified by the trait Op.

    -

    §About the root

    +

    About the root

    If you want to change the root of the tree, you can use evert method.

    These also support some unrooted operations (undirected_*). It does not preserve the root of the tree.

    -

    Structs§

    • Common implementation of Link-Cut Tree. Please do not use this directly.

    Traits§

    • Aggregation operation for link-cut tree

    Type Aliases§

    \ No newline at end of file +

    Structs

    • Common implementation of Link-Cut Tree. Please do not use this directly.

    Traits

    • Aggregation operation for link-cut tree

    Type Definitions

    \ No newline at end of file diff --git a/link_cut_tree/struct.LinkCutTreeBase.html b/link_cut_tree/struct.LinkCutTreeBase.html index 77b5ad01..1edd1041 100644 --- a/link_cut_tree/struct.LinkCutTreeBase.html +++ b/link_cut_tree/struct.LinkCutTreeBase.html @@ -1,4 +1,4 @@ -LinkCutTreeBase in link_cut_tree - RustLinkCutTreeBase in link_cut_tree - Rust
    -

    Struct link_cut_tree::LinkCutTreeBase

    source ·
    pub struct LinkCutTreeBase<O: OpBase> { /* private fields */ }
    Expand description

    Common implementation of Link-Cut Tree. Please do not use this directly.

    -

    Implementations§

    source§

    impl<O: OpBase> LinkCutTreeBase<O>

    source

    pub fn new(n: usize) -> Self

    Constructs a new Link-Cut Tree with n nodes.

    -
    source

    pub fn from_values(values: impl IntoIterator<Item = O::Value>) -> Self

    Constructs a new Link-Cut Tree with n nodes, where the values are given by values.

    -

    Connects p and c with an edge, preserving the direction.

    -
    §Panics
    +
    pub struct LinkCutTreeBase<O: OpBase> { /* private fields */ }
    Expand description

    Common implementation of Link-Cut Tree. Please do not use this directly.

    +

    Implementations§

    source§

    impl<O: OpBase> LinkCutTreeBase<O>

    source

    pub fn new(n: usize) -> Self

    Constructs a new Link-Cut Tree with n nodes.

    +
    source

    pub fn from_values(values: impl IntoIterator<Item = O::Value>) -> Self

    Constructs a new Link-Cut Tree with n nodes, where the values are given by values.

    +

    Connects p and c with an edge, preserving the direction.

    +
    Panics
    • If c is not a root.
    • If c and p are already connected.
    -

    Connects i and j with an edge, not preserving the direction.

    -
    §Returns
    +

    Connects i and j with an edge, not preserving the direction.

    +
    Returns
    • true if the edge is added.
    -
    source

    pub fn cut(&mut self, x: usize) -> Option<usize>

    Cuts the edge between x and its parent.

    -
    §Returns
    +
    source

    pub fn cut(&mut self, x: usize) -> Option<usize>

    Cuts the edge between x and its parent.

    +
    Returns

    The id of the parent of x before the cut.

    -
    source

    pub fn undirected_cut(&mut self, i: usize, j: usize) -> bool

    Cuts the edge between i and j, not preserving the direction.

    -
    §Returns
    +
    source

    pub fn undirected_cut(&mut self, i: usize, j: usize) -> bool

    Cuts the edge between i and j, not preserving the direction.

    +
    Returns

    true if the edge is cut.

    -
    source

    pub fn evert(&mut self, x: usize)

    Makes x the root of the tree.

    -
    source

    pub fn undirected_has_edge(&mut self, x: usize, y: usize) -> bool

    Returns true if there is an edge between x and y.

    -
    source

    pub fn undirected_is_connected(&mut self, x: usize, y: usize) -> bool

    Returns true if x and y are connected.

    -
    source

    pub fn lca(&mut self, x: usize, y: usize) -> Option<usize>

    Returns the id of the lowest common ancestor of x and y.

    -
    source

    pub fn set(&mut self, x: usize, f: impl FnMut(O::Value) -> O::Value)

    Sets the value of x to f(x).

    -
    source

    pub fn fold(&mut self, x: usize) -> O::Value

    Folds the path from the root to x.

    -
    source

    pub fn undirected_fold(&mut self, i: usize, j: usize) -> Option<O::Value>

    Folds the path from i to j, not preserving the direction.

    -
    source

    pub fn parent(&mut self, x: usize) -> Option<usize>

    Returns the id of the parent of x.

    -

    Auto Trait Implementations§

    §

    impl<O> Freeze for LinkCutTreeBase<O>

    §

    impl<O> RefUnwindSafe for LinkCutTreeBase<O>
    where - <O as OpBase>::InternalValue: RefUnwindSafe,

    §

    impl<O> !Send for LinkCutTreeBase<O>

    §

    impl<O> !Sync for LinkCutTreeBase<O>

    §

    impl<O> Unpin for LinkCutTreeBase<O>
    where - <O as OpBase>::InternalValue: Unpin,

    §

    impl<O> UnwindSafe for LinkCutTreeBase<O>
    where - <O as OpBase>::InternalValue: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn evert(&mut self, x: usize)

    Makes x the root of the tree.

    +
    source

    pub fn undirected_has_edge(&mut self, x: usize, y: usize) -> bool

    Returns true if there is an edge between x and y.

    +
    source

    pub fn undirected_is_connected(&mut self, x: usize, y: usize) -> bool

    Returns true if x and y are connected.

    +
    source

    pub fn lca(&mut self, x: usize, y: usize) -> Option<usize>

    Returns the id of the lowest common ancestor of x and y.

    +
    source

    pub fn set(&mut self, x: usize, f: impl FnMut(O::Value) -> O::Value)

    Sets the value of x to f(x).

    +
    source

    pub fn fold(&mut self, x: usize) -> O::Value

    Folds the path from the root to x.

    +
    source

    pub fn undirected_fold(&mut self, i: usize, j: usize) -> Option<O::Value>

    Folds the path from i to j, not preserving the direction.

    +
    source

    pub fn parent(&mut self, x: usize) -> Option<usize>

    Returns the id of the parent of x.

    +

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for LinkCutTreeBase<O>where + <O as OpBase>::InternalValue: RefUnwindSafe,

    §

    impl<O> !Send for LinkCutTreeBase<O>

    §

    impl<O> !Sync for LinkCutTreeBase<O>

    §

    impl<O> Unpin for LinkCutTreeBase<O>where + <O as OpBase>::InternalValue: Unpin,

    §

    impl<O> UnwindSafe for LinkCutTreeBase<O>where + <O as OpBase>::InternalValue: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/link_cut_tree/trait.Op.html b/link_cut_tree/trait.Op.html index 2d975c32..8321bbd9 100644 --- a/link_cut_tree/trait.Op.html +++ b/link_cut_tree/trait.Op.html @@ -1,4 +1,4 @@ -Op in link_cut_tree - RustOp in link_cut_tree - Rust
    -

    Trait link_cut_tree::Op

    source ·
    pub trait Op {
    -    type Value: Clone;
    +

    Trait link_cut_tree::Op

    source ·
    pub trait Op {
    +    type Value: Clone;
     
         // Required methods
         fn identity() -> Self::Value;
         fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
     }
    Expand description

    Aggregation operation for link-cut tree

    -

    Required Associated Types§

    Required Methods§

    source

    fn identity() -> Self::Value

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    Required Methods§

    source

    fn identity() -> Self::Value

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Implementors§

    \ No newline at end of file diff --git a/link_cut_tree/type.CommutLinkCutTree.html b/link_cut_tree/type.CommutLinkCutTree.html index fa58fa1c..a0e9fab6 100644 --- a/link_cut_tree/type.CommutLinkCutTree.html +++ b/link_cut_tree/type.CommutLinkCutTree.html @@ -1,4 +1,4 @@ -CommutLinkCutTree in link_cut_tree - RustCommutLinkCutTree in link_cut_tree - Rust
    -

    Type Alias link_cut_tree::CommutLinkCutTree

    source ·
    pub type CommutLinkCutTree<T> = LinkCutTreeBase<Commut<T>>;
    Expand description

    Link-Cut Tree with commutative operation

    -

    Aliased Type§

    struct CommutLinkCutTree<T> { /* private fields */ }
    \ No newline at end of file +

    Type Definition link_cut_tree::CommutLinkCutTree

    source ·
    pub type CommutLinkCutTree<T> = LinkCutTreeBase<Commut<T>>;
    Expand description

    Link-Cut Tree with commutative operation

    +
    \ No newline at end of file diff --git a/link_cut_tree/type.LinkCutTree.html b/link_cut_tree/type.LinkCutTree.html index aeb55d09..199c84a5 100644 --- a/link_cut_tree/type.LinkCutTree.html +++ b/link_cut_tree/type.LinkCutTree.html @@ -1,4 +1,4 @@ -LinkCutTree in link_cut_tree - RustLinkCutTree in link_cut_tree - Rust
    -

    Type Alias link_cut_tree::LinkCutTree

    source ·
    pub type LinkCutTree = LinkCutTreeBase<()>;
    Expand description

    Link-Cut Tree without aggregation operation

    -

    Aliased Type§

    struct LinkCutTree { /* private fields */ }
    \ No newline at end of file +

    Type Definition link_cut_tree::LinkCutTree

    source ·
    pub type LinkCutTree = LinkCutTreeBase<()>;
    Expand description

    Link-Cut Tree without aggregation operation

    +
    \ No newline at end of file diff --git a/link_cut_tree/type.NonCommutLinkCutTree.html b/link_cut_tree/type.NonCommutLinkCutTree.html index bf138cb8..12dbdafc 100644 --- a/link_cut_tree/type.NonCommutLinkCutTree.html +++ b/link_cut_tree/type.NonCommutLinkCutTree.html @@ -1,4 +1,4 @@ -NonCommutLinkCutTree in link_cut_tree - RustNonCommutLinkCutTree in link_cut_tree - Rust
    -

    Type Alias link_cut_tree::NonCommutLinkCutTree

    source ·
    pub type NonCommutLinkCutTree<T> = LinkCutTreeBase<NonCommut<T>>;
    Expand description

    Link-Cut Tree with non-commutative operation

    -

    Aliased Type§

    struct NonCommutLinkCutTree<T> { /* private fields */ }
    \ No newline at end of file +

    Type Definition link_cut_tree::NonCommutLinkCutTree

    source ·
    pub type NonCommutLinkCutTree<T> = LinkCutTreeBase<NonCommut<T>>;
    Expand description

    Link-Cut Tree with non-commutative operation

    +
    \ No newline at end of file diff --git a/low_link/all.html b/low_link/all.html index 1d35dcdc..d05f4f03 100644 --- a/low_link/all.html +++ b/low_link/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/low_link/index.html b/low_link/index.html index ea2a20e1..1ab6fc2a 100644 --- a/low_link/index.html +++ b/low_link/index.html @@ -1,4 +1,4 @@ -low_link - Rustlow_link - Rust
    -

    Crate low_link

    source ·
    Expand description

    Low-link を計算します。

    +

    Crate low_link

    source ·
    Expand description

    Structs§

    • Low-link を計算する構造体です。
    \ No newline at end of file +

    Structs

    • Low-link を計算する構造体です。
    \ No newline at end of file diff --git a/low_link/struct.LowLink.html b/low_link/struct.LowLink.html index 0efa3e76..4d1a4a39 100644 --- a/low_link/struct.LowLink.html +++ b/low_link/struct.LowLink.html @@ -1,4 +1,4 @@ -LowLink in low_link - RustLowLink in low_link - Rust
    -

    Struct low_link::LowLink

    source ·
    pub struct LowLink { /* private fields */ }
    Expand description

    Low-link を計算する構造体です。

    -

    Implementations§

    source

    pub fn new(n: usize) -> Self

    未ビルドの空グラフを構築します。

    -
    §Examples
    +

    Struct low_link::LowLink

    source ·
    pub struct LowLink { /* private fields */ }
    Expand description

    Low-link を計算する構造体です。

    +

    Implementations§

    source

    pub fn new(n: usize) -> Self

    未ビルドの空グラフを構築します。

    +
    Examples
    let low_link = LowLink::new(4);
    -
    source

    pub fn add_edge(&mut self, i: usize, j: usize)

    未ビルドのグラフに(無向)辺を追加します。

    -
    §Examples
    +
    source

    pub fn add_edge(&mut self, i: usize, j: usize)

    未ビルドのグラフに(無向)辺を追加します。

    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 3);
     low_link.add_edge(0, 2);
    -
    source

    pub fn build(&mut self)

    ビルドします。

    -
    §Examples
    +
    source

    pub fn build(&mut self)

    ビルドします。

    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 3);
     low_link.add_edge(0, 2);
     low_link.build();
    -
    source

    pub fn is_articulation_point(&self, x: usize) -> bool

    頂点 x が関節点なら true を返します。

    -
    §Examples
    +
    source

    pub fn is_articulation_point(&self, x: usize) -> bool

    頂点 x が関節点なら true を返します。

    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 1);
     low_link.add_edge(0, 2);
    @@ -58,9 +58,9 @@ 
    §Examples
    assert_eq!(low_link.is_articulation_point(0), false); assert_eq!(low_link.is_articulation_point(2), true);
    -
    source

    pub fn is_bridge_unchecked(&self, x: usize, y: usize) -> bool

    頂点 x, y を結ぶ(無向)辺があれば、それが橋であるときに ture を返します。 +

    source

    pub fn is_bridge_unchecked(&self, x: usize, y: usize) -> bool

    頂点 x, y を結ぶ(無向)辺があれば、それが橋であるときに ture を返します。 辺がないときの戻り値は未定義です。

    -
    §Examples
    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 1);
     low_link.add_edge(0, 2);
    @@ -70,8 +70,8 @@ 
    §Examples
    assert_eq!(low_link.is_bridge_unchecked(0, 1), false); assert_eq!(low_link.is_bridge_unchecked(2, 3), true);
    -
    source

    pub fn biconnected_components(&self) -> Vec<Vec<[usize; 2]>>

    2-連結成分分解をして、各成分に属する辺のリストのリストを返します。

    -
    §Examples
    +
    source

    pub fn biconnected_components(&self) -> Vec<Vec<[usize; 2]>>

    2-連結成分分解をして、各成分に属する辺のリストのリストを返します。

    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 1);
     low_link.add_edge(0, 2);
    @@ -85,8 +85,8 @@ 
    §Examples
    result.sort(); let expected = vec![vec![[0, 1], [0, 2], [1, 2]], vec![[2, 3]]]; assert_eq!(result, expected);
    -
    source

    pub fn two_edge_components(&self) -> Vec<Vec<usize>>

    2-辺連結成分分解をして、各成分に属する頂点のリストのリストを返します。

    -
    §Examples
    +
    source

    pub fn two_edge_components(&self) -> Vec<Vec<usize>>

    2-辺連結成分分解をして、各成分に属する頂点のリストのリストを返します。

    +
    Examples
    let mut low_link = LowLink::new(4);
     low_link.add_edge(0, 1);
     low_link.add_edge(0, 2);
    @@ -99,19 +99,19 @@ 
    §Examples
    result.sort(); let expected = vec![vec![0, 1, 2], vec![3]]; assert_eq!(result, expected);
    -

    Trait Implementations§

    source§

    fn clone(&self) -> LowLink

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    fn default() -> LowLink

    Returns the “default value” for a type. Read more
    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    fn eq(&self, other: &LowLink) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    fn clone(&self) -> LowLink

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    fn default() -> LowLink

    Returns the “default value” for a type. Read more
    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    fn eq(&self, other: &LowLink) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/make_graph/all.html b/make_graph/all.html index cb1e24fe..5380c4af 100644 --- a/make_graph/all.html +++ b/make_graph/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/make_graph/fn.array_make_directed.html b/make_graph/fn.array_make_directed.html index e29213c0..45c4d19a 100644 --- a/make_graph/fn.array_make_directed.html +++ b/make_graph/fn.array_make_directed.html @@ -1,4 +1,4 @@ -array_make_directed in make_graph - Rustarray_make_directed in make_graph - Rust
    -

    Function make_graph::array_make_directed

    source ·
    pub fn array_make_directed(n: usize, edges: &[[usize; 2]]) -> Vec<Vec<usize>>
    Expand description

    [u, v] の形の辺から有向グラフを構築します。

    +
    pub fn array_make_directed(n: usize, edges: &[[usize; 2]]) -> Vec<Vec<usize>>
    Expand description

    [u, v] の形の辺から有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.array_make_directed_weighted.html b/make_graph/fn.array_make_directed_weighted.html index 4684aea4..7d2003fd 100644 --- a/make_graph/fn.array_make_directed_weighted.html +++ b/make_graph/fn.array_make_directed_weighted.html @@ -1,4 +1,4 @@ -array_make_directed_weighted in make_graph - Rustarray_make_directed_weighted in make_graph - Rust
    -

    Function make_graph::array_make_directed_weighted

    source ·
    pub fn array_make_directed_weighted<T: Copy>(
    -    n: usize,
    -    edges: &[([usize; 2], T)],
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    ([u, v], w) の形の辺から重み付き有向グラフを構築します。

    +
    pub fn array_make_directed_weighted<T: Copy>(
    +    n: usize,
    +    edges: &[([usize; 2], T)]
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    ([u, v], w) の形の辺から重み付き有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.array_make_undirected.html b/make_graph/fn.array_make_undirected.html index 8b74005c..f3d4aa98 100644 --- a/make_graph/fn.array_make_undirected.html +++ b/make_graph/fn.array_make_undirected.html @@ -1,4 +1,4 @@ -array_make_undirected in make_graph - Rustarray_make_undirected in make_graph - Rust
    -

    Function make_graph::array_make_undirected

    source ·
    pub fn array_make_undirected(n: usize, edges: &[[usize; 2]]) -> Vec<Vec<usize>>
    Expand description

    [u, v] の形の辺から無向グラフを構築します。

    +
    pub fn array_make_undirected(n: usize, edges: &[[usize; 2]]) -> Vec<Vec<usize>>
    Expand description

    [u, v] の形の辺から無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.array_make_undirected_weighted.html b/make_graph/fn.array_make_undirected_weighted.html index ef6c80f5..c0d36ef5 100644 --- a/make_graph/fn.array_make_undirected_weighted.html +++ b/make_graph/fn.array_make_undirected_weighted.html @@ -1,4 +1,4 @@ -array_make_undirected_weighted in make_graph - Rustarray_make_undirected_weighted in make_graph - Rust
    -

    Function make_graph::array_make_undirected_weighted

    source ·
    pub fn array_make_undirected_weighted<T: Copy>(
    -    n: usize,
    -    edges: &[([usize; 2], T)],
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    ([u, v], w) の形の辺から重み付き無向グラフを構築します。

    +
    pub fn array_make_undirected_weighted<T: Copy>(
    +    n: usize,
    +    edges: &[([usize; 2], T)]
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    ([u, v], w) の形の辺から重み付き無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.make_directed_by.html b/make_graph/fn.make_directed_by.html index 9a55cc90..b5e5a253 100644 --- a/make_graph/fn.make_directed_by.html +++ b/make_graph/fn.make_directed_by.html @@ -1,4 +1,4 @@ -make_directed_by in make_graph - Rustmake_directed_by in make_graph - Rust
    -

    Function make_graph::make_directed_by

    source ·
    pub fn make_directed_by<E>(
    -    n: usize,
    -    edges: &[E],
    -    f: impl Fn(&E) -> [usize; 2],
    -) -> Vec<Vec<usize>>
    Expand description

    一般の形の辺から(重みなし)有向グラフを構築します。

    +
    pub fn make_directed_by<E>(
    +    n: usize,
    +    edges: &[E],
    +    f: impl Fn(&E) -> [usize; 2]
    +) -> Vec<Vec<usize>>
    Expand description

    一般の形の辺から(重みなし)有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.make_directed_weighted_by.html b/make_graph/fn.make_directed_weighted_by.html index 25b191ac..6ced1146 100644 --- a/make_graph/fn.make_directed_weighted_by.html +++ b/make_graph/fn.make_directed_weighted_by.html @@ -1,4 +1,4 @@ -make_directed_weighted_by in make_graph - Rustmake_directed_weighted_by in make_graph - Rust
    -

    Function make_graph::make_directed_weighted_by

    source ·
    pub fn make_directed_weighted_by<E, T: Copy>(
    -    n: usize,
    -    edges: &[E],
    -    f: impl Fn(&E) -> ([usize; 2], T),
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    一般の形の辺から重み付き有向グラフを構築します。

    +
    pub fn make_directed_weighted_by<E, T: Copy>(
    +    n: usize,
    +    edges: &[E],
    +    f: impl Fn(&E) -> ([usize; 2], T)
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    一般の形の辺から重み付き有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.make_undirected_by.html b/make_graph/fn.make_undirected_by.html index 37df5016..1c182119 100644 --- a/make_graph/fn.make_undirected_by.html +++ b/make_graph/fn.make_undirected_by.html @@ -1,4 +1,4 @@ -make_undirected_by in make_graph - Rustmake_undirected_by in make_graph - Rust
    -

    Function make_graph::make_undirected_by

    source ·
    pub fn make_undirected_by<E>(
    -    n: usize,
    -    edges: &[E],
    -    f: impl Fn(&E) -> [usize; 2],
    -) -> Vec<Vec<usize>>
    Expand description

    一般の形の辺から(重みなし)無向グラフを構築します。

    +
    pub fn make_undirected_by<E>(
    +    n: usize,
    +    edges: &[E],
    +    f: impl Fn(&E) -> [usize; 2]
    +) -> Vec<Vec<usize>>
    Expand description

    一般の形の辺から(重みなし)無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.make_undirected_weighted_by.html b/make_graph/fn.make_undirected_weighted_by.html index a990e3e2..f1485468 100644 --- a/make_graph/fn.make_undirected_weighted_by.html +++ b/make_graph/fn.make_undirected_weighted_by.html @@ -1,4 +1,4 @@ -make_undirected_weighted_by in make_graph - Rustmake_undirected_weighted_by in make_graph - Rust
    -

    Function make_graph::make_undirected_weighted_by

    source ·
    pub fn make_undirected_weighted_by<E, T: Copy>(
    -    n: usize,
    -    edges: &[E],
    -    f: impl Fn(&E) -> ([usize; 2], T),
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    一般の形の辺から重みつき無向グラフを構築します。

    +
    pub fn make_undirected_weighted_by<E, T: Copy>(
    +    n: usize,
    +    edges: &[E],
    +    f: impl Fn(&E) -> ([usize; 2], T)
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    一般の形の辺から重みつき無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.tuple_make_directed.html b/make_graph/fn.tuple_make_directed.html index 27becfc9..47bad83a 100644 --- a/make_graph/fn.tuple_make_directed.html +++ b/make_graph/fn.tuple_make_directed.html @@ -1,4 +1,4 @@ -tuple_make_directed in make_graph - Rusttuple_make_directed in make_graph - Rust
    -

    Function make_graph::tuple_make_directed

    source ·
    pub fn tuple_make_directed(
    -    n: usize,
    -    edges: &[(usize, usize)],
    -) -> Vec<Vec<usize>>
    Expand description

    (u, v) の形の辺から有向グラフを構築します。

    +
    pub fn tuple_make_directed(
    +    n: usize,
    +    edges: &[(usize, usize)]
    +) -> Vec<Vec<usize>>
    Expand description

    (u, v) の形の辺から有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.tuple_make_directed_weighted.html b/make_graph/fn.tuple_make_directed_weighted.html index c1b4cd21..5287e3cd 100644 --- a/make_graph/fn.tuple_make_directed_weighted.html +++ b/make_graph/fn.tuple_make_directed_weighted.html @@ -1,4 +1,4 @@ -tuple_make_directed_weighted in make_graph - Rusttuple_make_directed_weighted in make_graph - Rust
    -

    Function make_graph::tuple_make_directed_weighted

    source ·
    pub fn tuple_make_directed_weighted<T: Copy>(
    -    n: usize,
    -    edges: &[(usize, usize, T)],
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    (u, v, w) の形の辺から重み付き有向グラフを構築します。

    +
    pub fn tuple_make_directed_weighted<T: Copy>(
    +    n: usize,
    +    edges: &[(usize, usize, T)]
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    (u, v, w) の形の辺から重み付き有向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.tuple_make_undirected.html b/make_graph/fn.tuple_make_undirected.html index 24ea5f0b..82013ef2 100644 --- a/make_graph/fn.tuple_make_undirected.html +++ b/make_graph/fn.tuple_make_undirected.html @@ -1,4 +1,4 @@ -tuple_make_undirected in make_graph - Rusttuple_make_undirected in make_graph - Rust
    -

    Function make_graph::tuple_make_undirected

    source ·
    pub fn tuple_make_undirected(
    -    n: usize,
    -    edges: &[(usize, usize)],
    -) -> Vec<Vec<usize>>
    Expand description

    (u, v) の形の辺から無向グラフを構築します。

    +
    pub fn tuple_make_undirected(
    +    n: usize,
    +    edges: &[(usize, usize)]
    +) -> Vec<Vec<usize>>
    Expand description

    (u, v) の形の辺から無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/fn.tuple_make_undirected_weighted.html b/make_graph/fn.tuple_make_undirected_weighted.html index 474f7e76..c2805817 100644 --- a/make_graph/fn.tuple_make_undirected_weighted.html +++ b/make_graph/fn.tuple_make_undirected_weighted.html @@ -1,4 +1,4 @@ -tuple_make_undirected_weighted in make_graph - Rusttuple_make_undirected_weighted in make_graph - Rust
    -

    Function make_graph::tuple_make_undirected_weighted

    source ·
    pub fn tuple_make_undirected_weighted<T: Copy>(
    -    n: usize,
    -    edges: &[(usize, usize, T)],
    -) -> Vec<Vec<(usize, T)>>
    Expand description

    (u, v, w) の形の辺から重み付き無向グラフを構築します。

    +
    pub fn tuple_make_undirected_weighted<T: Copy>(
    +    n: usize,
    +    edges: &[(usize, usize, T)]
    +) -> Vec<Vec<(usize, T)>>
    Expand description

    (u, v, w) の形の辺から重み付き無向グラフを構築します。

    \ No newline at end of file diff --git a/make_graph/index.html b/make_graph/index.html index a614cc9b..d8e99414 100644 --- a/make_graph/index.html +++ b/make_graph/index.html @@ -1,4 +1,4 @@ -make_graph - Rustmake_graph - Rust
    -

    Crate make_graph

    source ·
    Expand description

    辺全体のスライスから、グラフの隣接リストを作ります。

    -

    Functions§

    \ No newline at end of file +

    Crate make_graph

    source ·
    Expand description

    辺全体のスライスから、グラフの隣接リストを作ります。

    +

    Functions

    \ No newline at end of file diff --git a/manacher/all.html b/manacher/all.html index 96c0ebc4..03021e29 100644 --- a/manacher/all.html +++ b/manacher/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Functions

    \ No newline at end of file +

    List of all items

    Functions

    \ No newline at end of file diff --git a/manacher/fn.manacher.html b/manacher/fn.manacher.html index cf5eb33f..23ede18d 100644 --- a/manacher/fn.manacher.html +++ b/manacher/fn.manacher.html @@ -1,4 +1,4 @@ -manacher in manacher - Rustmanacher in manacher - Rust
    -

    Function manacher::manacher

    source ·
    pub fn manacher<T: Eq>(s: &[T]) -> Vec<usize>
    Expand description

    Returns the palindrome array $A$ of the given string $s$.

    -

    §Definition

    +

    Function manacher::manacher

    source ·
    pub fn manacher<T: Eq>(s: &[T]) -> Vec<usize>
    Expand description

    Returns the palindrome array $A$ of the given string $s$.

    +

    Definition

    $A$ is an array of length $2n + 1$ where $n$ is the length of $s$.

    $A_i = \max \left\{ r - l \middle | @@ -42,11 +42,11 @@

    §Definition -

    §Example

    +

    Example

    If $s = \text{“mississippi”}$, then $A = [0, 1, 0, 1, 0, 1, 4, 1, 0, 7, 0, 1, 4, 1, 0, 1, 0, 1, 4, 1, 0, 1, 0]$.

    -
    let s = "mississippi";
    +
    let s = "mississippi";
     let a = manacher(s.as_bytes());
     assert_eq!(a, vec![
         0, 1, 0, 1, 0, 1, 4, 1, 0, 7, 0, 1, 4, 1, 0, 1, 0, 1, 4, 1, 0, 1, 0
    diff --git a/manacher/index.html b/manacher/index.html
    index fac04253..8dd60c7a 100644
    --- a/manacher/index.html
    +++ b/manacher/index.html
    @@ -1,4 +1,4 @@
    -manacher - Rustmanacher - Rust
    -

    Crate manacher

    source ·
    Expand description

    §Manacher’s algorithm

    Functions§

    • Returns the palindrome array $A$ of the given string $s$.
    \ No newline at end of file +

    Crate manacher

    source ·
    Expand description

    Functions

    • Returns the palindrome array $A$ of the given string $s$.
    \ No newline at end of file diff --git a/mincost_flow/all.html b/mincost_flow/all.html index 6807d781..f0cb43a2 100644 --- a/mincost_flow/all.html +++ b/mincost_flow/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/mincost_flow/index.html b/mincost_flow/index.html index b7443e83..92be5247 100644 --- a/mincost_flow/index.html +++ b/mincost_flow/index.html @@ -1,4 +1,4 @@ -mincost_flow - Rustmincost_flow - Rust
    -

    Crate mincost_flow

    source ·
    Expand description

    Dijkstra 法の最短路反復により、最小費用流問題を解きます。

    +

    Crate mincost_flow

    source ·
    Expand description

    Dijkstra 法の最短路反復により、最小費用流問題を解きます。

    See the document of MinCostFlow

    -

    Structs§

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/mincost_flow/struct.Edge.html b/mincost_flow/struct.Edge.html index eff09375..add788d0 100644 --- a/mincost_flow/struct.Edge.html +++ b/mincost_flow/struct.Edge.html @@ -1,4 +1,4 @@ -Edge in mincost_flow - RustEdge in mincost_flow - Rust
    -

    Struct mincost_flow::Edge

    source ·
    pub struct Edge { /* private fields */ }
    Expand description

    MinCostFlow::get_edge の戻り値型

    -

    Trait Implementations§

    source§

    impl Clone for Edge

    source§

    fn clone(&self) -> Edge

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Edge

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Edge

    source§

    fn default() -> Edge

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Edge

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Edge

    source§

    fn eq(&self, other: &Edge) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Copy for Edge

    source§

    impl Eq for Edge

    source§

    impl StructuralPartialEq for Edge

    Auto Trait Implementations§

    §

    impl Freeze for Edge

    §

    impl RefUnwindSafe for Edge

    §

    impl Send for Edge

    §

    impl Sync for Edge

    §

    impl Unpin for Edge

    §

    impl UnwindSafe for Edge

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct mincost_flow::Edge

    source ·
    pub struct Edge { /* private fields */ }
    Expand description

    MinCostFlow::get_edge の戻り値型

    +

    Trait Implementations§

    source§

    impl Clone for Edge

    source§

    fn clone(&self) -> Edge

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Edge

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Edge

    source§

    fn default() -> Edge

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Edge

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Edge> for Edge

    source§

    fn eq(&self, other: &Edge) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for Edge

    source§

    impl Eq for Edge

    source§

    impl StructuralEq for Edge

    source§

    impl StructuralPartialEq for Edge

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Edge

    §

    impl Send for Edge

    §

    impl Sync for Edge

    §

    impl Unpin for Edge

    §

    impl UnwindSafe for Edge

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/mincost_flow/struct.MinCostFlow.html b/mincost_flow/struct.MinCostFlow.html index 42f7d238..da826734 100644 --- a/mincost_flow/struct.MinCostFlow.html +++ b/mincost_flow/struct.MinCostFlow.html @@ -1,4 +1,4 @@ -MinCostFlow in mincost_flow - RustMinCostFlow in mincost_flow - Rust
    -

    Struct mincost_flow::MinCostFlow

    source ·
    pub struct MinCostFlow { /* private fields */ }
    Expand description

    Dijkstra 法の最短路反復により、最小費用流問題を解きます。

    -

    §使い方

    +
    pub struct MinCostFlow { /* private fields */ }
    Expand description

    Dijkstra 法の最短路反復により、最小費用流問題を解きます。

    +

    使い方

    • new() で空グラフを構築してき、
    • add_edge() で辺を挿入していき、
    • @@ -45,41 +45,41 @@

      §使い方

      mcf.add_edge(0, 2, 1, 20); mcf.add_edge(1, 2, 1, 10); -let slope = mcf.slope(0, 2, i64::MAX); +let slope = mcf.slope(0, 2, std::i64::MAX); assert_eq!(slope, vec![(0, 0), (1, 20), (2, 50)]);
    -

    また Debug トレイトを独自実装しています。

    -

    Implementations§

    source§

    impl MinCostFlow

    source

    pub fn new(n: usize) -> Self

    空グラフを構築します。

    -
    source

    pub fn add_edge(&mut self, u: usize, v: usize, cap: i64, cost: i64) -> usize

    辺を追加します。

    -
    source

    pub fn get_edge(&self, i: usize) -> Edge

    i 番目に挿入した辺を取得します。

    -
    source

    pub fn flow( +

    また Debug トレイトを独自実装しています。

    +

    Implementations§

    source§

    impl MinCostFlow

    source

    pub fn new(n: usize) -> Self

    空グラフを構築します。

    +
    source

    pub fn add_edge(&mut self, u: usize, v: usize, cap: i64, cost: i64) -> usize

    辺を追加します。

    +
    source

    pub fn get_edge(&self, i: usize) -> Edge

    i 番目に挿入した辺を取得します。

    +
    source

    pub fn flow( &mut self, - source: usize, - sink: usize, - flow_limit: i64, -) -> (i64, i64)

    解きます

    -
    §出力形式
    + source: usize, + sink: usize, + flow_limit: i64 +) -> (i64, i64)

    解きます

    +
    出力形式

    (flow, cost)

    -
    source

    pub fn slope( +

    source

    pub fn slope( &mut self, - source: usize, - sink: usize, - flow_limit: i64, -) -> Vec<(i64, i64)>

    解きます

    -
    §出力形式
    + source: usize, + sink: usize, + flow_limit: i64 +) -> Vec<(i64, i64)>

    解きます

    +
    出力形式

    (flow, cost)

    -

    Trait Implementations§

    source§

    impl Clone for MinCostFlow

    source§

    fn clone(&self) -> MinCostFlow

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MinCostFlow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for MinCostFlow

    source§

    fn default() -> MinCostFlow

    Returns the “default value” for a type. Read more
    source§

    impl Hash for MinCostFlow

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for MinCostFlow

    source§

    fn eq(&self, other: &MinCostFlow) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for MinCostFlow

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for MinCostFlow

    source§

    fn clone(&self) -> MinCostFlow

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MinCostFlow

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for MinCostFlow

    source§

    fn default() -> MinCostFlow

    Returns the “default value” for a type. Read more
    source§

    impl Hash for MinCostFlow

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<MinCostFlow> for MinCostFlow

    source§

    fn eq(&self, other: &MinCostFlow) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for MinCostFlow

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/monotone_minima/all.html b/monotone_minima/all.html index 28dea9c0..7649483b 100644 --- a/monotone_minima/all.html +++ b/monotone_minima/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/monotone_minima/fn.concave_maxplus_convolution.html b/monotone_minima/fn.concave_maxplus_convolution.html index aaf23360..d4b38e6b 100644 --- a/monotone_minima/fn.concave_maxplus_convolution.html +++ b/monotone_minima/fn.concave_maxplus_convolution.html @@ -1,4 +1,4 @@ -concave_maxplus_convolution in monotone_minima - Rustconcave_maxplus_convolution in monotone_minima - Rust
    -

    Function monotone_minima::concave_maxplus_convolution

    source ·
    pub fn concave_maxplus_convolution<T>(a: &[T], b: &[T]) -> Vec<T>
    where - T: Copy + Ord + Add<Output = T>,
    Expand description

    concave な列に対して max-plus convolution を計算します。

    +
    pub fn concave_maxplus_convolution<T>(a: &[T], b: &[T]) -> Vec<T>where
    +    T: Copy + Ord + Add<Output = T>,
    Expand description

    concave な列に対して max-plus convolution を計算します。

    \ No newline at end of file diff --git a/monotone_minima/fn.convex_minplus_convolution.html b/monotone_minima/fn.convex_minplus_convolution.html index b4d55a13..4af8bf11 100644 --- a/monotone_minima/fn.convex_minplus_convolution.html +++ b/monotone_minima/fn.convex_minplus_convolution.html @@ -1,4 +1,4 @@ -convex_minplus_convolution in monotone_minima - Rustconvex_minplus_convolution in monotone_minima - Rust
    -

    Function monotone_minima::convex_minplus_convolution

    source ·
    pub fn convex_minplus_convolution<T>(a: &[T], b: &[T]) -> Vec<T>
    where - T: Copy + Ord + Add<Output = T>,
    Expand description

    convex な列に対して min-plus convolution を計算します。

    +
    pub fn convex_minplus_convolution<T>(a: &[T], b: &[T]) -> Vec<T>where
    +    T: Copy + Ord + Add<Output = T>,
    Expand description

    convex な列に対して min-plus convolution を計算します。

    \ No newline at end of file diff --git a/monotone_minima/fn.monotone_maxima.html b/monotone_minima/fn.monotone_maxima.html index bfe03cca..2f0c12f2 100644 --- a/monotone_minima/fn.monotone_maxima.html +++ b/monotone_minima/fn.monotone_maxima.html @@ -1,4 +1,4 @@ -monotone_maxima in monotone_minima - Rustmonotone_maxima in monotone_minima - Rust
    -

    Function monotone_minima::monotone_maxima

    source ·
    pub fn monotone_maxima<T: Ord>(
    -    h: usize,
    -    w: usize,
    -    f: impl Fn(usize, usize) -> T,
    -) -> Vec<usize>
    Expand description

    行列 f(i, j) を受け取って、monotone maxima をします。

    +
    pub fn monotone_maxima<T: Ord>(
    +    h: usize,
    +    w: usize,
    +    f: impl Fn(usize, usize) -> T
    +) -> Vec<usize>
    Expand description

    行列 f(i, j) を受け取って、monotone maxima をします。

    \ No newline at end of file diff --git a/monotone_minima/fn.monotone_maxima_by.html b/monotone_minima/fn.monotone_maxima_by.html index 3f76fedf..de9282d1 100644 --- a/monotone_minima/fn.monotone_maxima_by.html +++ b/monotone_minima/fn.monotone_maxima_by.html @@ -1,4 +1,4 @@ -monotone_maxima_by in monotone_minima - Rustmonotone_maxima_by in monotone_minima - Rust
    -

    Function monotone_minima::monotone_maxima_by

    source ·
    pub fn monotone_maxima_by(
    -    h: usize,
    -    w: usize,
    -    cmp: impl FnMut(usize, usize, usize) -> Ordering + Copy,
    -) -> Vec<usize>
    Expand description

    行ごとのセル比較 cmp(i, j, k) を受け取って、monotone maxima をします。

    +
    pub fn monotone_maxima_by(
    +    h: usize,
    +    w: usize,
    +    cmp: impl FnMut(usize, usize, usize) -> Ordering + Copy
    +) -> Vec<usize>
    Expand description

    行ごとのセル比較 cmp(i, j, k) を受け取って、monotone maxima をします。

    \ No newline at end of file diff --git a/monotone_minima/fn.monotone_minima.html b/monotone_minima/fn.monotone_minima.html index c3f020b2..eeb612f7 100644 --- a/monotone_minima/fn.monotone_minima.html +++ b/monotone_minima/fn.monotone_minima.html @@ -1,4 +1,4 @@ -monotone_minima in monotone_minima - Rustmonotone_minima in monotone_minima - Rust
    -

    Function monotone_minima::monotone_minima

    source ·
    pub fn monotone_minima<T: Ord>(
    -    h: usize,
    -    w: usize,
    -    f: impl Fn(usize, usize) -> T,
    -) -> Vec<usize>
    Expand description

    行列 f(i, j) を受け取って、monotone minima をします。

    +
    pub fn monotone_minima<T: Ord>(
    +    h: usize,
    +    w: usize,
    +    f: impl Fn(usize, usize) -> T
    +) -> Vec<usize>
    Expand description

    行列 f(i, j) を受け取って、monotone minima をします。

    \ No newline at end of file diff --git a/monotone_minima/fn.monotone_minima_by.html b/monotone_minima/fn.monotone_minima_by.html index 24a62da7..32ab827a 100644 --- a/monotone_minima/fn.monotone_minima_by.html +++ b/monotone_minima/fn.monotone_minima_by.html @@ -1,4 +1,4 @@ -monotone_minima_by in monotone_minima - Rustmonotone_minima_by in monotone_minima - Rust
    -

    Function monotone_minima::monotone_minima_by

    source ·
    pub fn monotone_minima_by(
    -    h: usize,
    -    w: usize,
    -    cmp: impl FnMut(usize, usize, usize) -> Ordering + Copy,
    -) -> Vec<usize>
    Expand description

    行ごとのセル比較 cmp(i, j, k) を受け取って、monotone minima をします。

    +
    pub fn monotone_minima_by(
    +    h: usize,
    +    w: usize,
    +    cmp: impl FnMut(usize, usize, usize) -> Ordering + Copy
    +) -> Vec<usize>
    Expand description

    行ごとのセル比較 cmp(i, j, k) を受け取って、monotone minima をします。

    \ No newline at end of file diff --git a/monotone_minima/index.html b/monotone_minima/index.html index 23fbde70..2aa4534e 100644 --- a/monotone_minima/index.html +++ b/monotone_minima/index.html @@ -1,4 +1,4 @@ -monotone_minima - Rustmonotone_minima - Rust
    -

    Crate monotone_minima

    source ·
    Expand description

    Monotone minima のアルゴリズムと、それによる tropical convolutions を提供します。

    -

    §問題例

    +

    Crate monotone_minima

    source ·
    Expand description

    Monotone minima のアルゴリズムと、それによる tropical convolutions を提供します。

    +

    問題例

    -

    Functions§

    \ No newline at end of file +

    Functions

    \ No newline at end of file diff --git a/naive_poly/all.html b/naive_poly/all.html index 3acd8a51..79478051 100644 --- a/naive_poly/all.html +++ b/naive_poly/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Functions

    \ No newline at end of file +

    List of all items

    Functions

    \ No newline at end of file diff --git a/naive_poly/fn.add.html b/naive_poly/fn.add.html index 2861de9d..124978cb 100644 --- a/naive_poly/fn.add.html +++ b/naive_poly/fn.add.html @@ -1,4 +1,4 @@ -add in naive_poly - Rustadd in naive_poly - Rust
    -

    Function naive_poly::add

    source ·
    pub fn add<T>(a: &[T], b: &[T]) -> Vec<T>
    where - T: Copy + PartialEq + Sum<T> + AddAssign,
    Expand description

    Add two polynomials in $O(\max(n, m))$ time.

    +

    Function naive_poly::add

    source ·
    pub fn add<T>(a: &[T], b: &[T]) -> Vec<T>where
    +    T: Copy + PartialEq + Sum<T> + AddAssign,
    Expand description

    Add two polynomials in $O(\max(n, m))$ time.

    Trailing zeros are removed.

    \ No newline at end of file diff --git a/naive_poly/fn.div.html b/naive_poly/fn.div.html index de152706..a5c9d217 100644 --- a/naive_poly/fn.div.html +++ b/naive_poly/fn.div.html @@ -1,4 +1,4 @@ -div in naive_poly - Rustdiv in naive_poly - Rust
    -

    Function naive_poly::div

    source ·
    pub fn div<T>(a: &mut Vec<T>, b: &[T]) -> Vec<T>
    where - T: Copy + PartialEq + Sum<T> + SubAssign + Mul<Output = T> + Div<Output = T>,
    Expand description

    Divide two polynomials in $O((n - m) m)$ time.

    +

    Function naive_poly::div

    source ·
    pub fn div<T>(a: &mut Vec<T>, b: &[T]) -> Vec<T>where
    +    T: Copy + PartialEq + Sum<T> + SubAssign + Mul<Output = T> + Div<Output = T>,
    Expand description

    Divide two polynomials in $O((n - m) m)$ time.

    • Returns the quotient and modifies $a$ to store the remainder.
    • Trailing zeros in $a$ are removed from the remainder.
    • diff --git a/naive_poly/fn.eval.html b/naive_poly/fn.eval.html index 3d94b0ce..a9c4bf67 100644 --- a/naive_poly/fn.eval.html +++ b/naive_poly/fn.eval.html @@ -1,4 +1,4 @@ -eval in naive_poly - Rusteval in naive_poly - Rust
      -

      Function naive_poly::eval

      source ·
      pub fn eval<T>(p: &[T], x: T) -> T
      where - T: Copy + Sum<T> + Mul<Output = T> + AddAssign + MulAssign,
      Expand description

      Evaluate a polynomial at a point in $O(n)$ time.

      +

      Function naive_poly::eval

      source ·
      pub fn eval<T>(p: &[T], x: T) -> Twhere
      +    T: Copy + Sum<T> + Mul<Output = T> + AddAssign + MulAssign,
      Expand description

      Evaluate a polynomial at a point in $O(n)$ time.

      \ No newline at end of file diff --git a/naive_poly/fn.mul.html b/naive_poly/fn.mul.html index cef5ba03..24c844d9 100644 --- a/naive_poly/fn.mul.html +++ b/naive_poly/fn.mul.html @@ -1,4 +1,4 @@ -mul in naive_poly - Rustmul in naive_poly - Rust
      -

      Function naive_poly::mul

      source ·
      pub fn mul<T>(a: &[T], b: &[T]) -> Vec<T>
      where - T: Copy + Sum<T> + Mul<Output = T> + AddAssign,
      Expand description

      Multiply two polynomials in $O(nm)$ time.

      +

      Function naive_poly::mul

      source ·
      pub fn mul<T>(a: &[T], b: &[T]) -> Vec<T>where
      +    T: Copy + Sum<T> + Mul<Output = T> + AddAssign,
      Expand description

      Multiply two polynomials in $O(nm)$ time.

      If $a = 0$ or $b = 0$, returns $0$ (empty vector).

      \ No newline at end of file diff --git a/naive_poly/fn.pow.html b/naive_poly/fn.pow.html index b9d13d9f..3ff995d8 100644 --- a/naive_poly/fn.pow.html +++ b/naive_poly/fn.pow.html @@ -1,4 +1,4 @@ -pow in naive_poly - Rustpow in naive_poly - Rust
      -

      Function naive_poly::pow

      source ·
      pub fn pow<T>(a: Vec<T>, e: u64) -> Vec<T>
      where - T: Copy + PartialEq + Sum<T> + Product<T> + AddAssign + Mul<Output = T>,
      Expand description

      Compute the $e$-th power of a polynomial in $O((en)^2 \log e)$ time.

      +

      Function naive_poly::pow

      source ·
      pub fn pow<T>(a: Vec<T>, e: u64) -> Vec<T>where
      +    T: Copy + PartialEq + Sum<T> + Product<T> + AddAssign + Mul<Output = T>,
      Expand description

      Compute the $e$-th power of a polynomial in $O((en)^2 \log e)$ time.

      \ No newline at end of file diff --git a/naive_poly/fn.sub.html b/naive_poly/fn.sub.html index 950e4834..5df7063c 100644 --- a/naive_poly/fn.sub.html +++ b/naive_poly/fn.sub.html @@ -1,4 +1,4 @@ -sub in naive_poly - Rustsub in naive_poly - Rust
      -

      Function naive_poly::sub

      source ·
      pub fn sub<T>(a: &[T], b: &[T]) -> Vec<T>
      where - T: Copy + PartialEq + Sum<T> + AddAssign + SubAssign + Mul<Output = T>,
      Expand description

      Subtract two polynomials in $O(\max(n, m))$ time.

      +

      Function naive_poly::sub

      source ·
      pub fn sub<T>(a: &[T], b: &[T]) -> Vec<T>where
      +    T: Copy + PartialEq + Sum<T> + AddAssign + SubAssign + Mul<Output = T>,
      Expand description

      Subtract two polynomials in $O(\max(n, m))$ time.

      Trailing zeros are removed.

      \ No newline at end of file diff --git a/naive_poly/index.html b/naive_poly/index.html index 7edaf8b7..79498240 100644 --- a/naive_poly/index.html +++ b/naive_poly/index.html @@ -1,4 +1,4 @@ -naive_poly - Rustnaive_poly - Rust
      -

      Crate naive_poly

      source ·
      Expand description

      §Naive implementation of polynomial operations

      Functions§

      • Add two polynomials in $O(\max(n, m))$ time.
      • Divide two polynomials in $O((n - m) m)$ time.
      • Evaluate a polynomial at a point in $O(n)$ time.
      • Multiply two polynomials in $O(nm)$ time.
      • Compute the $e$-th power of a polynomial in $O((en)^2 \log e)$ time.
      • Subtract two polynomials in $O(\max(n, m))$ time.
      \ No newline at end of file +

      Crate naive_poly

      source ·
      Expand description

      Functions

      • Add two polynomials in $O(\max(n, m))$ time.
      • Divide two polynomials in $O((n - m) m)$ time.
      • Evaluate a polynomial at a point in $O(n)$ time.
      • Multiply two polynomials in $O(nm)$ time.
      • Compute the $e$-th power of a polynomial in $O((en)^2 \log e)$ time.
      • Subtract two polynomials in $O(\max(n, m))$ time.
      \ No newline at end of file diff --git a/newton/all.html b/newton/all.html index 79d04809..4932a9b3 100644 --- a/newton/all.html +++ b/newton/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
      -

      List of all items

      Functions

      \ No newline at end of file +

      List of all items

      Functions

      \ No newline at end of file diff --git a/newton/fn.sqrt.html b/newton/fn.sqrt.html index 174f8976..3068521c 100644 --- a/newton/fn.sqrt.html +++ b/newton/fn.sqrt.html @@ -1,4 +1,4 @@ -sqrt in newton - Rustsqrt in newton - Rust
      -

      Function newton::sqrt

      source ·
      pub fn sqrt(y: u64) -> u64
      \ No newline at end of file +

      Function newton::sqrt

      source ·
      pub fn sqrt(y: u64) -> u64
      \ No newline at end of file diff --git a/newton/fn.triangular_root.html b/newton/fn.triangular_root.html index e1b7bfb6..06a625dc 100644 --- a/newton/fn.triangular_root.html +++ b/newton/fn.triangular_root.html @@ -1,4 +1,4 @@ -triangular_root in newton - Rusttriangular_root in newton - Rust
      -

      Function newton::triangular_root

      source ·
      pub fn triangular_root(y: u64) -> u64
      \ No newline at end of file +

      Function newton::triangular_root

      source ·
      pub fn triangular_root(y: u64) -> u64
      \ No newline at end of file diff --git a/newton/index.html b/newton/index.html index c9e5e630..a99d71a5 100644 --- a/newton/index.html +++ b/newton/index.html @@ -1,4 +1,4 @@ -newton - Rustnewton - Rust
      -

      Crate newton

      source ·

      Functions§

      \ No newline at end of file +
      \ No newline at end of file diff --git a/next_permutation/all.html b/next_permutation/all.html index db2d1cbc..765bacf2 100644 --- a/next_permutation/all.html +++ b/next_permutation/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
      -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/next_permutation/fn.for_each_pairing.html b/next_permutation/fn.for_each_pairing.html index c7598422..0c1bc125 100644 --- a/next_permutation/fn.for_each_pairing.html +++ b/next_permutation/fn.for_each_pairing.html @@ -1,4 +1,4 @@ -for_each_pairing in next_permutation - Rustfor_each_pairing in next_permutation - Rust
      -

      Function next_permutation::for_each_pairing

      source ·
      pub fn for_each_pairing<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.

      +
      pub fn for_each_pairing<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.for_each_partition.html b/next_permutation/fn.for_each_partition.html index 5715c36b..c9f801ed 100644 --- a/next_permutation/fn.for_each_partition.html +++ b/next_permutation/fn.for_each_partition.html @@ -1,4 +1,4 @@ -for_each_partition in next_permutation - Rustfor_each_partition in next_permutation - Rust
      -

      Function next_permutation::for_each_partition

      source ·
      pub fn for_each_partition<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each partition of n in lexicographic order.

      +
      pub fn for_each_partition<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each partition of n in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.for_each_partition_rev.html b/next_permutation/fn.for_each_partition_rev.html index 20620b84..acd9ed87 100644 --- a/next_permutation/fn.for_each_partition_rev.html +++ b/next_permutation/fn.for_each_partition_rev.html @@ -1,4 +1,4 @@ -for_each_partition_rev in next_permutation - Rustfor_each_partition_rev in next_permutation - Rust
      -

      Function next_permutation::for_each_partition_rev

      source ·
      pub fn for_each_partition_rev<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each partition of n in the reverse of the lexicographic order.

      +
      pub fn for_each_partition_rev<F: FnMut(&[usize])>(n: usize, f: F)
      Expand description

      Calls f for each partition of n in the reverse of the lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.for_each_permutation.html b/next_permutation/fn.for_each_permutation.html index 74be5350..f9ba9d4d 100644 --- a/next_permutation/fn.for_each_permutation.html +++ b/next_permutation/fn.for_each_permutation.html @@ -1,4 +1,4 @@ -for_each_permutation in next_permutation - Rustfor_each_permutation in next_permutation - Rust
      -

      Function next_permutation::for_each_permutation

      source ·
      pub fn for_each_permutation<T: Ord, F: FnMut(&[T])>(a: &mut [T], f: F)
      Expand description

      Calls f for each permutation of a in lexicographic order.

      +
      pub fn for_each_permutation<T: Ord, F: FnMut(&[T])>(a: &mut [T], f: F)
      Expand description

      Calls f for each permutation of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.for_each_shuffle.html b/next_permutation/fn.for_each_shuffle.html index 04cb034c..da1fbf5e 100644 --- a/next_permutation/fn.for_each_shuffle.html +++ b/next_permutation/fn.for_each_shuffle.html @@ -1,4 +1,4 @@ -for_each_shuffle in next_permutation - Rustfor_each_shuffle in next_permutation - Rust
      -

      Function next_permutation::for_each_shuffle

      source ·
      pub fn for_each_shuffle<T: Ord, F: FnMut(&[T])>(a: &mut [T], k: usize, f: F)
      Expand description

      Calls f for each $(K, N - K)$-shuffle of a in lexicographic order.

      +
      pub fn for_each_shuffle<T: Ord, F: FnMut(&[T])>(a: &mut [T], k: usize, f: F)
      Expand description

      Calls f for each $(K, N - K)$-shuffle of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.next_pairing.html b/next_permutation/fn.next_pairing.html index 3810fc2e..8c283f7e 100644 --- a/next_permutation/fn.next_pairing.html +++ b/next_permutation/fn.next_pairing.html @@ -1,4 +1,4 @@ -next_pairing in next_permutation - Rustnext_pairing in next_permutation - Rust
      -

      Function next_permutation::next_pairing

      source ·
      pub fn next_pairing(a: &mut [usize]) -> bool
      Expand description

      Returns the next pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.

      +
      pub fn next_pairing(a: &mut [usize]) -> bool
      Expand description

      Returns the next pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.next_partition.html b/next_permutation/fn.next_partition.html index ff9a7029..7ee708d5 100644 --- a/next_permutation/fn.next_partition.html +++ b/next_permutation/fn.next_partition.html @@ -1,4 +1,4 @@ -next_partition in next_permutation - Rustnext_partition in next_permutation - Rust
      -

      Function next_permutation::next_partition

      source ·
      pub fn next_partition(a: &mut Vec<usize>) -> bool
      Expand description

      Returns the next partition of a in lexicographic order.

      +
      pub fn next_partition(a: &mut Vec<usize>) -> bool
      Expand description

      Returns the next partition of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.next_permutation.html b/next_permutation/fn.next_permutation.html index 75658167..e5dfceb5 100644 --- a/next_permutation/fn.next_permutation.html +++ b/next_permutation/fn.next_permutation.html @@ -1,4 +1,4 @@ -next_permutation in next_permutation - Rustnext_permutation in next_permutation - Rust
      -

      Function next_permutation::next_permutation

      source ·
      pub fn next_permutation<T: Ord>(a: &mut [T]) -> bool
      Expand description

      Returns the next permutation of a in lexicographic order.

      +
      pub fn next_permutation<T: Ord>(a: &mut [T]) -> bool
      Expand description

      Returns the next permutation of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.next_shuffle.html b/next_permutation/fn.next_shuffle.html index 46abbe55..3e636f00 100644 --- a/next_permutation/fn.next_shuffle.html +++ b/next_permutation/fn.next_shuffle.html @@ -1,4 +1,4 @@ -next_shuffle in next_permutation - Rustnext_shuffle in next_permutation - Rust
      -

      Function next_permutation::next_shuffle

      source ·
      pub fn next_shuffle<T: Ord>(a: &mut [T], k: usize) -> bool
      Expand description

      Returns the next $(K, N - K)$-shuffle of a in lexicographic order.

      +
      pub fn next_shuffle<T: Ord>(a: &mut [T], k: usize) -> bool
      Expand description

      Returns the next $(K, N - K)$-shuffle of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.pairings.html b/next_permutation/fn.pairings.html index f7dd788a..6a27cc2d 100644 --- a/next_permutation/fn.pairings.html +++ b/next_permutation/fn.pairings.html @@ -1,4 +1,4 @@ -pairings in next_permutation - Rustpairings in next_permutation - Rust
      -

      Function next_permutation::pairings

      source ·
      pub fn pairings(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all pairings (ascending $(2,2,\dots,2)$-shuffles) of a in lexicographic order.

      +

      Function next_permutation::pairings

      source ·
      pub fn pairings(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all pairings (ascending $(2,2,\dots,2)$-shuffles) of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.partitions.html b/next_permutation/fn.partitions.html index defb6d2b..64cc9ff5 100644 --- a/next_permutation/fn.partitions.html +++ b/next_permutation/fn.partitions.html @@ -1,4 +1,4 @@ -partitions in next_permutation - Rustpartitions in next_permutation - Rust
      -

      Function next_permutation::partitions

      source ·
      pub fn partitions(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all partitions of n in lexicographic order.

      +
      pub fn partitions(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all partitions of n in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.partitions_rev.html b/next_permutation/fn.partitions_rev.html index eec57a2c..43124fdd 100644 --- a/next_permutation/fn.partitions_rev.html +++ b/next_permutation/fn.partitions_rev.html @@ -1,4 +1,4 @@ -partitions_rev in next_permutation - Rustpartitions_rev in next_permutation - Rust
      -

      Function next_permutation::partitions_rev

      source ·
      pub fn partitions_rev(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all partitions of n in the reverse of the lexicographic order.

      +
      pub fn partitions_rev(n: usize) -> Vec<Vec<usize>>
      Expand description

      Returns all partitions of n in the reverse of the lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.permutations.html b/next_permutation/fn.permutations.html index 4e2fdd16..1cfdcd88 100644 --- a/next_permutation/fn.permutations.html +++ b/next_permutation/fn.permutations.html @@ -1,4 +1,4 @@ -permutations in next_permutation - Rustpermutations in next_permutation - Rust
      -

      Function next_permutation::permutations

      source ·
      pub fn permutations<T: Ord + Clone>(a: Vec<T>) -> Vec<Vec<T>>
      Expand description

      Returns all permutations of a in lexicographic order.

      +
      pub fn permutations<T: Ord + Clone>(a: Vec<T>) -> Vec<Vec<T>>
      Expand description

      Returns all permutations of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.prev_partition.html b/next_permutation/fn.prev_partition.html index 0b948c8d..1c1f4cb2 100644 --- a/next_permutation/fn.prev_partition.html +++ b/next_permutation/fn.prev_partition.html @@ -1,4 +1,4 @@ -prev_partition in next_permutation - Rustprev_partition in next_permutation - Rust
      -

      Function next_permutation::prev_partition

      source ·
      pub fn prev_partition(a: &mut Vec<usize>) -> bool
      Expand description

      Returns the previous partition of a in lexicographic order.

      +
      pub fn prev_partition(a: &mut Vec<usize>) -> bool
      Expand description

      Returns the previous partition of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/fn.shuffles.html b/next_permutation/fn.shuffles.html index 78946314..dd169563 100644 --- a/next_permutation/fn.shuffles.html +++ b/next_permutation/fn.shuffles.html @@ -1,4 +1,4 @@ -shuffles in next_permutation - Rustshuffles in next_permutation - Rust
      -

      Function next_permutation::shuffles

      source ·
      pub fn shuffles<T: Ord + Clone>(a: Vec<T>, k: usize) -> Vec<Vec<T>>
      Expand description

      Returns all $(K, N - K)$-shuffles of a in lexicographic order.

      +

      Function next_permutation::shuffles

      source ·
      pub fn shuffles<T: Ord + Clone>(a: Vec<T>, k: usize) -> Vec<Vec<T>>
      Expand description

      Returns all $(K, N - K)$-shuffles of a in lexicographic order.

      \ No newline at end of file diff --git a/next_permutation/index.html b/next_permutation/index.html index 7c7f93b2..41f7d27a 100644 --- a/next_permutation/index.html +++ b/next_permutation/index.html @@ -1,4 +1,4 @@ -next_permutation - Rustnext_permutation - Rust
      -

      Crate next_permutation

      source ·
      Expand description

      A library to enumerate permutations, shuffles, and partitions.

      -

      Functions§

      • Calls f for each pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.
      • Calls f for each partition of n in lexicographic order.
      • Calls f for each partition of n in the reverse of the lexicographic order.
      • Calls f for each permutation of a in lexicographic order.
      • Calls f for each $(K, N - K)$-shuffle of a in lexicographic order.
      • Returns the next pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.
      • Returns the next partition of a in lexicographic order.
      • Returns the next permutation of a in lexicographic order.
      • Returns the next $(K, N - K)$-shuffle of a in lexicographic order.
      • Returns all pairings (ascending $(2,2,\dots,2)$-shuffles) of a in lexicographic order.
      • Returns all partitions of n in lexicographic order.
      • Returns all partitions of n in the reverse of the lexicographic order.
      • Returns all permutations of a in lexicographic order.
      • Returns the previous partition of a in lexicographic order.
      • Returns all $(K, N - K)$-shuffles of a in lexicographic order.
      \ No newline at end of file +

      Crate next_permutation

      source ·
      Expand description

      A library to enumerate permutations, shuffles, and partitions.

      +

      Functions

      • Calls f for each pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.
      • Calls f for each partition of n in lexicographic order.
      • Calls f for each partition of n in the reverse of the lexicographic order.
      • Calls f for each permutation of a in lexicographic order.
      • Calls f for each $(K, N - K)$-shuffle of a in lexicographic order.
      • Returns the next pairing (ascending $(2,2,\dots,2)$-shuffle) of a in lexicographic order.
      • Returns the next partition of a in lexicographic order.
      • Returns the next permutation of a in lexicographic order.
      • Returns the next $(K, N - K)$-shuffle of a in lexicographic order.
      • Returns all pairings (ascending $(2,2,\dots,2)$-shuffles) of a in lexicographic order.
      • Returns all partitions of n in lexicographic order.
      • Returns all partitions of n in the reverse of the lexicographic order.
      • Returns all permutations of a in lexicographic order.
      • Returns the previous partition of a in lexicographic order.
      • Returns all $(K, N - K)$-shuffles of a in lexicographic order.
      \ No newline at end of file diff --git a/numeric_search/all.html b/numeric_search/all.html index 40514d5a..dfba3b4c 100644 --- a/numeric_search/all.html +++ b/numeric_search/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
      -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/numeric_search/fn.binary_search_signed.html b/numeric_search/fn.binary_search_signed.html index f151a06a..1d417b14 100644 --- a/numeric_search/fn.binary_search_signed.html +++ b/numeric_search/fn.binary_search_signed.html @@ -1,4 +1,4 @@ -binary_search_signed in numeric_search - Rustbinary_search_signed in numeric_search - Rust
      -

      Function numeric_search::binary_search_signed

      source ·
      pub fn binary_search_signed<T: Signed>(
      +
      pub fn binary_search_signed<T: Signed>(
           lower: T,
           upper: T,
      -    f: impl FnMut(T) -> bool,
      +    f: impl FnMut(T) -> bool
       ) -> T
      Expand description

      Run a binary search search on signed numbers.

      Given a function $f: \lbrack L, R \rbrack \to \mathtt { bool }$ satisfying $\neg f ( L ) \land f ( R )$, it returns $x \in \lbrack L, R \rbrack$ satisfying $\neg f ( x - 1 ) \land f ( x )$

      -

      §Examples

      +

      Examples

      assert_eq!(binary_search_unsigned(10_u32, 20, |x| 200 <= x * x), 15);
      \ No newline at end of file diff --git a/numeric_search/fn.binary_search_unsigned.html b/numeric_search/fn.binary_search_unsigned.html index 678faeca..ea2680d8 100644 --- a/numeric_search/fn.binary_search_unsigned.html +++ b/numeric_search/fn.binary_search_unsigned.html @@ -1,4 +1,4 @@ -binary_search_unsigned in numeric_search - Rustbinary_search_unsigned in numeric_search - Rust
      -

      Function numeric_search::binary_search_unsigned

      source ·
      pub fn binary_search_unsigned<T: Unsigned>(
      +
      pub fn binary_search_unsigned<T: Unsigned>(
           lower: T,
           upper: T,
      -    f: impl FnMut(T) -> bool,
      +    f: impl FnMut(T) -> bool
       ) -> T
      Expand description

      Run a binary search search on unsigned numbers.

      Given a function $f: \lbrack L, R \rbrack \to \mathtt { bool }$ satisfying $\neg f ( L ) \land f ( R )$, it returns $x \in \lbrack L, R \rbrack$ satisfying $\neg f ( x - 1 ) \land f ( x )$

      -

      §Examples

      +

      Examples

      assert_eq!(binary_search_unsigned(10_u32, 20, |x| 200 <= x * x), 15);
      \ No newline at end of file diff --git a/numeric_search/fn.exp_search_float.html b/numeric_search/fn.exp_search_float.html index dadf0cb5..38b7ad19 100644 --- a/numeric_search/fn.exp_search_float.html +++ b/numeric_search/fn.exp_search_float.html @@ -1,4 +1,4 @@ -exp_search_float in numeric_search - Rustexp_search_float in numeric_search - Rust
      -

      Function numeric_search::exp_search_float

      source ·
      pub fn exp_search_float<T: Float>(f: impl FnMut(T) -> bool) -> T
      Expand description

      Run an exponential search on floating point numbers.

      +
      pub fn exp_search_float<T: Float>(f: impl FnMut(T) -> bool) -> T
      Expand description

      Run an exponential search on floating point numbers.

      Given a binary function $f: \mathbb R \rightarrow \mathtt { bool }$, it trys to find a normal number $x \in \mathbb R$ satisfying $\neg f( \mathtt { prev } ( x ) ) \land f(x)$ @@ -43,7 +43,7 @@

    • there exist such $x$’s in -T::MAX.sqrt()..=T::MAX.sqrt().

    If it falis to find it, it returns T::{INFINITY, NEG_INFINITY}.

    -

    §Examples

    +

    Examples

    They are some usual usages where the function $f$ is monotone.

    assert_eq!(exp_search_float(|x| 2.5 <= x), 2.5);
    diff --git a/numeric_search/fn.exp_search_signed.html b/numeric_search/fn.exp_search_signed.html
    index 425eebb4..27400c5d 100644
    --- a/numeric_search/fn.exp_search_signed.html
    +++ b/numeric_search/fn.exp_search_signed.html
    @@ -1,4 +1,4 @@
    -exp_search_signed in numeric_search - Rustexp_search_signed in numeric_search - Rust
    -

    Function numeric_search::exp_search_signed

    source ·
    pub fn exp_search_signed<T: Signed>(f: impl FnMut(T) -> bool) -> Option<T>
    Expand description

    Run an exponential search on unsigned numbers.

    +
    pub fn exp_search_signed<T: Signed>(f: impl FnMut(T) -> bool) -> Option<T>
    Expand description

    Run an exponential search on unsigned numbers.

    Given a function $f: \mathbb Z \to \mathtt { bool }$, it try to find $x \in \mathbb Z$ satisfying $\neg f ( x - 1 ) \land f ( x )$ (where we assume that $\neg f ( \mathtt { MIN } - 1 )$).

    This trial always succeeds provided that

    @@ -41,8 +41,8 @@
  • $f$ is not always-true
  • If it falis to find it, it returns None.

    -

    §Examples

    +

    Examples

    assert_eq!(exp_search_signed(|x| 6 <= x), Some(6));
     assert_eq!(exp_search_signed(|_: i32| false), None);
    -assert_eq!(exp_search_signed(|_: i32| true), Some(i32::MIN));
    +assert_eq!(exp_search_signed(|_: i32| true), Some(std::i32::MIN));
    \ No newline at end of file diff --git a/numeric_search/fn.exp_search_unsigned.html b/numeric_search/fn.exp_search_unsigned.html index 3975b81f..e3a0c90e 100644 --- a/numeric_search/fn.exp_search_unsigned.html +++ b/numeric_search/fn.exp_search_unsigned.html @@ -1,4 +1,4 @@ -exp_search_unsigned in numeric_search - Rustexp_search_unsigned in numeric_search - Rust
    -

    Function numeric_search::exp_search_unsigned

    source ·
    pub fn exp_search_unsigned<T: Unsigned>(f: impl FnMut(T) -> bool) -> Option<T>
    Expand description

    Run an exponential search on unsigned numbers.

    +
    pub fn exp_search_unsigned<T: Unsigned>(f: impl FnMut(T) -> bool) -> Option<T>
    Expand description

    Run an exponential search on unsigned numbers.

    Given a function $f: \mathbb N \to \mathtt { bool }$, it try to find $x \in \mathbb N$ satisfying $\neg f ( x - 1 ) \land f ( x )$ (where we assume that $\neg f ( -1 )$).

    This trial always succeeds provided that

    @@ -41,7 +41,7 @@
  • $f$ is not always-true
  • If it falis to find it, it returns None.

    -

    §Examples

    +

    Examples

    They are some usual usages where the function $f$ is monotone.

    assert_eq!(exp_search_unsigned(|x: u32| 6 <= x), Some(6));
    diff --git a/numeric_search/index.html b/numeric_search/index.html
    index dae8f5b1..09b392e5 100644
    --- a/numeric_search/index.html
    +++ b/numeric_search/index.html
    @@ -1,4 +1,4 @@
    -numeric_search - Rustnumeric_search - Rust
    -

    Crate numeric_search

    source ·
    Expand description

    Run classic binary or exponential search on integer or floating point numbers.

    +

    Crate numeric_search

    source ·
    Expand description

    Run classic binary or exponential search on integer or floating point numbers.

    Both classic binary seach and exponential search has their streangth and weakness.

    • The classic binary search is (about $\times 2$)) faster in worst case.
    • @@ -40,4 +40,4 @@
    • We do not have to know the limit values to use the exponential search.
    • The running time of the exponential search is output-sensitively fast.
    -

    Traits§

    Functions§

    \ No newline at end of file +

    Traits

    Functions

    \ No newline at end of file diff --git a/numeric_search/trait.Float.html b/numeric_search/trait.Float.html index 78274419..80d2694f 100644 --- a/numeric_search/trait.Float.html +++ b/numeric_search/trait.Float.html @@ -1,4 +1,4 @@ -Float in numeric_search - RustFloat in numeric_search - Rust
    -

    Trait numeric_search::Float

    source ·
    pub trait Float:
    -    Sized
    -    + Copy
    -    + PartialOrd
    -    + Debug
    -    + Add<Output = Self>
    -    + Sub<Output = Self>
    -    + Mul<Output = Self>
    -    + Div<Output = Self>
    -    + Neg<Output = Self> {
    +

    Trait numeric_search::Float

    source ·
    pub trait Float: Sized + Copy + PartialOrd + Debug + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Neg<Output = Self> {
         const ZERO: Self;
         const ONE: Self;
         const INFINITY: Self;
    @@ -50,9 +41,9 @@
         // Required method
         fn sqrt(self) -> Self;
     }
    Expand description

    Floating pont number.

    -

    Required Associated Constants§

    source

    const ZERO: Self

    $0$

    -
    source

    const ONE: Self

    $1$

    -
    source

    const INFINITY: Self

    $\infty$

    -
    source

    const NEG_INFINITY: Self

    $-\infty$

    -

    Required Methods§

    source

    fn sqrt(self) -> Self

    $x \mapsto \sqrt x$

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Float for f32

    source§

    const INFINITY: Self = +Inf_f32

    source§

    const NEG_INFINITY: Self = -Inf_f32

    source§

    const ONE: Self = 1f32

    source§

    const ZERO: Self = 0f32

    source§

    fn sqrt(self) -> Self

    source§

    impl Float for f64

    source§

    const INFINITY: Self = +Inf_f64

    source§

    const NEG_INFINITY: Self = -Inf_f64

    source§

    const ONE: Self = 1f64

    source§

    const ZERO: Self = 0f64

    source§

    fn sqrt(self) -> Self

    Implementors§

    \ No newline at end of file +

    Required Associated Constants§

    source

    const ZERO: Self

    $0$

    +
    source

    const ONE: Self

    $1$

    +
    source

    const INFINITY: Self

    $\infty$

    +
    source

    const NEG_INFINITY: Self

    $-\infty$

    +

    Required Methods§

    source

    fn sqrt(self) -> Self

    $x \mapsto \sqrt x$

    +

    Implementations on Foreign Types§

    source§

    impl Float for f64

    source§

    const INFINITY: Self = +Inff64

    source§

    const NEG_INFINITY: Self = -Inff64

    source§

    const ONE: Self = 1f64

    source§

    const ZERO: Self = 0f64

    source§

    fn sqrt(self) -> Self

    source§

    impl Float for f32

    source§

    const INFINITY: Self = +Inff32

    source§

    const NEG_INFINITY: Self = -Inff32

    source§

    const ONE: Self = 1f32

    source§

    const ZERO: Self = 0f32

    source§

    fn sqrt(self) -> Self

    Implementors§

    \ No newline at end of file diff --git a/numeric_search/trait.Signed.html b/numeric_search/trait.Signed.html index 734f5846..f7c5249f 100644 --- a/numeric_search/trait.Signed.html +++ b/numeric_search/trait.Signed.html @@ -1,4 +1,4 @@ -Signed in numeric_search - RustSigned in numeric_search - Rust
    -

    Trait numeric_search::Signed

    source ·
    pub trait Signed:
    -    Sized
    -    + Copy
    -    + PartialOrd
    -    + Debug
    -    + Add<Output = Self>
    -    + Sub<Output = Self>
    -    + Mul<Output = Self>
    -    + Div<Output = Self>
    -    + Neg<Output = Self>
    -    + Shr<usize, Output = Self>
    -    + Shl<usize, Output = Self>
    -    + BitAnd<Output = Self>
    -    + BitOr<Output = Self> {
    +
    pub trait Signed: Sized + Copy + PartialOrd + Debug + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Neg<Output = Self> + Shr<usize, Output = Self> + Shl<usize, Output = Self> + BitAnd<Output = Self> + BitOr<Output = Self> {
         const ZERO: Self;
         const ONE: Self;
         const MIN: Self;
         const MAX: Self;
     }
    Expand description

    Signed integers.

    -

    Required Associated Constants§

    source

    const ZERO: Self

    source

    const ONE: Self

    source

    const MIN: Self

    source

    const MAX: Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Signed for i8

    source§

    const ZERO: Self = 0i8

    source§

    const ONE: Self = 1i8

    source§

    const MIN: Self = -128i8

    source§

    const MAX: Self = 127i8

    source§

    impl Signed for i16

    source§

    const ZERO: Self = 0i16

    source§

    const ONE: Self = 1i16

    source§

    const MIN: Self = -32_768i16

    source§

    const MAX: Self = 32_767i16

    source§

    impl Signed for i32

    source§

    const ZERO: Self = 0i32

    source§

    const ONE: Self = 1i32

    source§

    const MIN: Self = -2_147_483_648i32

    source§

    const MAX: Self = 2_147_483_647i32

    source§

    impl Signed for i64

    source§

    const ZERO: Self = 0i64

    source§

    const ONE: Self = 1i64

    source§

    const MIN: Self = -9_223_372_036_854_775_808i64

    source§

    const MAX: Self = 9_223_372_036_854_775_807i64

    source§

    impl Signed for i128

    source§

    const ZERO: Self = 0i128

    source§

    const ONE: Self = 1i128

    source§

    const MIN: Self = -170_141_183_460_469_231_731_687_303_715_884_105_728i128

    source§

    const MAX: Self = 170_141_183_460_469_231_731_687_303_715_884_105_727i128

    Implementors§

    \ No newline at end of file +

    Required Associated Constants§

    source

    const ZERO: Self

    source

    const ONE: Self

    source

    const MIN: Self

    source

    const MAX: Self

    Implementations on Foreign Types§

    source§

    impl Signed for i128

    source§

    const ZERO: Self = 0i128

    source§

    const ONE: Self = 1i128

    source§

    const MIN: Self = -170_141_183_460_469_231_731_687_303_715_884_105_728i128

    source§

    const MAX: Self = 170_141_183_460_469_231_731_687_303_715_884_105_727i128

    source§

    impl Signed for i32

    source§

    const ZERO: Self = 0i32

    source§

    const ONE: Self = 1i32

    source§

    const MIN: Self = -2_147_483_648i32

    source§

    const MAX: Self = 2_147_483_647i32

    source§

    impl Signed for i64

    source§

    const ZERO: Self = 0i64

    source§

    const ONE: Self = 1i64

    source§

    const MIN: Self = -9_223_372_036_854_775_808i64

    source§

    const MAX: Self = 9_223_372_036_854_775_807i64

    source§

    impl Signed for i16

    source§

    const ZERO: Self = 0i16

    source§

    const ONE: Self = 1i16

    source§

    const MIN: Self = -32_768i16

    source§

    const MAX: Self = 32_767i16

    source§

    impl Signed for i8

    source§

    const ZERO: Self = 0i8

    source§

    const ONE: Self = 1i8

    source§

    const MIN: Self = -128i8

    source§

    const MAX: Self = 127i8

    Implementors§

    \ No newline at end of file diff --git a/numeric_search/trait.Unsigned.html b/numeric_search/trait.Unsigned.html index 18b7f5ff..52354d36 100644 --- a/numeric_search/trait.Unsigned.html +++ b/numeric_search/trait.Unsigned.html @@ -1,4 +1,4 @@ -Unsigned in numeric_search - RustUnsigned in numeric_search - Rust
    -

    Trait numeric_search::Unsigned

    source ·
    pub trait Unsigned:
    -    Sized
    -    + Copy
    -    + PartialOrd
    -    + Debug
    -    + Add<Output = Self>
    -    + Sub<Output = Self>
    -    + Mul<Output = Self>
    -    + Div<Output = Self>
    -    + Shr<usize, Output = Self>
    -    + Shl<usize, Output = Self>
    -    + BitAnd<Output = Self>
    -    + BitOr<Output = Self> {
    +
    pub trait Unsigned: Sized + Copy + PartialOrd + Debug + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> + Div<Output = Self> + Shr<usize, Output = Self> + Shl<usize, Output = Self> + BitAnd<Output = Self> + BitOr<Output = Self> {
         const ZERO: Self;
         const ONE: Self;
     }
    Expand description

    Unsigned integers.

    -

    Required Associated Constants§

    source

    const ZERO: Self

    $0$

    -
    source

    const ONE: Self

    $1$

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Unsigned for u8

    source§

    const ZERO: Self = 0u8

    source§

    const ONE: Self = 1u8

    source§

    impl Unsigned for u16

    source§

    const ZERO: Self = 0u16

    source§

    const ONE: Self = 1u16

    source§

    impl Unsigned for u32

    source§

    const ZERO: Self = 0u32

    source§

    const ONE: Self = 1u32

    source§

    impl Unsigned for u64

    source§

    const ZERO: Self = 0u64

    source§

    const ONE: Self = 1u64

    source§

    impl Unsigned for u128

    source§

    const ZERO: Self = 0u128

    source§

    const ONE: Self = 1u128

    source§

    impl Unsigned for usize

    source§

    const ZERO: Self = 0usize

    source§

    const ONE: Self = 1usize

    Implementors§

    \ No newline at end of file +

    Required Associated Constants§

    source

    const ZERO: Self

    $0$

    +
    source

    const ONE: Self

    $1$

    +

    Implementations on Foreign Types§

    source§

    impl Unsigned for u16

    source§

    const ZERO: Self = 0u16

    source§

    const ONE: Self = 1u16

    source§

    impl Unsigned for usize

    source§

    const ZERO: Self = 0usize

    source§

    const ONE: Self = 1usize

    source§

    impl Unsigned for u8

    source§

    const ZERO: Self = 0u8

    source§

    const ONE: Self = 1u8

    source§

    impl Unsigned for u128

    source§

    const ZERO: Self = 0u128

    source§

    const ONE: Self = 1u128

    source§

    impl Unsigned for u32

    source§

    const ZERO: Self = 0u32

    source§

    const ONE: Self = 1u32

    source§

    impl Unsigned for u64

    source§

    const ZERO: Self = 0u64

    source§

    const ONE: Self = 1u64

    Implementors§

    \ No newline at end of file diff --git a/open/all.html b/open/all.html deleted file mode 100644 index a424ba8d..00000000 --- a/open/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -

    List of all items

    Functions

    \ No newline at end of file diff --git a/open/fn.open.html b/open/fn.open.html deleted file mode 100644 index c2eb3448..00000000 --- a/open/fn.open.html +++ /dev/null @@ -1,35 +0,0 @@ -open in open - Rust - - - - - -

    Function open::open

    source ·
    pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize>
    \ No newline at end of file diff --git a/open/index.html b/open/index.html deleted file mode 100644 index 67e4ca42..00000000 --- a/open/index.html +++ /dev/null @@ -1,35 +0,0 @@ -open - Rust - - - - - -

    Crate open

    source ·

    Functions§

    \ No newline at end of file diff --git a/open/sidebar-items.js b/open/sidebar-items.js deleted file mode 100644 index 2e4792e1..00000000 --- a/open/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["open"]}; \ No newline at end of file diff --git a/partially_persistent_union_find/all.html b/partially_persistent_union_find/all.html index 9b1adb41..40451362 100644 --- a/partially_persistent_union_find/all.html +++ b/partially_persistent_union_find/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/partially_persistent_union_find/index.html b/partially_persistent_union_find/index.html index f528c819..28ecd1c4 100644 --- a/partially_persistent_union_find/index.html +++ b/partially_persistent_union_find/index.html @@ -1,4 +1,4 @@ -partially_persistent_union_find - Rustpartially_persistent_union_find - Rust
    -

    Crate partially_persistent_union_find

    source ·
    Expand description

    部分永続化された、素集合データ構造です。

    +
    Expand description

    部分永続化された、素集合データ構造です。

    構造体 PartiallyPersistentUnionFind のドキュメントをご覧ください。

    -

    Structs§

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/partially_persistent_union_find/struct.PartiallyPersistentUnionFind.html b/partially_persistent_union_find/struct.PartiallyPersistentUnionFind.html index 34e6858b..b227331d 100644 --- a/partially_persistent_union_find/struct.PartiallyPersistentUnionFind.html +++ b/partially_persistent_union_find/struct.PartiallyPersistentUnionFind.html @@ -1,4 +1,4 @@ -PartiallyPersistentUnionFind in partially_persistent_union_find - RustPartiallyPersistentUnionFind in partially_persistent_union_find - Rust
    -
    pub struct PartiallyPersistentUnionFind { /* private fields */ }
    Expand description

    部分永続化された、素集合データ構造です。

    -

    §時刻について

    -

    MAX といえば usize:MAX のことであるとします。

    +
    pub struct PartiallyPersistentUnionFind { /* private fields */ }
    Expand description

    部分永続化された、素集合データ構造です。

    +

    時刻について

    +

    MAX といえば std::usize:MAX のことであるとします。

    • 入力できるのは 1..=MAX
    • -
    • 過去クエリで時刻 t を指定すると、t と同じかそれより小さな時刻のイベントが適用された状態を参照します。
    • -
    • t = MAX でクエリすると最終状態を参照します。(仮に時刻 MAX にイベントが存在したとしても。)
    • +
    • 過去クエリで時刻 t を指定すると、t +と同じかそれより小さな時刻のイベントが適用された状態を参照します。
    • +
    • t = MAX でクエリすると最終状態を参照します。(仮に時刻 MAX +にイベントが存在したとしても。)
    -

    §Examples

    +

    Examples

    use partially_persistent_union_find::PartiallyPersistentUnionFind;
     
     // 頂点数を指定してクエリ
    @@ -75,80 +77,82 @@ 

    §Examples

    assert_eq!(uf.time(0, 1), Some(10)); assert_eq!(uf.time(2, 3), Some(20)); assert_eq!(uf.time(0, 3), None);
    -

    §時刻 MAX にイベントがある場合も同様です。

    +

    時刻 MAX にイベントがある場合も同様です。

    use partially_persistent_union_find::PartiallyPersistentUnionFind;
    +use std::usize::MAX;
     
     let mut uf = PartiallyPersistentUnionFind::new(5);
     
     // MAX にイベントをセット
    -uf.union(0, 1, usize::MAX);
    +uf.union(0, 1, MAX);
     
     // 適用前を参照
    -assert!(!uf.same(0, 1, usize::MAX - 1));
    +assert!(!uf.same(0, 1, MAX - 1));
     
     // 適用後を参照
    -assert!(uf.same(0, 1, usize::MAX));
    -

    §速度面

    -

    size を実現するために n +assert!(uf.same(0, 1, MAX));

    +

    速度面

    +
      +
    • size を実現するために n 回程度の動的メモリ確保の必要なフィールド size_history を管理しているため、 -定数倍が重くなっています。

      -

    Implementations§

    source§

    impl PartiallyPersistentUnionFind

    source

    pub fn new(n: usize) -> Self

    新しくデータ構造を構築します。

    -
    §制約
    -

    n < isize::MAX

    -
    §Examples
    +定数倍が重くなっています。 + +

    Implementations§

    source§

    impl PartiallyPersistentUnionFind

    source

    pub fn new(n: usize) -> Self

    新しくデータ構造を構築します。

    +
    制約
    +

    n < std::isize::MAX

    +
    Examples
    let uf = PartiallyPersistentUnionFind::new(5);
    -
    source

    pub fn find(&self, index: usize, time: usize) -> usize

    時刻 time の代表の頂点番号を返します。

    +
    source

    pub fn find(&self, index: usize, time: usize) -> usize

    時刻 time の代表の頂点番号を返します。

    See PartiallyPersistentUnionFind for examples.

    -
    §出力の要件
    +
    出力の要件
    • i と j が同じ成分に属することと、find(i) == find(j) であることが同値である。
    • find(i) は i の属する成分の要素のうちいずれかである。
    -
    §Examples
    +
    Examples
    let mut uf = PartiallyPersistentUnionFind::new(5);
     uf.union(0, 1, 10);
     assert_ne!(uf.find(0, 9), uf.find(1, 9));
    -
    source

    pub fn same(&self, i: usize, j: usize, time: usize) -> bool

    時刻 time に i と j が同じ成分に属するならば true、属さないならば false を返します。

    -
    §Examples
    +
    source

    pub fn same(&self, i: usize, j: usize, time: usize) -> bool

    時刻 time に i と j が同じ成分に属するならば true、属さないならば false を返します。

    +
    Examples
    let mut uf = PartiallyPersistentUnionFind::new(5);
     uf.union(0, 1, 10);
     assert_eq!(uf.size(0, 9), 1);
    -
    source

    pub fn time(&self, i: usize, j: usize) -> Option<usize>

    2 頂点が結合された時刻を返します。

    +
    source

    pub fn time(&self, i: usize, j: usize) -> Option<usize>

    2 頂点が結合された時刻を返します。

    i == j の場合は 0 を返します。

    -
    §Examples
    +
    Examples
    let mut uf = PartiallyPersistentUnionFind::new(5);
     uf.union(0, 1, 10);
     assert_eq!(uf.time(0, 1), Some(10));
    -
    source

    pub fn size(&self, index: usize, time: usize) -> usize

    時刻 time の i の属する成分の要素数を返します。

    -
    §Examples
    +
    source

    pub fn size(&self, index: usize, time: usize) -> usize

    時刻 time の i の属する成分の要素数を返します。

    +
    Examples
    let mut uf = PartiallyPersistentUnionFind::new(5);
     uf.union(0, 1, 10);
     assert_eq!(uf.size(0, 9), 1);
    -
    source

    pub fn union(&mut self, i: usize, j: usize, time: usize) -> bool

    今までのどのクエリ時刻よりも真に大きな時刻 time を指定して、頂点 i, j を結合します。

    +
    source

    pub fn union(&mut self, i: usize, j: usize, time: usize) -> bool

    今までのどのクエリ時刻よりも真に大きな時刻 time を指定して、頂点 i, j を結合します。

    ただし、初回クエリ時刻は 1 以上である必要があります。

    -
    §Returns
    +
    Returns
    • i と j が異なる成分に属していたとき true を返します。
    • そうでないとき、false を返します。
    -
    §Panics
    +
    Panics
    • time == 0 のとき。
    • time と同じかそれより大きなクエリを受け取ったことがあるとき。
    -
    §Examples
    +
    Examples
    let mut uf = PartiallyPersistentUnionFind::new(5);
     uf.union(0, 1, 10);
    -

    Trait Implementations§

    source§

    impl Clone for PartiallyPersistentUnionFind

    source§

    fn clone(&self) -> PartiallyPersistentUnionFind

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PartiallyPersistentUnionFind

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for PartiallyPersistentUnionFind

    source§

    fn clone(&self) -> PartiallyPersistentUnionFind

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PartiallyPersistentUnionFind

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/radix_heap/all.html b/radix_heap/all.html index 1b351914..ea932c29 100644 --- a/radix_heap/all.html +++ b/radix_heap/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/radix_heap/index.html b/radix_heap/index.html index 22ff5c06..c4d02572 100644 --- a/radix_heap/index.html +++ b/radix_heap/index.html @@ -1,4 +1,4 @@ -radix_heap - Rustradix_heap - Rust
    -

    Crate radix_heap

    source ·
    Expand description

    CAUTION: Failing in tests!

    -

    Structs§

    \ No newline at end of file +

    Crate radix_heap

    source ·
    Expand description

    CAUTION: Failing in tests!

    +

    Structs

    \ No newline at end of file diff --git a/radix_heap/struct.RadixHeap.html b/radix_heap/struct.RadixHeap.html index 2ce074fa..ac763cb7 100644 --- a/radix_heap/struct.RadixHeap.html +++ b/radix_heap/struct.RadixHeap.html @@ -1,4 +1,4 @@ -RadixHeap in radix_heap - RustRadixHeap in radix_heap - Rust
    -

    Struct radix_heap::RadixHeap

    source ·
    pub struct RadixHeap<T> { /* private fields */ }
    👎Deprecated

    Implementations§

    source§

    impl<T> RadixHeap<T>

    source

    pub fn new() -> Self

    source

    pub fn push(&mut self, key: u32, value: T)

    source

    pub fn pop(&mut self) -> Option<(u32, T)>

    Trait Implementations§

    source§

    impl<T: Clone> Clone for RadixHeap<T>

    source§

    fn clone(&self) -> RadixHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for RadixHeap<T>

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Debug> Default for RadixHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: PartialEq> PartialEq for RadixHeap<T>

    source§

    fn eq(&self, other: &RadixHeap<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for RadixHeap<T>

    source§

    impl<T> StructuralPartialEq for RadixHeap<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for RadixHeap<T>

    §

    impl<T> RefUnwindSafe for RadixHeap<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for RadixHeap<T>
    where - T: Send,

    §

    impl<T> Sync for RadixHeap<T>
    where - T: Sync,

    §

    impl<T> Unpin for RadixHeap<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for RadixHeap<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct radix_heap::RadixHeap

    source ·
    pub struct RadixHeap<T> { /* private fields */ }
    👎Deprecated

    Implementations§

    source§

    impl<T> RadixHeap<T>

    source

    pub fn new() -> Self

    source

    pub fn push(&mut self, key: u32, value: T)

    source

    pub fn pop(&mut self) -> Option<(u32, T)>

    Trait Implementations§

    source§

    impl<T: Clone> Clone for RadixHeap<T>

    source§

    fn clone(&self) -> RadixHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for RadixHeap<T>

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Debug> Default for RadixHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: PartialEq> PartialEq<RadixHeap<T>> for RadixHeap<T>

    source§

    fn eq(&self, other: &RadixHeap<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for RadixHeap<T>

    source§

    impl<T> StructuralEq for RadixHeap<T>

    source§

    impl<T> StructuralPartialEq for RadixHeap<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for RadixHeap<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for RadixHeap<T>where + T: Send,

    §

    impl<T> Sync for RadixHeap<T>where + T: Sync,

    §

    impl<T> Unpin for RadixHeap<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for RadixHeap<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/randtools/all.html b/randtools/all.html index 461f1fbc..d733f8f5 100644 --- a/randtools/all.html +++ b/randtools/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/randtools/index.html b/randtools/index.html index 01244943..299024f9 100644 --- a/randtools/index.html +++ b/randtools/index.html @@ -1,4 +1,4 @@ -randtools - Rustrandtools - Rust
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/randtools/struct.DistinctTwo.html b/randtools/struct.DistinctTwo.html index 0e542ee6..cf31c803 100644 --- a/randtools/struct.DistinctTwo.html +++ b/randtools/struct.DistinctTwo.html @@ -1,4 +1,4 @@ -DistinctTwo in randtools - RustDistinctTwo in randtools - Rust
    -

    Struct randtools::DistinctTwo

    source ·
    pub struct DistinctTwo(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for DistinctTwo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<(usize, usize)> for DistinctTwo

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> (usize, usize)

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +

    Struct randtools::DistinctTwo

    source ·
    pub struct DistinctTwo(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for DistinctTwo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<(usize, usize)> for DistinctTwo

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> (usize, usize)

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.LogUniform.html b/randtools/struct.LogUniform.html index ba85696a..48c1a2ae 100644 --- a/randtools/struct.LogUniform.html +++ b/randtools/struct.LogUniform.html @@ -1,4 +1,4 @@ -LogUniform in randtools - RustLogUniform in randtools - Rust
    -

    Struct randtools::LogUniform

    source ·
    pub struct LogUniform(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for LogUniform

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<usize> for LogUniform

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> usize

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +

    Struct randtools::LogUniform

    source ·
    pub struct LogUniform(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for LogUniform

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<usize> for LogUniform

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> usize

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.NonEmptySubRange.html b/randtools/struct.NonEmptySubRange.html index ced1f684..b8cdd983 100644 --- a/randtools/struct.NonEmptySubRange.html +++ b/randtools/struct.NonEmptySubRange.html @@ -1,4 +1,4 @@ -NonEmptySubRange in randtools - RustNonEmptySubRange in randtools - Rust
    -

    Struct randtools::NonEmptySubRange

    source ·
    pub struct NonEmptySubRange(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for NonEmptySubRange

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Range<usize>> for NonEmptySubRange

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Range<usize>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +
    pub struct NonEmptySubRange(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for NonEmptySubRange

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Range<usize>> for NonEmptySubRange

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Range<usize>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.SimpleDigraph.html b/randtools/struct.SimpleDigraph.html index 4b88ff3f..27b2acf4 100644 --- a/randtools/struct.SimpleDigraph.html +++ b/randtools/struct.SimpleDigraph.html @@ -1,4 +1,4 @@ -SimpleDigraph in randtools - RustSimpleDigraph in randtools - Rust
    -

    Struct randtools::SimpleDigraph

    source ·
    pub struct SimpleDigraph(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleDigraph

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize>>> for SimpleDigraph

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +
    pub struct SimpleDigraph(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleDigraph

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize, Global>, Global>> for SimpleDigraph

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.SimpleDigraphEdges.html b/randtools/struct.SimpleDigraphEdges.html index 7ac70395..db52f607 100644 --- a/randtools/struct.SimpleDigraphEdges.html +++ b/randtools/struct.SimpleDigraphEdges.html @@ -1,4 +1,4 @@ -SimpleDigraphEdges in randtools - RustSimpleDigraphEdges in randtools - Rust
    -

    Struct randtools::SimpleDigraphEdges

    source ·
    pub struct SimpleDigraphEdges(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleDigraphEdges

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<(usize, usize)>> for SimpleDigraphEdges

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<(usize, usize)>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +
    pub struct SimpleDigraphEdges(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleDigraphEdges

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<(usize, usize), Global>> for SimpleDigraphEdges

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<(usize, usize)>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.SimpleGraph.html b/randtools/struct.SimpleGraph.html index 258c47ae..eabcf6cd 100644 --- a/randtools/struct.SimpleGraph.html +++ b/randtools/struct.SimpleGraph.html @@ -1,4 +1,4 @@ -SimpleGraph in randtools - RustSimpleGraph in randtools - Rust
    -

    Struct randtools::SimpleGraph

    source ·
    pub struct SimpleGraph(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleGraph

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize>>> for SimpleGraph

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +

    Struct randtools::SimpleGraph

    source ·
    pub struct SimpleGraph(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleGraph

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize, Global>, Global>> for SimpleGraph

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.SimpleGraphEdges.html b/randtools/struct.SimpleGraphEdges.html index c462d0f2..ba997145 100644 --- a/randtools/struct.SimpleGraphEdges.html +++ b/randtools/struct.SimpleGraphEdges.html @@ -1,4 +1,4 @@ -SimpleGraphEdges in randtools - RustSimpleGraphEdges in randtools - Rust
    -

    Struct randtools::SimpleGraphEdges

    source ·
    pub struct SimpleGraphEdges(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleGraphEdges

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<(usize, usize)>> for SimpleGraphEdges

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<(usize, usize)>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +
    pub struct SimpleGraphEdges(pub usize, pub usize);

    Tuple Fields§

    §0: usize§1: usize

    Trait Implementations§

    source§

    impl Debug for SimpleGraphEdges

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<(usize, usize), Global>> for SimpleGraphEdges

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<(usize, usize)>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.SubRange.html b/randtools/struct.SubRange.html index f948667f..f5feec50 100644 --- a/randtools/struct.SubRange.html +++ b/randtools/struct.SubRange.html @@ -1,4 +1,4 @@ -SubRange in randtools - RustSubRange in randtools - Rust
    -

    Struct randtools::SubRange

    source ·
    pub struct SubRange(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for SubRange

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Range<usize>> for SubRange

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Range<usize>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +

    Struct randtools::SubRange

    source ·
    pub struct SubRange(pub Range<usize>);

    Tuple Fields§

    §0: Range<usize>

    Trait Implementations§

    source§

    impl Debug for SubRange

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Range<usize>> for SubRange

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Range<usize>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/randtools/struct.Tree.html b/randtools/struct.Tree.html index 1f64ed31..180257a0 100644 --- a/randtools/struct.Tree.html +++ b/randtools/struct.Tree.html @@ -1,4 +1,4 @@ -Tree in randtools - RustTree in randtools - Rust
    -

    Struct randtools::Tree

    source ·
    pub struct Tree(pub usize);

    Tuple Fields§

    §0: usize

    Trait Implementations§

    source§

    impl Debug for Tree

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize>>> for Tree

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
    where +

    Struct randtools::Tree

    source ·
    pub struct Tree(pub usize);

    Tuple Fields§

    §0: usize

    Trait Implementations§

    source§

    impl Debug for Tree

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Distribution<Vec<Vec<usize, Global>, Global>> for Tree

    source§

    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec<Vec<usize>>

    Generate a random value of T, using rng as the source of randomness.
    source§

    fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, - Self: Sized,

    Create an iterator that generates random values of T, using rng as -the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
    where - F: Fn(T) -> S, - Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self -through the closure F Read more

    Auto Trait Implementations§

    §

    impl Freeze for Tree

    §

    impl RefUnwindSafe for Tree

    §

    impl Send for Tree

    §

    impl Sync for Tree

    §

    impl Unpin for Tree

    §

    impl UnwindSafe for Tree

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + Self: Sized,
    Create an iterator that generates random values of T, using rng as +the source of randomness. Read more
    source§

    fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where + F: Fn(T) -> S, + Self: Sized,

    Create a distribution of values of ‘S’ by mapping the output of Self +through the closure F Read more

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Tree

    §

    impl Send for Tree

    §

    impl Sync for Tree

    §

    impl Unpin for Tree

    §

    impl UnwindSafe for Tree

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/rational/all.html b/rational/all.html index b6f8be76..d79b8010 100644 --- a/rational/all.html +++ b/rational/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/rational/index.html b/rational/index.html index d1f547f5..07284397 100644 --- a/rational/index.html +++ b/rational/index.html @@ -1,4 +1,4 @@ -rational - Rustrational - Rust
    -

    Crate rational

    source ·

    Structs§

    Traits§

    \ No newline at end of file +
    \ No newline at end of file diff --git a/rational/struct.Rational.html b/rational/struct.Rational.html index 9328254c..3b67c315 100644 --- a/rational/struct.Rational.html +++ b/rational/struct.Rational.html @@ -1,4 +1,4 @@ -Rational in rational - RustRational in rational - Rust
    -

    Struct rational::Rational

    source ·
    pub struct Rational<T: Signed>(/* private fields */);

    Implementations§

    source§

    impl<T: Signed> Rational<T>

    source

    pub fn new(num: T, den: T) -> Self

    source

    pub fn decompose(self) -> [T; 2]

    source

    pub fn into_f64(self) -> f64
    where - f64: From<T>,

    Trait Implementations§

    source§

    impl<'a, T: Signed> Add<&'a Rational<T>> for Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: &Self) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<'a, T: Signed> Add<Rational<T>> for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: Rational<T>) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<'a, T: Signed> Add for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: &Rational<T>) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<M: Signed> Add for Rational<M>

    source§

    type Output = Rational<M>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: Self) -> Self

    Performs the + operation. Read more
    source§

    impl<T: Signed> AddAssign for Rational<T>

    source§

    fn add_assign(&mut self, rhs: Self)

    Performs the += operation. Read more
    source§

    impl<T: Clone + Signed> Clone for Rational<T>

    source§

    fn clone(&self) -> Rational<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Signed> Debug for Rational<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default + Signed> Default for Rational<T>

    source§

    fn default() -> Rational<T>

    Returns the “default value” for a type. Read more
    source§

    impl<'a, T: Signed> Div<&'a Rational<T>> for Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: &Self) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<'a, T: Signed> Div<Rational<T>> for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: Rational<T>) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<'a, T: Signed> Div for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: &Rational<T>) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<M: Signed> Div for Rational<M>

    source§

    type Output = Rational<M>

    The resulting type after applying the / operator.
    source§

    fn div(self, rhs: Self) -> Self

    Performs the / operation. Read more
    source§

    impl<T: Signed> DivAssign for Rational<T>

    source§

    fn div_assign(&mut self, rhs: Self)

    Performs the /= operation. Read more
    source§

    impl<T: Signed> FromStr for Rational<T>

    source§

    type Err = <T as FromStr>::Err

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    source§

    impl<'a, T: Signed> Mul<&'a Rational<T>> for Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: &Self) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<'a, T: Signed> Mul<Rational<T>> for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: Rational<T>) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<'a, T: Signed> Mul for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: &Rational<T>) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<M: Signed> Mul for Rational<M>

    source§

    type Output = Rational<M>

    The resulting type after applying the * operator.
    source§

    fn mul(self, rhs: Self) -> Self

    Performs the * operation. Read more
    source§

    impl<T: Signed> MulAssign for Rational<T>

    source§

    fn mul_assign(&mut self, rhs: Self)

    Performs the *= operation. Read more
    source§

    impl<T: Signed> Neg for Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn neg(self) -> Self::Output

    Performs the unary - operation. Read more
    source§

    impl<T: Signed> Ord for Rational<T>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl<T: Signed> PartialEq for Rational<T>

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Signed> PartialOrd for Rational<T>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the -<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > -operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
    source§

    impl<'a, T: 'a + Signed> Product<&'a Rational<T>> for Rational<T>

    source§

    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self

    Takes an iterator and generates Self from the elements by multiplying -the items.
    source§

    impl<T: Signed> Product for Rational<T>

    source§

    fn product<I: Iterator<Item = Self>>(iter: I) -> Self

    Takes an iterator and generates Self from the elements by multiplying -the items.
    source§

    impl<'a, T: Signed> Sub<&'a Rational<T>> for Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: &Self) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<'a, T: Signed> Sub<Rational<T>> for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: Rational<T>) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<'a, T: Signed> Sub for &'a Rational<T>

    source§

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: &Rational<T>) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<M: Signed> Sub for Rational<M>

    source§

    type Output = Rational<M>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: Self) -> Self

    Performs the - operation. Read more
    source§

    impl<T: Signed> SubAssign for Rational<T>

    source§

    fn sub_assign(&mut self, rhs: Self)

    Performs the -= operation. Read more
    source§

    impl<'a, T: 'a + Signed> Sum<&'a Rational<T>> for Rational<T>

    source§

    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self

    Takes an iterator and generates Self from the elements by “summing up” -the items.
    source§

    impl<T: Signed> Sum for Rational<T>

    source§

    fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

    Takes an iterator and generates Self from the elements by “summing up” -the items.
    source§

    impl<T: Copy + Signed> Copy for Rational<T>

    source§

    impl<T: Signed> Eq for Rational<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for Rational<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for Rational<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for Rational<T>
    where - T: Send,

    §

    impl<T> Sync for Rational<T>
    where - T: Sync,

    §

    impl<T> Unpin for Rational<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Rational<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct rational::Rational

    source ·
    pub struct Rational<T: Signed>(_, _);

    Implementations§

    source§

    impl<T: Signed> Rational<T>

    source

    pub fn new(num: T, den: T) -> Self

    source

    pub fn decompose(self) -> [T; 2]

    source

    pub fn into_f64(self) -> f64where + f64: From<T>,

    Trait Implementations§

    source§

    impl<'a, T: Signed> Add<&'a Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: &Rational<T>) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<'a, T: Signed> Add<&'a Rational<T>> for Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: &Self) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<M: Signed> Add<Rational<M>> for Rational<M>

    §

    type Output = Rational<M>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: Self) -> Self

    Performs the + operation. Read more
    source§

    impl<'a, T: Signed> Add<Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the + operator.
    source§

    fn add(self, other: Rational<T>) -> Self::Output

    Performs the + operation. Read more
    source§

    impl<T: Signed> AddAssign<Rational<T>> for Rational<T>

    source§

    fn add_assign(&mut self, rhs: Self)

    Performs the += operation. Read more
    source§

    impl<T: Clone + Signed> Clone for Rational<T>

    source§

    fn clone(&self) -> Rational<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Signed> Debug for Rational<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default + Signed> Default for Rational<T>

    source§

    fn default() -> Rational<T>

    Returns the “default value” for a type. Read more
    source§

    impl<'a, T: Signed> Div<&'a Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: &Rational<T>) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<'a, T: Signed> Div<&'a Rational<T>> for Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: &Self) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<M: Signed> Div<Rational<M>> for Rational<M>

    §

    type Output = Rational<M>

    The resulting type after applying the / operator.
    source§

    fn div(self, rhs: Self) -> Self

    Performs the / operation. Read more
    source§

    impl<'a, T: Signed> Div<Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the / operator.
    source§

    fn div(self, other: Rational<T>) -> Self::Output

    Performs the / operation. Read more
    source§

    impl<T: Signed> DivAssign<Rational<T>> for Rational<T>

    source§

    fn div_assign(&mut self, rhs: Self)

    Performs the /= operation. Read more
    source§

    impl<T: Signed> FromStr for Rational<T>

    §

    type Err = <T as FromStr>::Err

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    source§

    impl<'a, T: Signed> Mul<&'a Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: &Rational<T>) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<'a, T: Signed> Mul<&'a Rational<T>> for Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: &Self) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<M: Signed> Mul<Rational<M>> for Rational<M>

    §

    type Output = Rational<M>

    The resulting type after applying the * operator.
    source§

    fn mul(self, rhs: Self) -> Self

    Performs the * operation. Read more
    source§

    impl<'a, T: Signed> Mul<Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the * operator.
    source§

    fn mul(self, other: Rational<T>) -> Self::Output

    Performs the * operation. Read more
    source§

    impl<T: Signed> MulAssign<Rational<T>> for Rational<T>

    source§

    fn mul_assign(&mut self, rhs: Self)

    Performs the *= operation. Read more
    source§

    impl<T: Signed> Neg for Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn neg(self) -> Self::Output

    Performs the unary - operation. Read more
    source§

    impl<T: Signed> Ord for Rational<T>

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<T: Signed> PartialEq<Rational<T>> for Rational<T>

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Signed> PartialOrd<Rational<T>> for Rational<T>

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl<'a, T: 'a + Signed> Product<&'a Rational<T>> for Rational<T>

    source§

    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self

    Method which takes an iterator and generates Self from the elements by +multiplying the items.
    source§

    impl<T: Signed> Product<Rational<T>> for Rational<T>

    source§

    fn product<I: Iterator<Item = Self>>(iter: I) -> Self

    Method which takes an iterator and generates Self from the elements by +multiplying the items.
    source§

    impl<'a, T: Signed> Sub<&'a Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: &Rational<T>) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<'a, T: Signed> Sub<&'a Rational<T>> for Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: &Self) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<M: Signed> Sub<Rational<M>> for Rational<M>

    §

    type Output = Rational<M>

    The resulting type after applying the - operator.
    source§

    fn sub(self, rhs: Self) -> Self

    Performs the - operation. Read more
    source§

    impl<'a, T: Signed> Sub<Rational<T>> for &'a Rational<T>

    §

    type Output = Rational<T>

    The resulting type after applying the - operator.
    source§

    fn sub(self, other: Rational<T>) -> Self::Output

    Performs the - operation. Read more
    source§

    impl<T: Signed> SubAssign<Rational<T>> for Rational<T>

    source§

    fn sub_assign(&mut self, rhs: Self)

    Performs the -= operation. Read more
    source§

    impl<'a, T: 'a + Signed> Sum<&'a Rational<T>> for Rational<T>

    source§

    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self

    Method which takes an iterator and generates Self from the elements by +“summing up” the items.
    source§

    impl<T: Signed> Sum<Rational<T>> for Rational<T>

    source§

    fn sum<I: Iterator<Item = Self>>(iter: I) -> Self

    Method which takes an iterator and generates Self from the elements by +“summing up” the items.
    source§

    impl<T: Copy + Signed> Copy for Rational<T>

    source§

    impl<T: Signed> Eq for Rational<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Rational<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for Rational<T>where + T: Send,

    §

    impl<T> Sync for Rational<T>where + T: Sync,

    §

    impl<T> Unpin for Rational<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Rational<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rational/trait.Signed.html b/rational/trait.Signed.html index 214fea32..00ab42a7 100644 --- a/rational/trait.Signed.html +++ b/rational/trait.Signed.html @@ -1,4 +1,4 @@ -Signed in rational - RustSigned in rational - Rust
    -

    Trait rational::Signed

    source ·
    pub trait Signed:
    -    Sized
    -    + Add<Output = Self>
    -    + AddAssign
    -    + Sub<Output = Self>
    -    + SubAssign
    -    + Mul<Output = Self>
    -    + MulAssign
    -    + Div<Output = Self>
    -    + DivAssign
    -    + Rem<Output = Self>
    -    + RemAssign
    -    + Neg<Output = Self>
    -    + FromStr
    -    + Debug
    -    + Copy
    -    + Clone
    -    + Hash
    -    + PartialEq
    -    + Eq
    -    + PartialOrd
    -    + Ord {
    +

    Trait rational::Signed

    source ·
    pub trait Signed: Sized + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + Rem<Output = Self> + RemAssign + Neg<Output = Self> + FromStr + Debug + Copy + Clone + Hash + PartialEq + Eq + PartialOrd + Ord {
         // Required methods
         fn zero() -> Self;
         fn one() -> Self;
         fn generic_abs(self) -> Self;
         fn generic_signum(self) -> Self;
    -}

    Required Methods§

    source

    fn zero() -> Self

    source

    fn one() -> Self

    source

    fn generic_abs(self) -> Self

    source

    fn generic_signum(self) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Signed for i8

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i16

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i32

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i64

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i128

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for isize

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    Implementors§

    \ No newline at end of file +}

    Required Methods§

    source

    fn zero() -> Self

    source

    fn one() -> Self

    source

    fn generic_abs(self) -> Self

    source

    fn generic_signum(self) -> Self

    Implementations on Foreign Types§

    source§

    impl Signed for i128

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i16

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i32

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for isize

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i8

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    source§

    impl Signed for i64

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn generic_abs(self) -> Self

    source§

    fn generic_signum(self) -> Self

    Implementors§

    \ No newline at end of file diff --git a/rb/all.html b/rb/all.html index 3df8d467..a4587888 100644 --- a/rb/all.html +++ b/rb/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/rb/index.html b/rb/index.html index b2c73573..6cc84bac 100644 --- a/rb/index.html +++ b/rb/index.html @@ -1,4 +1,4 @@ -rb - Rustrb - Rust
    -

    Crate rb

    source ·
    Expand description

    Containers for storing data in a red-black tree.

    -

    Structs§

    Traits§

    \ No newline at end of file +

    Crate rb

    source ·
    Expand description

    Containers for storing data in a red-black tree.

    +

    Structs

    Traits

    \ No newline at end of file diff --git a/rb/struct.Multimap.html b/rb/struct.Multimap.html index 78e10e24..383b6467 100644 --- a/rb/struct.Multimap.html +++ b/rb/struct.Multimap.html @@ -1,4 +1,4 @@ -Multimap in rb - RustMultimap in rb - Rust
    -

    Struct rb::Multimap

    source ·
    pub struct Multimap<K, V> { /* private fields */ }

    Implementations§

    source§

    impl<K: Ord, V> Multimap<K, V>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> MultimapIter<'_, K, V>

    source

    pub fn nth(&self, n: usize) -> (&K, &V)

    source

    pub fn partition_point(&self, f: impl FnMut(&K) -> bool) -> usize

    source

    pub fn lower_bound(&self, key: &K) -> usize

    source

    pub fn upper_bound(&self, key: &K) -> usize

    source

    pub fn insert(&mut self, key: K, value: V)

    source

    pub fn remove<Q: ?Sized + Ord>(&mut self, key: &Q) -> Option<(K, V)>
    where - K: Borrow<Q>,

    source

    pub fn remove_nth(&mut self, n: usize) -> (K, V)

    Trait Implementations§

    source§

    impl<K: Ord + Debug, V: Debug> Debug for Multimap<K, V>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: Ord, V> Default for Multimap<K, V>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V>

    source§

    type IntoIter = MultimapIter<'a, K, V>

    Which kind of iterator are we turning this into?
    source§

    type Item = (&'a K, &'a V)

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<K, V> Freeze for Multimap<K, V>

    §

    impl<K, V> RefUnwindSafe for Multimap<K, V>
    where - K: RefUnwindSafe, - V: RefUnwindSafe,

    §

    impl<K, V> !Send for Multimap<K, V>

    §

    impl<K, V> !Sync for Multimap<K, V>

    §

    impl<K, V> Unpin for Multimap<K, V>

    §

    impl<K, V> UnwindSafe for Multimap<K, V>
    where - K: RefUnwindSafe, - V: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct rb::Multimap

    source ·
    pub struct Multimap<K, V> { /* private fields */ }

    Implementations§

    source§

    impl<K: Ord, V> Multimap<K, V>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> MultimapIter<'_, K, V>

    source

    pub fn nth(&self, n: usize) -> (&K, &V)

    source

    pub fn partition_point(&self, f: impl FnMut(&K) -> bool) -> usize

    source

    pub fn lower_bound(&self, key: &K) -> usize

    source

    pub fn upper_bound(&self, key: &K) -> usize

    source

    pub fn insert(&mut self, key: K, value: V)

    source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<(K, V)>where + K: Ord + Borrow<Q>, + Q: Ord + ?Sized,

    source

    pub fn remove_nth(&mut self, n: usize) -> (K, V)

    Trait Implementations§

    source§

    impl<K: Ord + Debug, V: Debug> Debug for Multimap<K, V>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: Ord, V> Default for Multimap<K, V>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V>

    §

    type IntoIter = MultimapIter<'a, K, V>

    Which kind of iterator are we turning this into?
    §

    type Item = (&'a K, &'a V)

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<K, V> RefUnwindSafe for Multimap<K, V>where + K: RefUnwindSafe, + V: RefUnwindSafe,

    §

    impl<K, V> !Send for Multimap<K, V>

    §

    impl<K, V> !Sync for Multimap<K, V>

    §

    impl<K, V> Unpin for Multimap<K, V>

    §

    impl<K, V> UnwindSafe for Multimap<K, V>where + K: RefUnwindSafe, + V: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rb/struct.MultimapSeg.html b/rb/struct.MultimapSeg.html index 1b7719f2..f85fc97a 100644 --- a/rb/struct.MultimapSeg.html +++ b/rb/struct.MultimapSeg.html @@ -1,4 +1,4 @@ -MultimapSeg in rb - RustMultimapSeg in rb - Rust
    -

    Struct rb::MultimapSeg

    source ·
    pub struct MultimapSeg<K, O: MultimapOp> { /* private fields */ }

    Implementations§

    source§

    impl<K: Ord, O: MultimapOp> MultimapSeg<K, O>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> SegmapIter<'_, K, O>

    source

    pub fn nth(&self, n: usize) -> (&K, &O::Value)

    source

    pub fn nth_mut(&mut self, n: usize) -> (&K, &mut O::Value)

    Trait Implementations§

    source§

    impl<K: Ord, O: MultimapOp> Default for MultimapSeg<K, O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, K: Ord, O: MultimapOp> IntoIterator for &'a MultimapSeg<K, O>

    §

    type IntoIter = SegmapIter<'a, K, O>

    Which kind of iterator are we turning this into?
    §

    type Item = (&'a K, &'a <O as MultimapOp>::Value)

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<K, O> RefUnwindSafe for MultimapSeg<K, O>where + K: RefUnwindSafe, + <O as MultimapOp>::Acc: RefUnwindSafe, + <O as MultimapOp>::Value: RefUnwindSafe,

    §

    impl<K, O> !Send for MultimapSeg<K, O>

    §

    impl<K, O> !Sync for MultimapSeg<K, O>

    §

    impl<K, O> Unpin for MultimapSeg<K, O>

    §

    impl<K, O> UnwindSafe for MultimapSeg<K, O>where + K: RefUnwindSafe, + <O as MultimapOp>::Acc: RefUnwindSafe, + <O as MultimapOp>::Value: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rb/struct.Multiset.html b/rb/struct.Multiset.html index f1599056..6ef7bae8 100644 --- a/rb/struct.Multiset.html +++ b/rb/struct.Multiset.html @@ -1,4 +1,4 @@ -Multiset in rb - RustMultiset in rb - Rust
    -

    Struct rb::Multiset

    source ·
    pub struct Multiset<K> { /* private fields */ }

    Implementations§

    source§

    impl<K: Ord> Multiset<K>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> MultisetIter<'_, K>

    source

    pub fn nth(&self, n: usize) -> &K

    source

    pub fn partition_point(&self, f: impl FnMut(&K) -> bool) -> usize

    source

    pub fn lower_bound(&self, key: &K) -> usize

    source

    pub fn upper_bound(&self, key: &K) -> usize

    source

    pub fn insert(&mut self, key: K)

    source

    pub fn remove<Q: ?Sized + Ord>(&mut self, key: &Q) -> Option<K>
    where - K: Ord + Borrow<Q>,

    source

    pub fn remove_nth(&mut self, n: usize) -> K

    Trait Implementations§

    source§

    impl<K: Ord + Debug> Debug for Multiset<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: Ord> Default for Multiset<K>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, K: Ord> IntoIterator for &'a Multiset<K>

    source§

    type IntoIter = MultisetIter<'a, K>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a K

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<K> Freeze for Multiset<K>

    §

    impl<K> RefUnwindSafe for Multiset<K>
    where - K: RefUnwindSafe,

    §

    impl<K> !Send for Multiset<K>

    §

    impl<K> !Sync for Multiset<K>

    §

    impl<K> Unpin for Multiset<K>

    §

    impl<K> UnwindSafe for Multiset<K>
    where - K: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct rb::Multiset

    source ·
    pub struct Multiset<K> { /* private fields */ }

    Implementations§

    source§

    impl<K: Ord> Multiset<K>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> MultisetIter<'_, K>

    source

    pub fn nth(&self, n: usize) -> &K

    source

    pub fn partition_point(&self, f: impl FnMut(&K) -> bool) -> usize

    source

    pub fn lower_bound(&self, key: &K) -> usize

    source

    pub fn upper_bound(&self, key: &K) -> usize

    source

    pub fn insert(&mut self, key: K)

    source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<K>where + K: Ord + Borrow<Q>, + Q: Ord + ?Sized,

    source

    pub fn remove_nth(&mut self, n: usize) -> K

    Trait Implementations§

    source§

    impl<K: Ord + Debug> Debug for Multiset<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: Ord> Default for Multiset<K>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, K: Ord> IntoIterator for &'a Multiset<K>

    §

    type IntoIter = MultisetIter<'a, K>

    Which kind of iterator are we turning this into?
    §

    type Item = &'a K

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<K> RefUnwindSafe for Multiset<K>where + K: RefUnwindSafe,

    §

    impl<K> !Send for Multiset<K>

    §

    impl<K> !Sync for Multiset<K>

    §

    impl<K> Unpin for Multiset<K>

    §

    impl<K> UnwindSafe for Multiset<K>where + K: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rb/struct.Seg.html b/rb/struct.Seg.html index 4eeeed3a..d652bfc5 100644 --- a/rb/struct.Seg.html +++ b/rb/struct.Seg.html @@ -1,4 +1,4 @@ -Seg in rb - RustSeg in rb - Rust
    -

    Struct rb::Seg

    source ·
    pub struct Seg<O: Op> { /* private fields */ }

    Implementations§

    source§

    impl<O: Op> Seg<O>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> SegIter<'_, O>

    source

    pub fn display(&self) -> SegDisplay<'_, O>

    source

    pub fn table(&self) -> SegTable<'_, O>

    source

    pub fn nth(&self, index: usize) -> &O::Value

    source

    pub fn nth_mut(&mut self, index: usize) -> Entry<'_, O>

    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> O::Value

    source

    pub fn insert(&mut self, index: usize, value: O::Value)

    source

    pub fn remove(&mut self, index: usize) -> O::Value

    source

    pub fn append(&mut self, other: &mut Self)

    source

    pub fn split_off(&mut self, index: usize) -> Self

    Trait Implementations§

    source§

    impl<O: Op> Debug for Seg<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Default for Seg<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for Seg<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a Seg<O>

    source§

    type IntoIter = SegIter<'a, O>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for Seg<O>

    §

    impl<O> RefUnwindSafe for Seg<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> !Send for Seg<O>

    §

    impl<O> !Sync for Seg<O>

    §

    impl<O> Unpin for Seg<O>

    §

    impl<O> UnwindSafe for Seg<O>
    where - <O as Op>::Value: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct rb::Seg

    source ·
    pub struct Seg<O: Op> { /* private fields */ }

    Implementations§

    source§

    impl<O: Op> Seg<O>

    source

    pub fn new() -> Self

    source

    pub fn len(&self) -> usize

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn iter(&self) -> SegIter<'_, O>

    source

    pub fn display(&self) -> SegDisplay<'_, O>

    source

    pub fn table(&self) -> SegTable<'_, O>

    source

    pub fn nth(&self, index: usize) -> &O::Value

    source

    pub fn nth_mut(&mut self, index: usize) -> Entry<'_, O>

    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> O::Value

    source

    pub fn insert(&mut self, index: usize, value: O::Value)

    source

    pub fn remove(&mut self, index: usize) -> O::Value

    source

    pub fn append(&mut self, other: &mut Self)

    source

    pub fn split_off(&mut self, index: usize) -> Self

    Trait Implementations§

    source§

    impl<O: Op> Debug for Seg<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Default for Seg<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for Seg<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a Seg<O>

    §

    type IntoIter = SegIter<'a, O>

    Which kind of iterator are we turning this into?
    §

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for Seg<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> !Send for Seg<O>

    §

    impl<O> !Sync for Seg<O>

    §

    impl<O> Unpin for Seg<O>

    §

    impl<O> UnwindSafe for Seg<O>where + <O as Op>::Value: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rb/trait.MultimapOp.html b/rb/trait.MultimapOp.html index db0f9e96..60ee867d 100644 --- a/rb/trait.MultimapOp.html +++ b/rb/trait.MultimapOp.html @@ -1,4 +1,4 @@ -MultimapOp in rb - RustMultimapOp in rb - Rust
    -

    Trait rb::MultimapOp

    source ·
    pub trait MultimapOp {
    +

    Trait rb::MultimapOp

    source ·
    pub trait MultimapOp {
         type Value;
         type Acc;
     
         // Required methods
         fn to_acc(value: &Self::Value) -> Self::Acc;
         fn join(
    -        lhs: Option<&Self::Acc>,
    +        lhs: Option<&Self::Acc>,
             center: &Self::Value,
    -        rhs: Option<&Self::Acc>,
    +        rhs: Option<&Self::Acc>
         ) -> Self::Acc;
    -}

    Required Associated Types§

    Required Methods§

    source

    fn to_acc(value: &Self::Value) -> Self::Acc

    source

    fn join( - lhs: Option<&Self::Acc>, +}

    Required Associated Types§

    Required Methods§

    source

    fn to_acc(value: &Self::Value) -> Self::Acc

    source

    fn join( + lhs: Option<&Self::Acc>, center: &Self::Value, - rhs: Option<&Self::Acc>, -) -> Self::Acc

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file + rhs: Option<&Self::Acc> +) -> Self::Acc

    Implementors§

    \ No newline at end of file diff --git a/rb/trait.Op.html b/rb/trait.Op.html index ec535b7c..580f5e23 100644 --- a/rb/trait.Op.html +++ b/rb/trait.Op.html @@ -1,4 +1,4 @@ -Op in rb - RustOp in rb - Rust
    -

    Trait rb::Op

    source ·
    pub trait Op {
    -    type Value: Clone;
    +

    Trait rb::Op

    source ·
    pub trait Op {
    +    type Value: Clone;
     
         // Required methods
         fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
         fn identity() -> Self::Value;
    -}

    Required Associated Types§

    Required Methods§

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    source

    fn identity() -> Self::Value

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +}

    Required Associated Types§

    Required Methods§

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    source

    fn identity() -> Self::Value

    Implementors§

    \ No newline at end of file diff --git a/rbtree/all.html b/rbtree/all.html index bb678610..2b92556f 100644 --- a/rbtree/all.html +++ b/rbtree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/rbtree/index.html b/rbtree/index.html index e5b2e04b..129091d7 100644 --- a/rbtree/index.html +++ b/rbtree/index.html @@ -1,4 +1,4 @@ -rbtree - Rustrbtree - Rust
    -

    Crate rbtree

    source ·
    Expand description

    赤黒木

    -

    §主な機能

    +

    Crate rbtree

    source ·
    Expand description

    赤黒木

    +

    主な機能

    -

    §使い方(fold しない場合)

    +

    使い方(fold しない場合)

    RbTree の第二ジェネリック型引数をデフォルトのままにしておくと、ランダムアクセスリストを実現します。

    @@ -70,7 +70,7 @@

    let [b, c] = a.split(4); assert_eq!(b.iter().copied().collect::<Vec<_>>(), vec![10, 11, 13, 10]); assert_eq!(c.iter().copied().collect::<Vec<_>>(), vec![11, 13]);

    -

    §使い方(fold)

    +

    使い方(fold)

    Op トレイトを実装した型を作って入れましょう。(これめんどくさいですね……)

    use rbtree::Op;
    @@ -96,10 +96,10 @@ 

    §使い assert_eq!(a.fold(4..=5), Some(9)); assert_eq!(a.fold(8..), Some(17)); assert_eq!(a.fold(3..3), None);

    -

    §所有権について

    +

    所有権について

    fold が を要求します。ごめんなさい……(これ RefCell などにすると今度は 参照を返せなくなって詰んでしまいます。)それと getT: Copy を要求しており、値返しとなっております。

    -

    §愚痴

    -

    Clone, Hash, PartialEq をて実装するはめになったのですが!?

    -

    Structs§

    • iter の返す型
    • 赤黒木に演算を載せないときに使う型です。RbTree のデフォルト引数になっています。
    • 赤黒木です。

    Traits§

    • 赤黒木に演算を載せたいときに実装するトレイトです。(演算を載せないときには使いません)
    \ No newline at end of file +

    愚痴

    +

    Clone, Hash, PartialEq をて実装するはめになったのですが!?

    +

    Structs

    • iter の返す型
    • 赤黒木に演算を載せないときに使う型です。RbTree のデフォルト引数になっています。
    • 赤黒木です。

    Traits

    • 赤黒木に演算を載せたいときに実装するトレイトです。(演算を載せないときには使いません)
    \ No newline at end of file diff --git a/rbtree/struct.Iter.html b/rbtree/struct.Iter.html index 5a8f6286..00d78ded 100644 --- a/rbtree/struct.Iter.html +++ b/rbtree/struct.Iter.html @@ -1,4 +1,4 @@ -Iter in rbtree - RustIter in rbtree - Rust
    -

    Struct rbtree::Iter

    source ·
    pub struct Iter<'a, T, O: Op<Value = T>>(/* private fields */);
    Expand description

    iter の返す型

    -

    Trait Implementations§

    source§

    impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O>

    source§

    type Item = &'a T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct rbtree::Iter

    source ·
    pub struct Iter<'a, T, O: Op<Value = T>>(_);
    Expand description

    iter の返す型

    +

    Trait Implementations§

    source§

    impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O>

    §

    type Item = &'a T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, O> Freeze for Iter<'a, T, O>

    §

    impl<'a, T, O> RefUnwindSafe for Iter<'a, T, O>
    where - T: RefUnwindSafe, - <O as Op>::Summary: RefUnwindSafe,

    §

    impl<'a, T, O> Send for Iter<'a, T, O>
    where - T: Sync, - <O as Op>::Summary: Sync,

    §

    impl<'a, T, O> Sync for Iter<'a, T, O>
    where - T: Sync, - <O as Op>::Summary: Sync,

    §

    impl<'a, T, O> Unpin for Iter<'a, T, O>

    §

    impl<'a, T, O> UnwindSafe for Iter<'a, T, O>
    where - T: RefUnwindSafe, - <O as Op>::Summary: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, T, O> RefUnwindSafe for Iter<'a, T, O>where + T: RefUnwindSafe, + <O as Op>::Summary: RefUnwindSafe,

    §

    impl<'a, T, O> Send for Iter<'a, T, O>where + T: Sync, + <O as Op>::Summary: Sync,

    §

    impl<'a, T, O> Sync for Iter<'a, T, O>where + T: Sync, + <O as Op>::Summary: Sync,

    §

    impl<'a, T, O> Unpin for Iter<'a, T, O>

    §

    impl<'a, T, O> UnwindSafe for Iter<'a, T, O>where + T: RefUnwindSafe, + <O as Op>::Summary: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rbtree/struct.Nop.html b/rbtree/struct.Nop.html index a38fde84..3a0164e4 100644 --- a/rbtree/struct.Nop.html +++ b/rbtree/struct.Nop.html @@ -1,4 +1,4 @@ -Nop in rbtree - RustNop in rbtree - Rust
    -

    Struct rbtree::Nop

    source ·
    pub struct Nop<T> { /* private fields */ }
    Expand description

    赤黒木に演算を載せないときに使う型です。RbTree のデフォルト引数になっています。

    -

    Trait Implementations§

    source§

    impl<T> Op for Nop<T>

    source§

    type Summary = ()

    中間ノードに持たせる値
    source§

    type Value = T

    葉に持たせる値
    source§

    fn summarize(_value: &Self::Value) -> Self::Summary

    葉の値から中間ノードの値への変換
    source§

    fn op(_lhs: Self::Summary, _rhs: Self::Summary) -> Self::Summary

    演算

    Auto Trait Implementations§

    §

    impl<T> Freeze for Nop<T>

    §

    impl<T> RefUnwindSafe for Nop<T>

    §

    impl<T> Send for Nop<T>

    §

    impl<T> Sync for Nop<T>

    §

    impl<T> Unpin for Nop<T>

    §

    impl<T> UnwindSafe for Nop<T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct rbtree::Nop

    source ·
    pub struct Nop<T> { /* private fields */ }
    Expand description

    赤黒木に演算を載せないときに使う型です。RbTree のデフォルト引数になっています。

    +

    Trait Implementations§

    source§

    impl<T> Op for Nop<T>

    §

    type Summary = ()

    中間ノードに持たせる値
    §

    type Value = T

    葉に持たせる値
    source§

    fn summarize(_value: &Self::Value) -> Self::Summary

    葉の値から中間ノードの値への変換
    source§

    fn op(_lhs: Self::Summary, _rhs: Self::Summary) -> Self::Summary

    演算

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Nop<T>

    §

    impl<T> Send for Nop<T>

    §

    impl<T> Sync for Nop<T>

    §

    impl<T> Unpin for Nop<T>

    §

    impl<T> UnwindSafe for Nop<T>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rbtree/struct.RbTree.html b/rbtree/struct.RbTree.html index f86aaed9..606a039c 100644 --- a/rbtree/struct.RbTree.html +++ b/rbtree/struct.RbTree.html @@ -1,4 +1,4 @@ -RbTree in rbtree - RustRbTree in rbtree - Rust
    -

    Struct rbtree::RbTree

    source ·
    pub struct RbTree<T, O: Op<Value = T> = Nop<T>>(/* private fields */);
    Expand description

    赤黒木です。

    -

    Implementations§

    source§

    impl<T, O: Op<Value = T>> RbTree<T, O>

    source

    pub fn new() -> Self

    空の赤黒木を生成します。

    -
    source

    pub fn is_empty(&self) -> bool

    空ならば true、さもなくば false を返します。

    -
    source

    pub fn len(&self) -> usize

    長さ、すなわち Nil ノードの個数を返します。

    -
    source

    pub fn iter(&self) -> Iter<'_, T, O>

    要素を左から順に辿るイテレータを返します。(rev, nth など未実装です。)

    -
    source

    pub fn get(&mut self, i: usize) -> T
    where - T: Copy,

    i 番目の要素をコピーして返します。

    -
    §Panics
    +

    Struct rbtree::RbTree

    source ·
    pub struct RbTree<T, O: Op<Value = T> = Nop<T>>(_);
    Expand description

    赤黒木です。

    +

    Implementations§

    source§

    impl<T, O: Op<Value = T>> RbTree<T, O>

    source

    pub fn new() -> Self

    空の赤黒木を生成します。

    +
    source

    pub fn is_empty(&self) -> bool

    空ならば true、さもなくば false を返します。

    +
    source

    pub fn len(&self) -> usize

    長さ、すなわち Nil ノードの個数を返します。

    +
    source

    pub fn iter(&self) -> Iter<'_, T, O>

    要素を左から順に辿るイテレータを返します。(rev, nth など未実装です。)

    +
    source

    pub fn get(&mut self, i: usize) -> Twhere + T: Copy,

    i 番目の要素をコピーして返します。

    +
    Panics

    範囲外のとき

    -
    source

    pub fn partition_point<F>(&self, f: F) -> usize
    where - O::Summary: Clone, - F: Fn(&O::Summary) -> bool,

    中間ノードの情報で二分探索します。

    +
    source

    pub fn partition_point<F>(&self, f: F) -> usizewhere + O::Summary: Clone, + F: Fn(&O::Summary) -> bool,

    中間ノードの情報で二分探索します。

    0 ≦ i ≦ n に依存する命題 P ( i ) を次のように定めます。

    • P ( 0 ) = true
    • P ( i ) = f(self.fold(0..i).unwrap()) if i > 0
    -
    §要件
    +
    要件

    C++ の std::partition_point と同じです。

    [1, n] が P により区分化され、前側が true、後側が false となっていることです。

    -
    §戻り値
    +
    戻り値

    C++ の std::partition_point とは 1 つずれています。

    P ( i ) が true となる最大の i を返します。

    -
    §
    +

    戻り値の範囲は [0, n] です。 i が 1 以上に対して、P ( i ) が全て false ならば 0 を、全て true ならば n を返します。

    -
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Summary>

    range の範囲で畳み込みます。

    -
    §Panics
    +
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Summary>

    range の範囲で畳み込みます。

    +
    Panics

    範囲外のとき

    -
    source

    pub fn singleton(x: T) -> Self

    Nil ノード一つのみからなる新しい赤黒木を構築します。

    -
    source

    pub fn push_front(&mut self, x: T)

    新しいノードを先頭に挿入します。

    -
    source

    pub fn push_back(&mut self, x: T)

    新しいノードを末尾に挿入します。

    -
    source

    pub fn insert(&mut self, i: usize, x: T)

    i 番目に新しい Nil ノードを挿入します。

    -
    §Panics
    +
    source

    pub fn singleton(x: T) -> Self

    Nil ノード一つのみからなる新しい赤黒木を構築します。

    +
    source

    pub fn push_front(&mut self, x: T)

    新しいノードを先頭に挿入します。

    +
    source

    pub fn push_back(&mut self, x: T)

    新しいノードを末尾に挿入します。

    +
    source

    pub fn insert(&mut self, i: usize, x: T)

    i 番目に新しい Nil ノードを挿入します。

    +
    Panics

    範囲外のとき

    -
    source

    pub fn delete(&mut self, i: usize) -> T

    i 番目の Nil ノードを削除して、保持していたデータを返します。

    -
    §Panics
    +
    source

    pub fn delete(&mut self, i: usize) -> T

    i 番目の Nil ノードを削除して、保持していたデータを返します。

    +
    Panics

    範囲外のとき

    -
    source

    pub fn merge(lhs: Self, rhs: Self) -> Self

    2 つの赤黒木をマージします。

    -
    source

    pub fn merge3(x: Self, y: Self, z: Self) -> Self

    3 つの赤黒木をマージします。

    -
    source

    pub fn split(self, i: usize) -> [Self; 2]

    i 番目で分割します。

    -
    §Panics
    +
    source

    pub fn merge(lhs: Self, rhs: Self) -> Self

    2 つの赤黒木をマージします。

    +
    source

    pub fn merge3(x: Self, y: Self, z: Self) -> Self

    3 つの赤黒木をマージします。

    +
    source

    pub fn split(self, i: usize) -> [Self; 2]

    i 番目で分割します。

    +
    Panics

    範囲外のとき

    -
    source

    pub fn split3(self, start: usize, end: usize) -> [Self; 3]

    l, r 番目で 3 つに分割します。

    -
    §Panics
    +
    source

    pub fn split3(self, start: usize, end: usize) -> [Self; 3]

    l, r 番目で 3 つに分割します。

    +
    Panics

    範囲外のとき

    -

    Trait Implementations§

    source§

    impl<T: Clone, O: Op<Value = T>> Clone for RbTree<T, O>
    where - O::Summary: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, O: Op<Value = T>> Debug for RbTree<T, O>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T, O: Op<Value = T>> Default for RbTree<T, O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<A, O: Op<Value = A>> FromIterator<A> for RbTree<A, O>

    source§

    fn from_iter<T: IntoIterator<Item = A>>(iter: T) -> Self

    イテレータから赤黒木を、分割統治法で構築します。

    -
    §計算量
    +

    Trait Implementations§

    source§

    impl<T: Clone, O: Op<Value = T>> Clone for RbTree<T, O>where + O::Summary: Clone,

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, O: Op<Value = T>> Debug for RbTree<T, O>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T, O: Op<Value = T>> Default for RbTree<T, O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<A, O: Op<Value = A>> FromIterator<A> for RbTree<A, O>

    source§

    fn from_iter<T: IntoIterator<Item = A>>(iter: T) -> Self

    イテレータから赤黒木を、分割統治法で構築します。

    +
    計算量

    N を要素数として、Θ( N )

    -
    source§

    impl<T: Hash, O: Op<Value = T>> Hash for RbTree<T, O>
    where - O::Summary: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O>

    source§

    type IntoIter = Iter<'a, <O as Op>::Value, O>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T: PartialEq, O: Op<Value = T>> PartialEq for RbTree<T, O>
    where - O::Summary: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.

    Auto Trait Implementations§

    §

    impl<T, O> Freeze for RbTree<T, O>
    where - T: Freeze,

    §

    impl<T, O> RefUnwindSafe for RbTree<T, O>
    where - T: RefUnwindSafe, - <O as Op>::Summary: RefUnwindSafe,

    §

    impl<T, O> Send for RbTree<T, O>
    where - T: Send, - <O as Op>::Summary: Send,

    §

    impl<T, O> Sync for RbTree<T, O>
    where - T: Sync, - <O as Op>::Summary: Sync,

    §

    impl<T, O> Unpin for RbTree<T, O>
    where - T: Unpin,

    §

    impl<T, O> UnwindSafe for RbTree<T, O>
    where - T: UnwindSafe, - <O as Op>::Summary: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source§

    impl<T: Hash, O: Op<Value = T>> Hash for RbTree<T, O>where + O::Summary: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O>

    §

    type IntoIter = Iter<'a, <O as Op>::Value, O>

    Which kind of iterator are we turning this into?
    §

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<T: PartialEq, O: Op<Value = T>> PartialEq<RbTree<T, O>> for RbTree<T, O>where + O::Summary: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.

    Auto Trait Implementations§

    §

    impl<T, O> RefUnwindSafe for RbTree<T, O>where + T: RefUnwindSafe, + <O as Op>::Summary: RefUnwindSafe,

    §

    impl<T, O> Send for RbTree<T, O>where + T: Send, + <O as Op>::Summary: Send,

    §

    impl<T, O> Sync for RbTree<T, O>where + T: Sync, + <O as Op>::Summary: Sync,

    §

    impl<T, O> Unpin for RbTree<T, O>where + T: Unpin,

    §

    impl<T, O> UnwindSafe for RbTree<T, O>where + T: UnwindSafe, + <O as Op>::Summary: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/rbtree/trait.Op.html b/rbtree/trait.Op.html index 27a9978e..b727325e 100644 --- a/rbtree/trait.Op.html +++ b/rbtree/trait.Op.html @@ -1,4 +1,4 @@ -Op in rbtree - RustOp in rbtree - Rust
    -

    Trait rbtree::Op

    source ·
    pub trait Op {
    +

    Trait rbtree::Op

    source ·
    pub trait Op {
         type Value;
    -    type Summary: Clone;
    +    type Summary: Clone;
     
         // Required methods
         fn summarize(value: &Self::Value) -> Self::Summary;
         fn op(lhs: Self::Summary, rhs: Self::Summary) -> Self::Summary;
     }
    Expand description

    赤黒木に演算を載せたいときに実装するトレイトです。(演算を載せないときには使いません)

    -

    Required Associated Types§

    source

    type Value

    葉に持たせる値

    -
    source

    type Summary: Clone

    中間ノードに持たせる値

    -

    Required Methods§

    source

    fn summarize(value: &Self::Value) -> Self::Summary

    葉の値から中間ノードの値への変換

    -
    source

    fn op(lhs: Self::Summary, rhs: Self::Summary) -> Self::Summary

    演算

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T> Op for Nop<T>

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value

    葉に持たせる値

    +
    source

    type Summary: Clone

    中間ノードに持たせる値

    +

    Required Methods§

    source

    fn summarize(value: &Self::Value) -> Self::Summary

    葉の値から中間ノードの値への変換

    +
    source

    fn op(lhs: Self::Summary, rhs: Self::Summary) -> Self::Summary

    演算

    +

    Implementors§

    source§

    impl<T> Op for Nop<T>

    §

    type Summary = ()

    §

    type Value = T

    \ No newline at end of file diff --git a/riff/all.html b/riff/all.html new file mode 100644 index 00000000..859fd451 --- /dev/null +++ b/riff/all.html @@ -0,0 +1,35 @@ +List of all items in this crate
    + + + + + +
    \ No newline at end of file diff --git a/riff/binary_search/trait.BinarySearch.html b/riff/binary_search/trait.BinarySearch.html new file mode 100644 index 00000000..a4a49dcb --- /dev/null +++ b/riff/binary_search/trait.BinarySearch.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/trait.BinarySearch.html...

    + + + \ No newline at end of file diff --git a/riff/bitmask_iterators/fn.bitmask_combinations.html b/riff/bitmask_iterators/fn.bitmask_combinations.html new file mode 100644 index 00000000..aa64b9b2 --- /dev/null +++ b/riff/bitmask_iterators/fn.bitmask_combinations.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/fn.bitmask_combinations.html...

    + + + \ No newline at end of file diff --git a/riff/bitmask_iterators/fn.bitmask_subsets.html b/riff/bitmask_iterators/fn.bitmask_subsets.html new file mode 100644 index 00000000..26c81a60 --- /dev/null +++ b/riff/bitmask_iterators/fn.bitmask_subsets.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/fn.bitmask_subsets.html...

    + + + \ No newline at end of file diff --git a/riff/change_min_max/trait.ChangeMinMax.html b/riff/change_min_max/trait.ChangeMinMax.html new file mode 100644 index 00000000..3365292d --- /dev/null +++ b/riff/change_min_max/trait.ChangeMinMax.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/trait.ChangeMinMax.html...

    + + + \ No newline at end of file diff --git a/riff/fn.bitmask_combinations.html b/riff/fn.bitmask_combinations.html new file mode 100644 index 00000000..d4998e32 --- /dev/null +++ b/riff/fn.bitmask_combinations.html @@ -0,0 +1,45 @@ +bitmask_combinations in riff - Rust
    + + + + + +

    Function riff::bitmask_combinations

    source ·
    pub fn bitmask_combinations<T: Unsigned>(
    +    n: u32,
    +    k: u32
    +) -> BitmaskCombinations<T>
    Expand description

    Generates all the $k$-subsets of $[0, N[$

    +

    Examples

    +

    Basic usage:

    + +
    use bitutils::combinations;
    +
    +assert_eq!(combinations::<u32>(3, 2).collect::<Vec<_>>(), vec![3, 5, 6]);
    +
    \ No newline at end of file diff --git a/riff/fn.bitmask_subsets.html b/riff/fn.bitmask_subsets.html new file mode 100644 index 00000000..7e804cbb --- /dev/null +++ b/riff/fn.bitmask_subsets.html @@ -0,0 +1,42 @@ +bitmask_subsets in riff - Rust
    + + + + + +

    Function riff::bitmask_subsets

    source ·
    pub fn bitmask_subsets<T: Unsigned>(bs: T) -> BitmaskSubsets<T>
    Expand description

    Generates all the subsets of bs.

    +

    Examples

    +

    Basic usage:

    + +
    use bitutils::subsets;
    +
    +assert_eq!(subsets(10u32).collect::<Vec<_>>(), vec![0, 2, 8, 10]);
    +
    \ No newline at end of file diff --git a/riff/index.html b/riff/index.html new file mode 100644 index 00000000..1f8edcf8 --- /dev/null +++ b/riff/index.html @@ -0,0 +1,36 @@ +riff - Rust
    + + + + + +

    Crate riff

    source ·
    Expand description

    Future and otherworldly Rust features.

    +

    Traits

    Functions

    \ No newline at end of file diff --git a/riff/numeric_traits/trait.Unsigned.html b/riff/numeric_traits/trait.Unsigned.html new file mode 100644 index 00000000..8ea30c36 --- /dev/null +++ b/riff/numeric_traits/trait.Unsigned.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/trait.Unsigned.html...

    + + + \ No newline at end of file diff --git a/riff/pop_if/trait.PopIf.html b/riff/pop_if/trait.PopIf.html new file mode 100644 index 00000000..9e442990 --- /dev/null +++ b/riff/pop_if/trait.PopIf.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../riff/trait.PopIf.html...

    + + + \ No newline at end of file diff --git a/riff/sidebar-items.js b/riff/sidebar-items.js new file mode 100644 index 00000000..c931c271 --- /dev/null +++ b/riff/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"fn":["bitmask_combinations","bitmask_subsets"],"trait":["BinarySearch","ChangeMinMax","PopIf","Unsigned"]}; \ No newline at end of file diff --git a/riff/trait.BinarySearch.html b/riff/trait.BinarySearch.html new file mode 100644 index 00000000..3d0452cd --- /dev/null +++ b/riff/trait.BinarySearch.html @@ -0,0 +1,59 @@ +BinarySearch in riff - Rust
    + + + + + +

    Trait riff::BinarySearch

    source ·
    pub trait BinarySearch<T> {
    +    // Required method
    +    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize;
    +
    +    // Provided methods
    +    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize { ... }
    +    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize { ... }
    +    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(
    +        &self,
    +        b: &B,
    +        f: F
    +    ) -> usize { ... }
    +    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(
    +        &self,
    +        b: &B,
    +        f: F
    +    ) -> usize { ... }
    +    fn lower_bound(&self, x: &T) -> usize
    +       where T: Ord { ... }
    +    fn upper_bound(&self, x: &T) -> usize
    +       where T: Ord { ... }
    +}
    Expand description

    {lower,upper}_bound, etc

    +

    Required Methods§

    source

    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize

    Provided Methods§

    source

    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    source

    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    source

    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    source

    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    source

    fn lower_bound(&self, x: &T) -> usizewhere + T: Ord,

    source

    fn upper_bound(&self, x: &T) -> usizewhere + T: Ord,

    Implementations on Foreign Types§

    source§

    impl<T> BinarySearch<T> for [T]

    source§

    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize

    Implementors§

    \ No newline at end of file diff --git a/riff/trait.ChangeMinMax.html b/riff/trait.ChangeMinMax.html new file mode 100644 index 00000000..febd7ec7 --- /dev/null +++ b/riff/trait.ChangeMinMax.html @@ -0,0 +1,40 @@ +ChangeMinMax in riff - Rust
    + + + + + +

    Trait riff::ChangeMinMax

    source ·
    pub trait ChangeMinMax: PartialOrd + Sized {
    +    // Provided methods
    +    fn change_min(&mut self, rhs: Self) { ... }
    +    fn change_max(&mut self, rhs: Self) { ... }
    +}
    Expand description

    change_min and change_max

    +

    Provided Methods§

    source

    fn change_min(&mut self, rhs: Self)

    source

    fn change_max(&mut self, rhs: Self)

    Implementors§

    \ No newline at end of file diff --git a/riff/trait.PopIf.html b/riff/trait.PopIf.html new file mode 100644 index 00000000..6c6add39 --- /dev/null +++ b/riff/trait.PopIf.html @@ -0,0 +1,45 @@ +PopIf in riff - Rust
    + + + + + +

    Trait riff::PopIf

    source ·
    pub trait PopIf {
    +    type Value;
    +
    +    // Required method
    +    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>
    +       where F: FnOnce(&mut Self::Value) -> bool;
    +}
    Expand description

    Conditional pop function.

    +

    Required Associated Types§

    Required Methods§

    source

    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>where + F: FnOnce(&mut Self::Value) -> bool,

    Implementations on Foreign Types§

    source§

    impl<T: Ord> PopIf for BinaryHeap<T>

    §

    type Value = T

    source§

    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>where + F: FnOnce(&mut Self::Value) -> bool,

    source§

    impl<T> PopIf for Vec<T>

    §

    type Value = T

    source§

    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>where + F: FnOnce(&mut Self::Value) -> bool,

    Implementors§

    \ No newline at end of file diff --git a/riff/trait.Unsigned.html b/riff/trait.Unsigned.html new file mode 100644 index 00000000..682cbbcc --- /dev/null +++ b/riff/trait.Unsigned.html @@ -0,0 +1,44 @@ +Unsigned in riff - Rust
    + + + + + +

    Trait riff::Unsigned

    source ·
    pub trait Unsigned: Sized + PartialEq + PartialOrd + Debug + Clone + Copy + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + BitAnd<Output = Self> + BitAndAssign + BitOr<Output = Self> + BitOrAssign + BitXor<Output = Self> + BitXorAssign + Shl<u32, Output = Self> + ShlAssign<u32> + Shr<u32, Output = Self> + ShrAssign<u32> + Not<Output = Self> {
    +    // Required methods
    +    fn zero() -> Self;
    +    fn one() -> Self;
    +    fn wrapping_neg(self) -> Self;
    +
    +    // Provided method
    +    fn bit_length() -> u32 { ... }
    +}
    Expand description

    Unsigned integer types.

    +

    Required Methods§

    source

    fn zero() -> Self

    source

    fn one() -> Self

    source

    fn wrapping_neg(self) -> Self

    Provided Methods§

    Implementations on Foreign Types§

    source§

    impl Unsigned for u8

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    source§

    impl Unsigned for u16

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    source§

    impl Unsigned for u128

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    source§

    impl Unsigned for usize

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    source§

    impl Unsigned for u32

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    source§

    impl Unsigned for u64

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn wrapping_neg(self) -> Self

    Implementors§

    \ No newline at end of file diff --git a/scc/all.html b/scc/all.html index a9d62f77..bc39ee6a 100644 --- a/scc/all.html +++ b/scc/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/scc/index.html b/scc/index.html index e18ccd8d..c8696580 100644 --- a/scc/index.html +++ b/scc/index.html @@ -1,4 +1,4 @@ -scc - Rustscc - Rust
    -

    Crate scc

    source ·
    Expand description

    §このライブラリを使える問題

    +

    Crate scc

    source ·
    Expand description

    Structs§

    • 本体です。
    \ No newline at end of file +

    Structs

    • 本体です。
    \ No newline at end of file diff --git a/scc/struct.Scc.html b/scc/struct.Scc.html index d3787314..bdec0d2f 100644 --- a/scc/struct.Scc.html +++ b/scc/struct.Scc.html @@ -1,4 +1,4 @@ -Scc in scc - RustScc in scc - Rust
    -

    Struct scc::Scc

    source ·
    pub struct Scc { /* private fields */ }
    Expand description

    本体です。

    -

    Implementations§

    source§

    impl Scc

    source

    pub fn is_empty(&self) -> bool

    管理しているグラフが空グラフならば、true を返します。

    -
    §Example
    +

    Struct scc::Scc

    source ·
    pub struct Scc { /* private fields */ }
    Expand description

    本体です。

    +

    Implementations§

    source§

    impl Scc

    source

    pub fn is_empty(&self) -> bool

    管理しているグラフが空グラフならば、true を返します。

    +
    Example
    use scc::Scc;
     
     let scc = Scc::new(0);
    @@ -42,8 +42,8 @@ 
    §Example
    let scc = Scc::new(1); assert!(!scc.is_empty());
    -
    source

    pub fn len(&self) -> usize

    管理しているグラフの頂点数を返します。

    -
    §Example
    +
    source

    pub fn len(&self) -> usize

    管理しているグラフの頂点数を返します。

    +
    Example
    use scc::Scc;
     
     let scc = Scc::new(0);
    @@ -51,14 +51,14 @@ 
    §Example
    let scc = Scc::new(1); assert_eq!(scc.len(), 1);
    -
    source

    pub fn new(n: usize) -> Self

    頂点数 n の辺のない未ビルドのグラフを構築します。

    -
    §Example
    +
    source

    pub fn new(n: usize) -> Self

    頂点数 n の辺のない未ビルドのグラフを構築します。

    +
    Example
    use scc::Scc;
     
     let scc = Scc::new(42);
    -
    source

    pub fn add_edge(&mut self, from: usize, to: usize)

    【Require: 未ビルド】 +

    source

    pub fn add_edge(&mut self, from: usize, to: usize)

    【Require: 未ビルド】 辺 (from, to) を追加します。

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(42);
    @@ -66,8 +66,8 @@ 
    §Example
    scc.add_edge(13, 6); assert_eq!(&scc.g()[13], &[18, 6]); assert_eq!(&scc.g()[6], &[]);
    -
    source

    pub fn g(&self) -> &[Vec<usize>]

    正向きのグラフの隣接リストを返します。

    -
    §Example
    +
    source

    pub fn g(&self) -> &[Vec<usize>]

    正向きのグラフの隣接リストを返します。

    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(42);
    @@ -75,8 +75,8 @@ 
    §Example
    scc.add_edge(13, 6); assert_eq!(&scc.g()[13], &[18, 6]); assert_eq!(&scc.g()[6], &[]);
    -
    source

    pub fn rg(&self) -> &[Vec<usize>]

    逆向きのグラフの隣接リストを返します。

    -
    §Example
    +
    source

    pub fn rg(&self) -> &[Vec<usize>]

    逆向きのグラフの隣接リストを返します。

    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(42);
    @@ -84,9 +84,9 @@ 
    §Example
    scc.add_edge(13, 6); assert_eq!(&scc.rg()[13], &[]); assert_eq!(&scc.rg()[6], &[13]);
    -
    source

    pub fn ord(&self) -> &[usize]

    【Require: ビルド済み】 +

    source

    pub fn ord(&self) -> &[usize]

    【Require: ビルド済み】 商グラフにおけるトポロジカル順序に従って頂点番号の入ったスライスを返します。

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -97,9 +97,9 @@ 
    §Example
    scc.add_edge(5, 4); scc.build(); assert_eq!(&scc.ord(), &[3, 4, 5, 2, 1, 0]);
    -
    source

    pub fn cmp_count(&self) -> usize

    【Require: ビルド済み】 +

    source

    pub fn cmp_count(&self) -> usize

    【Require: ビルド済み】 強連結成分の個数を返します。

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -110,9 +110,9 @@ 
    §Example
    scc.add_edge(5, 4); scc.build(); assert_eq!(scc.cmp_count(), 5);
    -
    source

    pub fn cmp_of(&self, x: usize) -> usize

    【Require: ビルド済み】 +

    source

    pub fn cmp_of(&self, x: usize) -> usize

    【Require: ビルド済み】 頂点 x の属する強連結成分の番号を返します。

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -124,10 +124,10 @@ 
    §Example
    scc.build(); assert_eq!(scc.cmp_of(0), 4); assert_eq!(scc.cmp_of(1), 3);
    -
    source

    pub fn cmp_ofs(&self) -> &[usize]

    【Require: ビルド済み】 +

    source

    pub fn cmp_ofs(&self) -> &[usize]

    【Require: ビルド済み】 頂点番号から、その属する強連結成分の番号を検索できる スライスを返します。

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -139,11 +139,11 @@ 
    §Example
    scc.build(); assert_eq!(scc.cmp_of(0), 4); assert_eq!(scc.cmp_of(1), 3);
    -
    source

    pub fn quotient_graph(&self) -> Vec<Vec<usize>>

    【Require: ビルド済み】 +

    source

    pub fn quotient_graph(&self) -> Vec<Vec<usize>>

    【Require: ビルド済み】 辺の重複と自己辺を除いた商グラフを構築して返します。

    -
    §計算量
    +
    計算量

    O(N)

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -157,12 +157,12 @@ 
    §Example
    let g = scc.quotient_graph(); let expected = vec![vec![1], vec![], vec![4], vec![4], vec![]]; assert_eq!(g, expected);
    -
    source

    pub fn quotient_set(&self) -> Vec<Vec<usize>>

    【Require: ビルド済み】 +

    source

    pub fn quotient_set(&self) -> Vec<Vec<usize>>

    【Require: ビルド済み】 各強連結成分に属する頂点全体の集合を、Self::ord() と同じ トポロジカル順序順序で返します。

    -
    §計算量
    +
    計算量

    O(N)

    -
    §Example
    +
    Example
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -176,9 +176,9 @@ 
    §Example
    let g = scc.quotient_set(); let expected = vec![vec![3], vec![4, 5], vec![2], vec![1], vec![0]]; assert_eq!(g, expected);
    -
    source

    pub fn build(&mut self)

    【Require: 未ビルド】 +

    source

    pub fn build(&mut self)

    【Require: 未ビルド】 ビルドします。

    -
    §Examples
    +
    Examples
    use scc::Scc;
     
     let mut scc = Scc::new(6);
    @@ -188,19 +188,19 @@ 
    §Examples
    scc.add_edge(4, 5); scc.add_edge(5, 4); scc.build();
    -

    Trait Implementations§

    source§

    impl Clone for Scc

    source§

    fn clone(&self) -> Scc

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Scc

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Scc

    source§

    fn default() -> Scc

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Scc

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Scc

    source§

    fn eq(&self, other: &Scc) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for Scc

    source§

    impl StructuralPartialEq for Scc

    Auto Trait Implementations§

    §

    impl Freeze for Scc

    §

    impl RefUnwindSafe for Scc

    §

    impl Send for Scc

    §

    impl Sync for Scc

    §

    impl Unpin for Scc

    §

    impl UnwindSafe for Scc

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Scc

    source§

    fn clone(&self) -> Scc

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Scc

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Scc

    source§

    fn default() -> Scc

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Scc

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<Scc> for Scc

    source§

    fn eq(&self, other: &Scc) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Scc

    source§

    impl StructuralEq for Scc

    source§

    impl StructuralPartialEq for Scc

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Scc

    §

    impl Send for Scc

    §

    impl Sync for Scc

    §

    impl Unpin for Scc

    §

    impl UnwindSafe for Scc

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 203a8796..e61a4a80 100644 --- a/search-index.js +++ b/search-index.js @@ -1,4 +1,75 @@ -var searchIndex = new Map(JSON.parse('[["accum",{"t":"FHHHNNNNNNNNHHNNNNHHHHNHHHHHHNNNNHH","n":["Skipped","add","add_inv","and","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","eq","fmt","for_each","for_each_mut","from","hash","into","into_iter","max","min","mul","mul_inv","next","or","rfor_each","rfor_each_mut","skipped","skipped_max","skipped_min","to_owned","try_from","try_into","type_id","xor","xor_inv"],"q":[[0,"accum"],[35,"core::marker"],[36,"core::ops::arith"],[37,"core::ops::bit"],[38,"core::clone"],[39,"core::default"],[40,"core::cmp"],[41,"core::fmt"],[42,"core::ops::function"],[43,"core::hash"],[44,"core::option"],[45,"alloc::vec"],[46,"core::result"],[47,"core::any"]],"i":"````Ab0000000``0000````0``````0000``","f":"`{{{f{b{d{c}}}}}h{jl}}{{{f{b{d{c}}}}}h{jn}}{{{f{b{d{c}}}}}h{jA`}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{{Ab{ceg}}}}}{{Ab{ceg}}}AdAdAd}{{f{f{bc}}}h{}}{fh}{{}{{Ab{ceg}}}AfAfAf}{{{f{{Ab{ceg}}}}{f{{Ab{ceg}}}}}AhAjAjAj}{{{f{{Ab{ceg}}}}{f{bAl}}}AnB`B`B`}{{{f{{d{c}}}}e}h{}{{Bb{{f{c}}{f{c}}}}}}{{{f{b{d{c}}}}e}h{}{{Bb{{f{bc}}{f{bc}}}}}}{cc{}}{{{f{{Ab{ceg}}}}{f{bi}}}hBdBdBdBf}{{}c{}}0{{{f{b{d{c}}}}}h{jBh}}0{{{f{b{d{c}}}}}h{jBj}}{{{f{b{d{c}}}}}h{jBl}}{{{f{b{Ab{ceg}}}}}{{Bn{i}}}{}{{Bb{{f{c}}{f{c}}}{{C`{c}}}}}{{Bb{}{{C`{c}}}}}{}}{{{f{b{d{c}}}}}h{jCb}}98{{{f{{d{c}}}}eg}{{Ab{ceg}}}{}{{Bb{{f{c}}{f{c}}}{{C`{c}}}}}{{Bb{}{{C`{c}}}}}}{{{f{{d{c}}}}c}{{Cd{c}}}{jBh}}0{fc{}}{c{{Cf{e}}}{}{}}{{}{{Cf{c}}}{}}{fCh}{{{f{b{d{c}}}}}h{jCj}}0","D":"d","p":[[0,"mut"],[1,"slice"],[1,"reference"],[1,"unit"],[10,"Copy",35],[10,"AddAssign",36],[10,"SubAssign",36],[10,"BitAndAssign",37],[5,"Skipped",0],[10,"Clone",38],[10,"Default",39],[1,"bool"],[10,"PartialEq",40],[5,"Formatter",41],[8,"Result",41],[10,"Debug",41],[10,"FnMut",42],[10,"Hash",43],[10,"Hasher",43],[10,"Ord",40],[10,"MulAssign",36],[10,"DivAssign",36],[6,"Option",44],[17,"Output"],[10,"BitOrAssign",37],[5,"Vec",45],[6,"Result",46],[5,"TypeId",47],[10,"BitXorAssign",37]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACEAAwAAAA4AEAAAABIAEQA="}],["advance",{"t":"HH","n":["advance_until","advance_visit_until"],"q":[[0,"advance"],[2,"core::ops::function"]],"i":"``","f":"{{{f{bd}}{f{{h{c}}}}e}j{}{{A`{{f{c}}}{{l{n}}}}}}{{{f{bd}}{f{{h{c}}}}eg}j{}{{A`{{f{c}}}{{l{n}}}}}{{A`{d{f{c}}}}}}","D":"f","p":[[0,"mut"],[1,"usize"],[1,"reference"],[1,"slice"],[1,"unit"],[17,"Output"],[1,"bool"],[10,"FnMut",2]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["avl_tree",{"t":"FFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AvlTree","IntoIter","Iter","append","back","back_mut","binary_search","binary_search_by","binary_search_by_key","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","default","eq","","fmt","from","","","from_iter","front","front_mut","get","get_mut","hash","index","insert","into","","","into_iter","","","","is_empty","iter","len","lower_bound","new","next","","next_back","partial_cmp","partition_point","pop_back","pop_front","push_back","push_front","remove","split_off","to_owned","try_from","","","try_into","","","type_id","","","upper_bound"],"q":[[0,"avl_tree"],[68,"core::option"],[69,"core::result"],[70,"core::cmp"],[71,"core::borrow"],[72,"core::ops::function"],[73,"core::clone"],[74,"core::fmt"],[75,"core::iter::traits::collect"],[76,"core::hash"],[77,"core::any"]],"i":"```d00000C`Cb210222222222102222222221021022222221012222222221021021022","f":"```{{{f{b{d{c}}}}{f{b{d{c}}}}}h{}}{{{f{{d{c}}}}}{{j{{f{c}}}}}{}}{{{f{b{d{c}}}}}{{j{{f{bc}}}}}{}}{{{f{{d{e}}}}{f{c}}}{{n{ll}}}A`{{Ab{c}}}}{{{f{{d{c}}}}e}{{n{ll}}}{}{{Ah{{f{c}}}{{Ad{Af}}}}}}{{{f{{d{c}}}}{f{e}}g}{{n{ll}}}{}A`{{Ah{{f{c}}}{{Ad{e}}}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{{d{c}}}}}{{d{c}}}Aj}{{f{f{bc}}}h{}}{fh}{{{f{{d{c}}}}{f{{d{c}}}}}AfA`}{{}{{d{c}}}{}}{{{f{{d{e}}}}{f{{Al{c}}}}}An{}{{B`{c}}B`}}{{{f{{d{c}}}}{f{{d{c}}}}}AnB`}{{{f{{d{c}}}}{f{bBb}}}BdBf}{cc{}}00{e{{d{c}}}{}{{Bj{}{{Bh{c}}}}}}{{{f{{d{c}}}}}{{j{{f{c}}}}}{}}{{{f{b{d{c}}}}}{{j{{f{bc}}}}}{}}{{{f{{d{c}}}}l}{{j{{f{c}}}}}{}}{{{f{b{d{c}}}}l}{{j{{f{bc}}}}}{}}{{{f{{d{c}}}}{f{be}}}hBlBn}{{{f{{d{c}}}}l}{{f{e}}}{}{}}{{{f{b{d{c}}}}lc}h{}}{{}c{}}0000{{{f{{d{c}}}}}e{}{}}{{{d{c}}}e{}{}}{{{f{{d{c}}}}}An{}}{{{f{{d{c}}}}}{{C`{c}}}{}}{{{f{{d{c}}}}}l{}}{{{f{{d{e}}}}{f{c}}}lA`{{Ab{c}}}}{{}{{d{c}}}{}}{{{f{b{C`{c}}}}}{{j{e}}}{}{}}{{{f{b{Cb{c}}}}}{{j{e}}}{}{}}1{{{f{{d{c}}}}{f{{d{c}}}}}{{j{Af}}}Cd}{{{f{{d{c}}}}e}l{}{{Ah{{f{c}}}{{Ad{An}}}}}}{{{f{b{d{c}}}}}{{j{c}}}{}}0{{{f{b{d{c}}}}c}h{}}0{{{f{b{d{c}}}}l}{{j{c}}}{}}{{{f{b{d{c}}}}l}{{d{c}}}{}}{fc{}}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{fCf}00=","D":"Db","p":[[0,"mut"],[5,"AvlTree",0],[1,"reference"],[1,"unit"],[6,"Option",68],[1,"usize"],[6,"Result",69],[10,"Ord",70],[10,"Borrow",71],[17,"Output"],[6,"Ordering",70],[10,"FnMut",72],[10,"Clone",73],[1,"slice"],[1,"bool"],[10,"PartialEq",70],[5,"Formatter",74],[8,"Result",74],[10,"Debug",74],[17,"Item"],[10,"IntoIterator",75],[10,"Hash",76],[10,"Hasher",76],[5,"Iter",0],[5,"IntoIter",0],[10,"PartialOrd",70],[5,"TypeId",77]],"r":[],"b":[[20,"impl-PartialEq%3C%5BA%5D%3E-for-AvlTree%3CT%3E"],[21,"impl-PartialEq-for-AvlTree%3CT%3E"],[39,"impl-IntoIterator-for-%26AvlTree%3CT%3E"],[40,"impl-IntoIterator-for-AvlTree%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACMABgAKAA0AGwAAACAAAQAmAAMALwAEADoACQA="}],["bfs",{"t":"HHHHH","n":["calc_dist","calc_dist_restore","find_path","tree_diamter","tree_diamter_restore"],"q":[[0,"bfs"],[5,"alloc::vec"],[6,"core::option"]],"i":"`````","f":"{{b{h{{f{{d{b}}}}}}}{{d{j}}}}{{b{h{{f{{d{b}}}}}}}{{l{{d{j}}{d{b}}}}}}{{bb{h{{f{{d{b}}}}}}}{{n{{d{b}}}}}}{{{h{{f{{d{b}}}}}}}{{l{{A`{b}}j}}}}{{{h{{f{{d{b}}}}}}}{{l{{d{b}}j}}}}","D":"j","p":[[1,"usize"],[5,"Vec",5],[1,"slice"],[1,"reference"],[1,"u32"],[1,"tuple"],[6,"Option",6],[1,"array"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["bfs01",{"t":"PGPNNHHNNNNNNNNNNNN","n":["One","Weight","Zero","borrow","borrow_mut","calc_dist","calc_dist_restore","clone","clone_into","clone_to_uninit","eq","fmt","from","hash","into","to_owned","try_from","try_into","type_id"],"q":[[0,"bfs01"],[19,"alloc::vec"],[20,"core::fmt"],[21,"core::hash"],[22,"core::result"],[23,"core::any"]],"i":"h`000``000000000000","f":"```{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{f{b{{n{{l{{j{fh}}}}}}}}}{{l{A`}}}}{{f{b{{n{{l{{j{fh}}}}}}}}}{{j{{l{A`}}{l{f}}}}}}{{{b{h}}}h}{{b{b{dc}}}Ab{}}{bAb}{{{b{h}}{b{h}}}Ad}{{{b{h}}{b{dAf}}}Ah}{cc{}}{{{b{h}}{b{dc}}}AbAj}{{}c{}}{bc{}}{c{{Al{e}}}{}{}}{{}{{Al{c}}}{}}{bAn}","D":"h","p":[[1,"reference"],[0,"mut"],[1,"usize"],[6,"Weight",0],[1,"tuple"],[5,"Vec",19],[1,"slice"],[1,"u32"],[1,"unit"],[1,"bool"],[5,"Formatter",20],[8,"Result",20],[10,"Hasher",21],[6,"Result",22],[5,"TypeId",23]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8ABAAAAAUACAAEAA4AAAAQAAMA"}],["binary",{"t":"KMMMHMH","n":["Pow","is_nonone","is_nonzero","is_odd","operator_binary","shr1","value_binary"],"q":[[0,"binary"],[7,"core::ops::function"]],"i":"`b00`0`","f":"`{{{d{b}}}f}00{{cegik}g{}b{}{{j{{d{c}}}{{h{c}}}}}{{j{{d{c}}g}{{h{g}}}}}}{{{d{lb}}}n}{{cecg}c{}b{{j{{d{c}}{d{c}}}{{h{c}}}}}}","D":"A`","p":[[10,"Pow",0],[1,"reference"],[1,"bool"],[17,"Output"],[10,"FnMut",7],[0,"mut"],[1,"unit"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["bitutils",{"t":"FFKNNNNNNNNNNNHNNNNNNNNNNNNNNNNMHNNNNNNNNMM","n":["Combinations","Subsets","Unsigned","bit_length","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","combinations","default","","eq","","fmt","","from","","hash","","into","","into_iter","","next","","one","subsets","to_owned","","try_from","","try_into","","type_id","","wrapping_neg","zero"],"q":[[0,"bitutils"],[43,"bitutils::combinations"],[44,"core::clone"],[45,"bitutils::subsets"],[46,"core::default"],[47,"core::cmp"],[48,"core::fmt"],[49,"core::hash"],[50,"core::option"],[51,"core::result"],[52,"core::any"]],"i":"```A`hl10101010`10101010101010102`1010101022","f":"```{{}b}{d{{d{c}}}{}}0{{{d{f}}}{{d{fc}}}{}}0{{{d{{h{c}}}}}{{h{c}}}j}{{{d{{l{c}}}}}{{l{c}}}j}{{d{d{fc}}}n{}}0{dn}0{{bb}{{h{c}}}A`}{{}{{h{c}}}Ab}{{}{{l{c}}}Ab}{{{d{{h{c}}}}{d{{h{c}}}}}AdAf}{{{d{{l{c}}}}{d{{l{c}}}}}AdAf}{{{d{{h{c}}}}{d{fAh}}}AjAl}{{{d{{l{c}}}}{d{fAh}}}AjAl}{cc{}}0{{{d{{h{c}}}}{d{fe}}}nAnB`}{{{d{{l{c}}}}{d{fe}}}nAnB`}{{}c{}}000{{{d{f{h{c}}}}}{{Bb{e}}}A`{}}{{{d{f{l{c}}}}}{{Bb{e}}}A`{}}{{}A`}{c{{l{c}}}A`}{dc{}}0{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{dBf}0{A`A`}6","D":"Ad","p":[[1,"u32"],[1,"reference"],[0,"mut"],[5,"Combinations",0,43],[10,"Clone",44],[5,"Subsets",0,45],[1,"unit"],[10,"Unsigned",0],[10,"Default",46],[1,"bool"],[10,"PartialEq",47],[5,"Formatter",48],[8,"Result",48],[10,"Debug",48],[10,"Hash",49],[10,"Hasher",49],[6,"Option",50],[6,"Result",51],[5,"TypeId",52]],"r":[[0,43],[1,45],[14,43],[32,45]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACEABQAEAAoAEAAFABgAAQAcAAQAIgAJAA=="}],["bitvec",{"t":"FFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BitVec","Iter","bitand_assign","bitor_assign","bitxor_assign","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","eq","fmt","","format","from","","from_01str","from_iter","hash","into","","into_iter","","is_empty","iter","len","new","next","push","set","shl_assign","","","","","","","","","","","","shr_assign","","","","","","","","","","","","test","to_owned","to_string","try_from","","try_into","","type_id","","unset"],"q":[[0,"bitvec"],[67,"core::fmt"],[68,"alloc::string"],[69,"core::iter::traits::collect"],[70,"core::hash"],[71,"core::option"],[72,"core::result"],[73,"core::any"]],"i":"``d00Al1011111111101111010111110111111111111111111111111111110101011","f":"``{{{f{bd}}{f{d}}}h}00{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{d}}}d}{{f{f{bc}}}h{}}{fh}{{}d}{{{f{d}}{f{d}}}j}{{{f{d}}{f{bl}}}n}0{{{f{d}}A`A`}Ab}{cc{}}0{{{f{Ad}}}d}{cd{{Ah{}{{Af{j}}}}}}{{{f{d}}{f{bc}}}hAj}{{}c{}}00{{{f{d}}}Al}{{{f{d}}}j}1{{{f{d}}}An}{And}{{{f{bAl}}}{{B`{j}}}}{{{f{bd}}j}h}{{{f{bd}}An}h}{{{f{bd}}Bb}h}{{{f{bd}}Bd}h}{{{f{bd}}Bf}h}{{{f{bd}}Bh}h}{{{f{bd}}Bj}h}{{{f{bd}}Bl}h}{{{f{bd}}Bn}h}{{{f{bd}}C`}h}8{{{f{bd}}Cb}h}{{{f{bd}}Cd}h}{{{f{bd}}Cf}h}038976125:4;{{{f{d}}An}j}{fc{}}{fAb}{c{{Ch{e}}}{}{}}0{{}{{Ch{c}}}{}}0{fCj}0{{{f{bd}}An}h}","D":"Bb","p":[[0,"mut"],[5,"BitVec",0],[1,"reference"],[1,"unit"],[1,"bool"],[5,"Formatter",67],[8,"Result",67],[1,"char"],[5,"String",68],[1,"str"],[17,"Item"],[10,"IntoIterator",69],[10,"Hasher",70],[5,"Iter",0],[1,"usize"],[6,"Option",71],[1,"u16"],[1,"u32"],[1,"isize"],[1,"i128"],[1,"i64"],[1,"i32"],[1,"i16"],[1,"i8"],[1,"u128"],[1,"u8"],[1,"u64"],[6,"Result",72],[5,"TypeId",73]],"r":[],"b":[[14,"impl-Display-for-BitVec"],[15,"impl-Debug-for-BitVec"],[33,"impl-ShlAssign%3Cu16%3E-for-BitVec"],[34,"impl-ShlAssign%3Cu32%3E-for-BitVec"],[35,"impl-ShlAssign%3Cisize%3E-for-BitVec"],[36,"impl-ShlAssign%3Ci128%3E-for-BitVec"],[37,"impl-ShlAssign%3Ci64%3E-for-BitVec"],[38,"impl-ShlAssign%3Ci32%3E-for-BitVec"],[39,"impl-ShlAssign%3Ci16%3E-for-BitVec"],[40,"impl-ShlAssign%3Ci8%3E-for-BitVec"],[41,"impl-ShlAssign%3Cusize%3E-for-BitVec"],[42,"impl-ShlAssign%3Cu128%3E-for-BitVec"],[43,"impl-ShlAssign%3Cu8%3E-for-BitVec"],[44,"impl-ShlAssign%3Cu64%3E-for-BitVec"],[45,"impl-ShrAssign%3Cu64%3E-for-BitVec"],[46,"impl-ShrAssign%3Ci8%3E-for-BitVec"],[47,"impl-ShrAssign%3Cisize%3E-for-BitVec"],[48,"impl-ShrAssign%3Cu32%3E-for-BitVec"],[49,"impl-ShrAssign%3Ci128%3E-for-BitVec"],[50,"impl-ShrAssign%3Ci64%3E-for-BitVec"],[51,"impl-ShrAssign%3Cu8%3E-for-BitVec"],[52,"impl-ShrAssign%3Cu128%3E-for-BitVec"],[53,"impl-ShrAssign%3Ci32%3E-for-BitVec"],[54,"impl-ShrAssign%3Cu16%3E-for-BitVec"],[55,"impl-ShrAssign%3Ci16%3E-for-BitVec"],[56,"impl-ShrAssign%3Cusize%3E-for-BitVec"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABgADAA0AFQABABkAAQAfAAAAIgAXADsABwA="}],["bsgs",{"t":"FNNNNNNNNNNNNNN","n":["Bsgs","borrow","borrow_mut","clone","clone_into","clone_to_uninit","fmt","from","into","log","new","to_owned","try_from","try_into","type_id"],"q":[[0,"bsgs"],[15,"core::clone"],[16,"core::fmt"],[17,"core::option"],[18,"core::marker"],[19,"core::hash"],[20,"core::cmp"],[21,"core::ops::function"],[22,"core::result"],[23,"core::any"]],"i":"`f0000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{ce}}}}}{{f{ce}}}hh}{{b{b{dc}}}j{}}{bj}{{{b{{f{ce}}}}{b{dl}}}nA`{}}{cc{}}{{}c{}}{{{b{{f{ce}}}}c}{{Ad{Ab}}}{AfAhAj}{{An{cc}{{Al{c}}}}}}{{cAbegi}{{f{ce}}}{AfAhAj}{{An{cc}{{Al{c}}}}}{{An{c}{{Al{c}}}}}{{An{}{{Al{c}}}}}}{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}","D":"l","p":[[1,"reference"],[0,"mut"],[5,"Bsgs",0],[10,"Clone",15],[1,"unit"],[5,"Formatter",16],[8,"Result",16],[10,"Debug",16],[1,"u64"],[6,"Option",17],[10,"Copy",18],[10,"Hash",19],[10,"Eq",20],[17,"Output"],[10,"Fn",21],[6,"Result",22],[5,"TypeId",23]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAkAAgACAAUADAADAA=="}],["cht",{"t":"FGGKFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BTreeCht","Concave","Convex","ConvexOrConcave","Quadratic","VecCht","X","add","","","borrow","","","","","borrow_mut","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","eq","","","eval","","","fmt","","","","","from","","","","","","hash","","","","","into","","","","","mul","multieval","","neg","negate_if_concave","","","new","","square","sub","to_owned","","","","","try_from","","","","","try_into","","","","","type_id","","","",""],"q":[[0,"cht"],[96,"core::convert"],[97,"core::clone"],[98,"core::default"],[99,"core::cmp"],[100,"core::fmt"],[101,"core::hash"],[102,"alloc::vec"],[103,"core::iter::traits::iterator"],[104,"core::result"],[105,"core::any"]],"i":"```````dnhAbAd432104321043210432104324324324321043210432210432104322432l21543321543215432154321543","f":"```````{{{f{b{d{c}}}}h}jl}{{{f{b{n{c}}}}h}jl}{{hc}e{{A`{h}}}{}}{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Ab}}}Ab}{{{f{Ad}}}Ad}{{{f{{d{c}}}}}{{d{c}}}Af}{{{f{{n{c}}}}}{{n{c}}}Af}{{{f{h}}}h}{{f{f{bc}}}j{}}0000{fj}0000{{}{{d{c}}}Ah}{{}{{n{c}}}Ah}{{}h}{{{f{{d{c}}}}{f{{d{c}}}}}AjAl}{{{f{{n{c}}}}{f{{n{c}}}}}AjAl}{{{f{h}}{f{h}}}Aj}{{{f{b{d{c}}}}An}Anl}{{{f{{n{c}}}}An}Anl}{{hAn}An}{{{f{Ab}}{f{bB`}}}Bb}{{{f{Ad}}{f{bB`}}}Bb}{{{f{{d{c}}}}{f{bB`}}}BbBd}{{{f{{n{c}}}}{f{bB`}}}BbBd}{{{f{h}}{f{bB`}}}Bb}{cc{}}000{Anh}1{{{f{Ab}}{f{bc}}}jBf}{{{f{Ad}}{f{bc}}}jBf}{{{f{{d{c}}}}{f{be}}}jBhBf}{{{f{{n{c}}}}{f{be}}}jBhBf}{{{f{h}}{f{bc}}}jBf}{{}c{}}0000{{hc}e{{A`{h}}}{}}{{{f{b{d{c}}}}e}{{Bj{An}}}l{{Bn{}{{Bl{An}}}}}}{{{f{{n{c}}}}e}{{Bj{An}}}l{{Bn{}{{Bl{An}}}}}}{hc{}}{AnAn}00{{}{{d{c}}}l}{{}{{n{c}}}l}{hh}7{fc{}}0000{c{{C`{e}}}{}{}}0000{{}{{C`{c}}}{}}0000{fCb}0000","D":"Bd","p":[[0,"mut"],[5,"VecCht",0],[1,"reference"],[5,"Quadratic",0],[1,"unit"],[10,"ConvexOrConcave",0],[5,"BTreeCht",0],[10,"Into",96],[6,"Convex",0],[6,"Concave",0],[10,"Clone",97],[10,"Default",98],[1,"bool"],[10,"PartialEq",99],[1,"i64"],[5,"Formatter",100],[8,"Result",100],[10,"Debug",100],[10,"Hasher",101],[10,"Hash",101],[5,"Vec",102],[17,"Item"],[10,"Iterator",103],[6,"Result",104],[5,"TypeId",105]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAE4ABAAIACkANgAAADgABABCAB4A"}],["cipolla",{"t":"TTKTH","n":["ONE","TWO","Unsigned","ZERO","cipolla_sqrt"],"q":[[0,"cipolla"],[5,"core::option"]],"i":"d0`0`","f":"````{{cc}{{b{c}}}d}","D":"`","p":[[6,"Option",5],[10,"Unsigned",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA"}],["cmpmore",{"t":"KHNQHNQ","n":["CmpMore","change_max","","","change_min","",""],"q":[[0,"cmpmore"],[7,"core::cmp"]],"i":"``j``0`","f":"`{{{d{bc}}c}fh}{{{d{bj}}j}f}`10`","D":"A`","p":[[0,"mut"],[1,"reference"],[1,"unit"],[10,"PartialOrd",7],[10,"CmpMore",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["convex_hull",{"t":"HHHHH","n":["caliper","ccw","convex_hull","is_convex","sqmag"],"q":[[0,"convex_hull"],[5,"alloc::vec"]],"i":"`````","f":"{{{h{{f{{d{b}}}}}}}{{j{b{d{{d{b}}}}}}}}{{{d{b}}{d{b}}{d{b}}}b}{{{h{{f{{d{b}}}}}}}{{l{{d{b}}}}}}{{{h{{f{{d{b}}}}}}}n}{{{d{b}}{d{b}}}b}","D":"j","p":[[1,"i64"],[1,"array"],[1,"slice"],[1,"reference"],[1,"tuple"],[5,"Vec",5],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["dfs",{"t":"H","n":["calc_reachability"],"q":[[0,"dfs"],[1,"alloc::vec"]],"i":"`","f":"{{b{h{{f{{d{b}}}}}}}{{d{j}}}}","D":"b","p":[[1,"usize"],[5,"Vec",1],[1,"slice"],[1,"reference"],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["dijkstra_radix_heap",{"t":"HH","n":["calc_dist","calc_dist_restore"],"q":[[0,"dijkstra_radix_heap"],[2,"alloc::vec"]],"i":"``","f":"{{b{l{{j{{h{{f{bd}}}}}}}}}{{h{d}}}}{{b{l{{j{{h{{f{bd}}}}}}}}}{{f{{h{d}}{h{b}}}}}}","D":"f","p":[[1,"usize"],[1,"u32"],[1,"tuple"],[5,"Vec",2],[1,"slice"],[1,"reference"]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAAAEAAAAAEA","e":"OjAAAAAAAAA="}],["dinic",{"t":"FFFKNNNNNNNONNNNNNNNNNNNNNONNNNNNNONNNNMNNNNNONNNNNNNNNNNNM","n":["Dinic","Edge","EdgeKey","Value","add_edge","borrow","","","borrow_mut","","","cap","change_edge","clone","","","clone_into","","","clone_to_uninit","","","eq","","","flow","","flow_with_limit","fmt","","","from","","","","get_edge","get_edges","get_excess","get_network","infinity","into","","","min_cut","new","to","to_owned","","","try_from","","","try_into","","","type_id","","","zero"],"q":[[0,"dinic"],[59,"core::clone"],[60,"core::cmp"],[61,"core::fmt"],[62,"alloc::vec"],[63,"core::result"],[64,"core::any"]],"i":"````d0Abj2101221021021021021221021012222l3213323213213213210","f":"````{{{f{b{d{c}}}}hhc}jl}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00`{{{f{b{d{c}}}}jcc}nl}{{{f{{d{c}}}}}{{d{c}}}A`}{{{f{{Ab{c}}}}}{{Ab{c}}}A`}{{{f{j}}}j}{{f{f{bc}}}n{}}00{fn}00{{{f{{d{c}}}}{f{{d{c}}}}}AdAf}{{{f{{Ab{c}}}}{f{{Ab{c}}}}}AdAf}{{{f{j}}{f{j}}}Ad}{{{f{b{d{c}}}}hh}cl}`{{{f{b{d{c}}}}hhc}cl}{{{f{{d{c}}}}{f{bAh}}}Ajl}{{{f{{Ab{c}}}}{f{bAh}}}AjAl}{{{f{j}}{f{bAh}}}Aj}{cc{}}00`{{{f{{d{c}}}}j}{{Ab{c}}}l}{{{f{{d{c}}}}}{{An{{Ab{c}}}}}l}{{{f{{d{c}}}}}{{An{c}}}l}{{{f{{d{c}}}}}{{An{{An{{Ab{c}}}}}}}l}{{}l}{{}c{}}00{{{f{{d{c}}}}h}{{An{Ad}}}l}{h{{d{c}}}l}`{fc{}}00{c{{B`{e}}}{}{}}00{{}{{B`{c}}}{}}00{fBb}007","D":"Cf","p":[[0,"mut"],[5,"Dinic",0],[1,"reference"],[1,"usize"],[5,"EdgeKey",0],[10,"Value",0],[1,"unit"],[10,"Clone",59],[5,"Edge",0],[1,"bool"],[10,"PartialEq",60],[5,"Formatter",61],[8,"Result",61],[10,"Debug",61],[5,"Vec",62],[6,"Result",63],[5,"TypeId",64]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACAABAAGAAUADgALAB0AAgAvAAsA"}],["dual_segtree",{"t":"FKRNNNNNNNNNNNNNNNNNMNNNNNMNNNNN","n":["DualSegtree","Ops","Value","apply","borrow","borrow_mut","clone","clone_into","clone_to_uninit","collect_vec","default","eq","fmt","from","","from_iter","get","get_cloned","get_copied","get_mut","identity","into","into_vec","is_empty","len","new","op","op_assign_from_right","to_owned","try_from","try_into","type_id"],"q":[[0,"dual_segtree"],[32,"core::ops::range"],[33,"core::clone"],[34,"alloc::vec"],[35,"core::default"],[36,"core::cmp"],[37,"core::fmt"],[38,"core::iter::traits::collect"],[39,"core::iter::traits::exact_size"],[40,"core::result"],[41,"core::any"]],"i":"``jd0000000000000000100000110000","f":"```{{{f{b{d{c}}}}ef}hj{{n{l}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{{d{c}}}}}{{d{c}}}{A`j}}{{f{f{bc}}}h{}}{fh}{{{f{b{d{c}}}}}Abj}{{}{{d{c}}}{Adj}}{{{f{{d{c}}}}{f{{d{c}}}}}Af{Ahj}}{{{f{{d{c}}}}{f{bAj}}}Alj}{Ab{{d{c}}}j}{cc{}}{c{{d{e}}}{{B`{}{{An{}}}}}j}{{{f{b{d{c}}}}l}fj}{{{f{b{d{c}}}}l}{}j}0{{{f{b{d{c}}}}l}{{f{b}}}j}{{}c{}}0{{{d{c}}}Abj}{{{f{{d{c}}}}}Afj}{{{f{{d{c}}}}}lj}{e{{d{g}}}{{Bb{}{{An{}}}}}{{B`{}{{Bd{c}}{An{}}}}}j}{{cc}c{}}{{{f{bc}}c}h{}}{fc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{fBh}","D":"Bf","p":[[0,"mut"],[5,"DualSegtree",0],[1,"reference"],[1,"unit"],[10,"Ops",0],[1,"usize"],[10,"RangeBounds",32],[10,"Clone",33],[5,"Vec",34],[10,"Default",35],[1,"bool"],[10,"PartialEq",36],[5,"Formatter",37],[8,"Result",37],[17,"Item"],[10,"IntoIterator",38],[10,"ExactSizeIterator",39],[17,"IntoIter"],[6,"Result",40],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA0ABAAFAAQACwADABAAAAAdAAMA"}],["elim",{"t":"H","n":["column_reduce"],"q":[[0,"elim"],[1,"alloc::vec"]],"i":"`","f":"{{{j{b{h{{f{d}}}}}}}l}","D":"b","p":[[0,"mut"],[1,"bool"],[5,"Vec",1],[1,"slice"],[1,"reference"],[1,"usize"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["erato",{"t":"KFKFFFFFFMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNM","n":["Int","LpdSieve","PrimeFactors","PrimeFactorsByLookup","PrimeFactorsByTrialDivision","PrimeNumbers","Rle","Sieve","Unique","as_usize","borrow","","","","","","","borrow_mut","","","","","","","clone","","clone_into","","clone_to_uninit","","default","","eq","","fmt","","from","","","","","","","from_usize","into","","","","","","","into_iter","","","","","is_empty","","is_prime","","len","","lpd","new","","next","","","","","one","prime_factors","","prime_numbers","","rle","","","","to_owned","","try_from","","","","","","","try_into","","","","","","","two","type_id","","","","","","","unique","","","","with_len","","zero"],"q":[[0,"erato"],[110,"erato::int"],[111,"erato::lpd_sieve"],[112,"erato::sieve"],[113,"core::fmt"],[114,"erato::converters"],[115,"core::option"],[116,"erato::sieve_base"],[117,"core::result"],[118,"core::any"]],"i":"`````````bAfAlAnB`Bbjl6543210101010101010654321076543210654321010101106543271010Aj0432176543217654321876543210043218","f":"`````````{bd}{f{{f{c}}}{}}000000{{{f{h}}}{{f{hc}}}{}}000000{{{f{j}}}j}{{{f{l}}}l}{{f{f{hc}}}n{}}0{fn}0{{}j}{{}l}{{{f{j}}{f{j}}}A`}{{{f{l}}{f{l}}}A`}{{{f{j}}{f{hAb}}}Ad}{{{f{l}}{f{hAb}}}Ad}{cc{}}000000{db}{{}c{}}00000000000{{{f{j}}}A`}{{{f{l}}}A`}{{{f{hj}}c}A`b}{{{f{hl}}c}A`b}{{{f{j}}}d}{{{f{l}}}d}{{{f{hj}}c}cb}?>{{{f{h{Af{ce}}}}}{{Ah{g}}}b{{Aj{c}}}{}}{{{f{h{Al{ce}}}}}{{Ah{g}}}b{{Aj{c}}}{}}{{{f{h{An{ce}}}}}{{Ah{g}}}`b{}}{{{f{h{B`{c}}}}}{{Ah{e}}}b{}}{{{f{h{Bb{c}}}}}{{Ah{e}}}b{}}{{}b}{{{f{hj}}c}{{Bb{c}}}b}{{{f{hl}}c}{{B`{c}}}b}{{{f{hj}}}{{An{`c}}}b}{{{f{hl}}}{{An{`c}}}b}{Aj{{Al{cAj}}}b}0{{{B`{c}}}{{Al{c{B`{c}}}}}b}{{{Bb{c}}}{{Al{c{Bb{c}}}}}b}{fc{}}0{c{{Bd{e}}}{}{}}000000{{}{{Bd{c}}}{}}000000:{fBf}000000{Aj{{Af{cAj}}}b}0{{{B`{c}}}{{Af{c{B`{c}}}}}b}{{{Bb{c}}}{{Af{c{Bb{c}}}}}b}{dj}{dl}{{}b}","D":"Fd","p":[[10,"Int",0,110],[1,"usize"],[1,"reference"],[0,"mut"],[5,"LpdSieve",0,111],[5,"Sieve",0,112],[1,"unit"],[1,"bool"],[5,"Formatter",113],[8,"Result",113],[5,"Unique",0,114],[6,"Option",115],[10,"PrimeFactors",0,114],[5,"Rle",0,114],[5,"PrimeNumbers",0,116],[5,"PrimeFactorsByTrialDivision",0,116],[5,"PrimeFactorsByLookup",0,116],[6,"Result",117],[5,"TypeId",118]],"r":[[0,110],[1,111],[2,114],[3,116],[4,116],[5,116],[6,114],[7,112],[8,114]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADwABwALABkANAAEAEIABABOAAAAUAAPAGEABgBqAAAA"}],["euclid",{"t":"KKKMHMNHHMMMM","n":["Int","Signed","Unsigned","abs","crt","div_euclid","divides","ext_gcd","gcd","increment","one","rem_euclid","zero"],"q":[[0,"euclid"],[13,"core::option"],[14,"euclid::crt"],[15,"euclid::ext_gcd"],[16,"euclid::gcd"]],"i":"```b`00``0000","f":"```{bb}{{cccc}{{f{{d{cc}}}}}h}{{bb}b}{{bb}j}{{cc}{{d{ccc}}}h}{{cc}cb}{{{n{lb}}}A`}{{}b}50","D":"Aj","p":[[10,"Int",0],[1,"tuple"],[6,"Option",13],[10,"Signed",0],[1,"bool"],[0,"mut"],[1,"reference"],[1,"unit"]],"r":[[4,14],[7,15],[8,16]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["fp",{"t":"FFKTNNNNNNHNNNNNNNNNNNNNNNNNNHNNQHNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Factorial","Fp","PrimitiveRoot","VALUE","add","","","","add_assign","","any_mod_fps_mul","binom","binom_signed","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","div","","","","div_assign","","eq","fact","falling","fft","fmt","","fp","fps_mul","from","","","","","","","","","","","","","","hash","ifft","index","into","","inv","inv_fact","m1pow","mul","","","","mul_assign","","multinom","multiset_number","neg","new","","pow","product","","sign","sub","","","","sub_assign","","sum","","to_owned","to_string","try_from","","try_into","","type_id","","value"],"q":[[0,"fp"],[88,"core::convert"],[89,"alloc::vec"],[90,"fp::factorial"],[91,"core::fmt"],[92,"core::hash"],[93,"core::iter::traits::iterator"],[94,"alloc::string"],[95,"core::result"],[96,"core::any"],[97,"fp::fourier"]],"i":"```Cnb00000`A`00101111111111100`11``011111111111111`00110111111100101111111111111110101011","f":"````{{bc}e{{d{b}}}{}}{{{f{b}}{f{b}}}c{}}{{{f{b}}c}e{{d{b}}}{}}{{b{f{b}}}c{}}{{{f{hb}}b}j}{{{f{hb}}{f{b}}}j}{{{f{{l{b}}}}{f{{l{b}}}}}{{n{b}}}}{{{f{A`}}AbAb}b}{{{f{A`}}AbAd}b}{f{{f{c}}}{}}0{{{f{h}}}{{f{hc}}}{}}0{{{f{b}}}b}{{f{f{hc}}}j{}}{fj}<=:;98{{{f{b}}{f{b}}}Af}{{{f{A`}}Ab}b}8{{{f{h{l{b}}}}}j}{{{f{b}}{f{hAh}}}Aj}0`{{ce}{{n{b}}}{{Al{{l{b}}}}}{{Al{{l{b}}}}}}{cc{}}{Anb}{B`b}{Abb}3{Bbb}{Bdb}{Bfb}{Bhb}{Bjb}{Blb}{Bnb}{C`b}{Adb}{{{f{b}}{f{hc}}}jCb}{{{f{h{l{b}}}}}j}{{{f{A`}}Ab}{{f{c}}}{}}{{}c{}}0{bb}{{{f{A`}}Ab}b}?{{bc}e{{d{b}}}{}}{{b{f{b}}}c{}}{{{f{b}}c}e{{d{b}}}{}}{{{f{b}}{f{b}}}c{}}{{{f{hb}}b}j}{{{f{hb}}{f{b}}}j}{{{f{A`}}{f{{l{Ab}}}}}b}{{{f{A`}}AbAb}b}{bc{}}{AbA`}{Blb}{{bBl}b}{cb{{Cf{}{{Cd{b}}}}}}{cb{{Cf{}{{Cd{{f{b}}}}}}}}{Abb};<=>9:21{fc{}}{fCh}{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{fCl}0{bBl}","D":"Ch","p":[[5,"Fp",0],[10,"Into",88],[1,"reference"],[0,"mut"],[1,"unit"],[1,"slice"],[5,"Vec",89],[5,"Factorial",0,90],[1,"usize"],[1,"isize"],[1,"bool"],[5,"Formatter",91],[8,"Result",91],[10,"AsRef",88],[1,"i16"],[1,"u32"],[1,"i8"],[1,"u128"],[1,"i32"],[1,"i64"],[1,"i128"],[1,"u64"],[1,"u8"],[1,"u16"],[10,"Hasher",92],[17,"Item"],[10,"Iterator",93],[5,"String",94],[6,"Result",95],[5,"TypeId",96],[10,"PrimitiveRoot",0]],"r":[[0,90],[10,97],[29,97],[33,97],[49,97]],"b":[[4,"impl-Add%3CT%3E-for-Fp%3CP%3E"],[5,"impl-Add%3C%26Fp%3CP%3E%3E-for-%26Fp%3CP%3E"],[6,"impl-Add%3CT%3E-for-%26Fp%3CP%3E"],[7,"impl-Add%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[8,"impl-AddAssign-for-Fp%3CP%3E"],[9,"impl-AddAssign%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[20,"impl-Div%3C%26Fp%3CP%3E%3E-for-%26Fp%3CP%3E"],[21,"impl-Div%3CT%3E-for-Fp%3CP%3E"],[22,"impl-Div%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[23,"impl-Div%3CT%3E-for-%26Fp%3CP%3E"],[24,"impl-DivAssign-for-Fp%3CP%3E"],[25,"impl-DivAssign%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[30,"impl-Debug-for-Fp%3CP%3E"],[31,"impl-Display-for-Fp%3CP%3E"],[35,"impl-From%3Ci16%3E-for-Fp%3CP%3E"],[36,"impl-From%3Cu32%3E-for-Fp%3CP%3E"],[37,"impl-From%3Cusize%3E-for-Fp%3CP%3E"],[39,"impl-From%3Ci8%3E-for-Fp%3CP%3E"],[40,"impl-From%3Cu128%3E-for-Fp%3CP%3E"],[41,"impl-From%3Ci32%3E-for-Fp%3CP%3E"],[42,"impl-From%3Ci64%3E-for-Fp%3CP%3E"],[43,"impl-From%3Ci128%3E-for-Fp%3CP%3E"],[44,"impl-From%3Cu64%3E-for-Fp%3CP%3E"],[45,"impl-From%3Cu8%3E-for-Fp%3CP%3E"],[46,"impl-From%3Cu16%3E-for-Fp%3CP%3E"],[47,"impl-From%3Cisize%3E-for-Fp%3CP%3E"],[56,"impl-Mul%3CT%3E-for-Fp%3CP%3E"],[57,"impl-Mul%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[58,"impl-Mul%3CT%3E-for-%26Fp%3CP%3E"],[59,"impl-Mul%3C%26Fp%3CP%3E%3E-for-%26Fp%3CP%3E"],[60,"impl-MulAssign-for-Fp%3CP%3E"],[61,"impl-MulAssign%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[68,"impl-Product-for-Fp%3CP%3E"],[69,"impl-Product%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[71,"impl-Sub%3C%26Fp%3CP%3E%3E-for-%26Fp%3CP%3E"],[72,"impl-Sub%3CT%3E-for-%26Fp%3CP%3E"],[73,"impl-Sub%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[74,"impl-Sub%3CT%3E-for-Fp%3CP%3E"],[75,"impl-SubAssign%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"],[76,"impl-SubAssign-for-Fp%3CP%3E"],[77,"impl-Sum-for-Fp%3CP%3E"],[78,"impl-Sum%3C%26Fp%3CP%3E%3E-for-Fp%3CP%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADwACgAFAAUADgANAB8AAQAkAAIAKAAJADMAAAA5AAUAQQAAAEUAAQBIAA8A"}],["fps",{"t":"QHHHHHHH","n":["fps","fps_deriv","fps_exp","fps_int","fps_inv","fps_log","fps_pow","fps_sqrt"],"q":[[0,"fps"],[8,"fp"],[9,"alloc::vec"],[10,"core::convert"]],"i":"````````","f":"`{{cb}{{f{d}}}{{j{{h{d}}}}}}0000{{cbb}{{f{d}}}{{j{{h{d}}}}}}1","D":"Ab","p":[[1,"usize"],[5,"Fp",8],[5,"Vec",9],[1,"slice"],[10,"AsRef",10]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["gco",{"t":"FFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO","n":["Gco","GcoResult","args","binary","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","default","","eq","","fmt","","from","","hash","","into","","new","solve","to_owned","","try_from","","try_into","","type_id","","unary","value"],"q":[[0,"gco"],[38,"core::fmt"],[39,"core::hash"],[40,"core::result"],[41,"core::any"]],"i":"``A`d0101010101010101010101000101010101","f":"```{{{f{bd}}{j{h}}{j{{j{l}}}}}n}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{d}}}d}{{{f{A`}}}A`}{{f{f{bc}}}n{}}0{fn}0{{}d}{{}A`}{{{f{d}}{f{d}}}Ab}{{{f{A`}}{f{A`}}}Ab}{{{f{d}}{f{bAd}}}Af}{{{f{A`}}{f{bAd}}}Af}{cc{}}0{{{f{d}}{f{bc}}}nAh}{{{f{A`}}{f{bc}}}nAh}{{}c{}}0{hd}{{{f{d}}}A`}{fc{}}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{fAl}0{{{f{bd}}h{j{l}}}n}`","D":"Aj","p":[[0,"mut"],[5,"Gco",0],[1,"reference"],[1,"usize"],[1,"array"],[1,"i64"],[1,"unit"],[5,"GcoResult",0],[1,"bool"],[5,"Formatter",38],[8,"Result",38],[10,"Hasher",39],[6,"Result",40],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABkAAwAFAA8AFwABAB0ABwA="}],["gridnei",{"t":"RFFFFFFFFFFKTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNHHQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNN","n":["Array","Encode","Grid0","Grid1","Grid2","Grid3","Grid4","Grid5","Grid6","Grid7","Grid8","GridIterator","LEN","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","encode","","","","","","","","","from","","","","","","","","","","from_fn","","","","","","","","","","","","","","","","","","","","grid4","grid4encode","grid_iter","into","","","","","","","","","","into_iter","","","","","","","","","","new","","","","","","","","","","next","","","","","","","","","","next_back","","","","","","","","","","size_hint","","","","","","","","","","try_from","","","","","","","","","","try_into","","","","","","","","","","type_id","","","","","","","","","","w","","","","","","","","",""],"q":[[0,"gridnei"],[175,"core::ops::function"],[176,"core::option"],[177,"core::result"],[178,"core::any"]],"i":"An```````````0hfjlnA`AbAdAfAh98765432108765432109876543210:9887766554433221100```987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210:876543210","f":"`````````````{b{{b{c}}}{}}000000000{{{b{d}}}{{b{dc}}}{}}000000000{f{{h{f}}}}{j{{h{j}}}}{l{{h{l}}}}{n{{h{n}}}}{A`{{h{A`}}}}{Ab{{h{Ab}}}}{Ad{{h{Ad}}}}{Af{{h{Af}}}}{Ah{{h{Ah}}}}{cc{}}000000000{{AjAjAjAje}{{An{}{{Al{c}}}}}{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjc}{{h{e}}}{{Bd{B`B`}{{Bb{}}}}}An}{{AjAjAjAjc}f{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}f{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}j{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}j{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}l{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}l{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAje}n{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}n{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}A`{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}A`{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}Ab{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}Ab{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}Ad{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}Ad{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}Af{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAjc}Af{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAjc}Ah{{Bd{B`B`}{{Bb{{Bh{{Bf{B`B`}}}}}}}}}}{{AjAjAjAje}Ah{}{{Bd{B`B`}{{Bb{c}}}}}}{{AjAjAjAj}A`}{{AjAjAj}{{h{A`}}}}`{{}c{}}0000000000000000000{c{{h{c}}}An}{{{Bh{{Bf{B`B`}}}}AjAj}f}{{{Bh{{Bf{B`B`}}}}AjAj}j}{{{Bh{{Bf{B`B`}}}}AjAj}l}{{{Bh{{Bf{B`B`}}}}AjAj}n}{{{Bh{{Bf{B`B`}}}}AjAj}A`}{{{Bh{{Bf{B`B`}}}}AjAj}Ab}{{{Bh{{Bf{B`B`}}}}AjAj}Ad}{{{Bh{{Bf{B`B`}}}}AjAj}Af}{{{Bh{{Bf{B`B`}}}}AjAj}Ah}{{{b{d{h{c}}}}}{{Bj{e}}}An{}}{{{b{df}}}{{Bj{c}}}{}}{{{b{dj}}}{{Bj{c}}}{}}{{{b{dl}}}{{Bj{c}}}{}}{{{b{dn}}}{{Bj{c}}}{}}{{{b{dA`}}}{{Bj{c}}}{}}{{{b{dAb}}}{{Bj{c}}}{}}{{{b{dAd}}}{{Bj{c}}}{}}{{{b{dAf}}}{{Bj{c}}}{}}{{{b{dAh}}}{{Bj{c}}}{}}9876543210{{{b{{h{c}}}}}{{Bf{Aj{Bj{Aj}}}}}An}{{{b{f}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{j}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{l}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{n}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{A`}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{Ab}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{Ad}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{Af}}}{{Bf{Aj{Bj{Aj}}}}}}{{{b{Ah}}}{{Bf{Aj{Bj{Aj}}}}}}{c{{Bl{e}}}{}{}}000000000{{}{{Bl{c}}}{}}000000000{bBn}000000000{{{b{{An{}{{Al{c}}}}}}}Aj{}}{{{b{f}}}Aj}{{{b{j}}}Aj}{{{b{l}}}Aj}{{{b{n}}}Aj}{{{b{A`}}}Aj}{{{b{Ab}}}Aj}{{{b{Ad}}}Aj}{{{b{Af}}}Aj}{{{b{Ah}}}Aj}","D":"Cd","p":[[1,"reference"],[0,"mut"],[5,"Grid0",0],[5,"Encode",0],[5,"Grid1",0],[5,"Grid2",0],[5,"Grid3",0],[5,"Grid4",0],[5,"Grid5",0],[5,"Grid6",0],[5,"Grid7",0],[5,"Grid8",0],[1,"usize"],[17,"Array"],[10,"GridIterator",0],[1,"isize"],[17,"Output"],[10,"FnMut",175],[1,"tuple"],[1,"array"],[6,"Option",176],[6,"Result",177],[5,"TypeId",178]],"r":[],"b":[[54,"impl-Grid0"],[55,"impl-GridIterator-for-Grid0"],[56,"impl-Grid1"],[57,"impl-GridIterator-for-Grid1"],[58,"impl-Grid2"],[59,"impl-GridIterator-for-Grid2"],[60,"impl-GridIterator-for-Grid3"],[61,"impl-Grid3"],[62,"impl-GridIterator-for-Grid4"],[63,"impl-Grid4"],[64,"impl-GridIterator-for-Grid5"],[65,"impl-Grid5"],[66,"impl-GridIterator-for-Grid6"],[67,"impl-Grid6"],[68,"impl-GridIterator-for-Grid7"],[69,"impl-Grid7"],[70,"impl-Grid8"],[71,"impl-GridIterator-for-Grid8"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJUABQABAAAAAwAIAA0AHQA1ABMAVgBZAA=="}],["gss",{"t":"KKTKMMMMHHHHMMMMMM","n":["Float","Golden","INVPHI","Int","abs","as_f64","f64_as","golden_sect","gss_by_absolute_eps","gss_by_count","gss_integer","gss_on_slice","is_finite","max","midpoint_sorted","one","two","zero"],"q":[[0,"gss"],[18,"core::cmp"],[19,"core::fmt"],[20,"core::ops::function"]],"i":"``b`0d0h````221122","f":"````{bb}{df}{fd}{{hh}h}{{ccgc}c{bh}{jl}{{A`{c}{{n{e}}}}}}{{ccgAb}c{bh}{jl}{{A`{c}{{n{e}}}}}}{{ccg}c{dh}{jl}{{A`{c}{{n{e}}}}}}{{{Af{{Ad{c}}}}}Ab{jl}}{bAh}{{bb}b}{{dd}d}{{}d}{{}b}0","D":"Bb","p":[[10,"Float",0],[10,"Int",0],[1,"f64"],[10,"Golden",0],[10,"PartialOrd",18],[10,"Debug",19],[17,"Output"],[10,"Fn",20],[1,"usize"],[1,"slice"],[1,"reference"],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAYABwA="}],["heap_slope_trick",{"t":"FFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNN","n":["HeapSlopeTrick","Summary","add_abs","add_const","add_cutoff_anti_diagonal","add_cutoff_diagonal","articulation_points","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","cumulative_min_from_left","cumulative_min_from_right","default","","eq","eval","fmt","","from","","get_argmin","get_minimum","get_tilt_maximum","get_tilt_minimum","hash","into","","merge","new","shift","sliding_window_minimum","summary","to_owned","","try_from","","try_into","","type_id",""],"q":[[0,"heap_slope_trick"],[47,"alloc::vec"],[48,"core::fmt"],[49,"core::hash"],[50,"core::result"],[51,"core::any"]],"i":"``d00000A`1010101011100110101111010`111110101010","f":"``{{{f{bd}}h}j}000{{{f{d}}}{{n{{l{h}}}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{d}}}d}{{{f{A`}}}A`}{{f{f{bc}}}j{}}0{fj}0{{{f{bd}}}j}0{{}d}{{}A`}{{{f{A`}}{f{A`}}}Ab}{{{f{d}}h}h}{{{f{d}}{f{bAd}}}Af}{{{f{A`}}{f{bAd}}}Af}{cc{}}0{{{f{d}}}{{l{h}}}}{{{f{d}}}h}00{{{f{A`}}{f{bc}}}jAh}{{}c{}}0{{dd}d};{{{f{bd}}h}j}{{{f{bd}}hh}j}{{{f{d}}}A`}{fc{}}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{fAl}0","D":"C`","p":[[0,"mut"],[5,"HeapSlopeTrick",0],[1,"reference"],[1,"i64"],[1,"unit"],[1,"array"],[5,"Vec",47],[5,"Summary",0],[1,"bool"],[5,"Formatter",48],[8,"Result",48],[10,"Hasher",49],[6,"Result",50],[5,"TypeId",51]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABcABQAIAAkAFAACABgAAQAgAAAAKAAHAA=="}],["heap_tricks",{"t":"FKFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNMNNNMNNNNMNNNMNNNNNNONNNNNNNNNNNNNNNNNN","n":["DoubleHeap","Handler","Nop","RemovableHeap","Sum","balance_left","balance_right","borrow","","","","borrow_mut","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","collect_left_sorted_vec","collect_right_sorted_vec","collect_sorted_vec","","default","","","","eq","","fmt","","","","from","","","","from_iter","handler","hash","","into","","","","is_empty","","left","left_len","len","","move_left","move_right","new","","peek","peek_left","peek_right","pop","pop_left","","","","pop_right","","","","push","push_left","","","","push_right","","","","remove_left_unchecked","remove_right_unchecked","remove_unchecked","right","right_len","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","with_handler"],"q":[[0,"heap_tricks"],[106,"core::marker"],[107,"core::cmp"],[108,"core::hash"],[109,"core::clone"],[110,"alloc::vec"],[111,"core::default"],[112,"core::fmt"],[113,"core::iter::traits::collect"],[114,"core::option"],[115,"core::ops::arith"],[116,"core::result"],[117,"core::any"]],"i":"`````d0AdAf2Aj21302130213021303330213021213021300321213030133033300330Ab32403241032403244412432413241324132414","f":"`````{{{f{b{d{ce}}}}h}j{lnA`}{{Ab{c}}}}0{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ad}}}Ad}{{{f{{Af{c}}}}}{{Af{c}}}Ah}{{{f{{d{ce}}}}}{{d{ce}}}AhAh}{{{f{{Aj{c}}}}}{{Aj{c}}}Ah}{{f{f{bc}}}j{}}000{fj}000{{{f{{d{ce}}}}}{{Al{c}}}{lnA`}{{Ab{c}}}}00{{{f{{Aj{c}}}}}{{Al{c}}}{lnA`}}{{}Ad}{{}{{Af{c}}}An}{{}{{d{cAd}}}{lnA`}}{{}{{Aj{c}}}{lnA`}}{{{f{Ad}}{f{Ad}}}B`}{{{f{{Af{c}}}}{f{{Af{c}}}}}B`Bb}{{{f{Ad}}{f{bBd}}}Bf}{{{f{{Af{c}}}}{f{bBd}}}BfBh}{{{f{{d{ce}}}}{f{bBd}}}Bf{lnA`Bh}{{Ab{c}}Bh}}{{{f{{Aj{c}}}}{f{bBd}}}Bf{lnA`Bh}}{cc{}}000{e{{Aj{c}}}{lnA`}{{Bl{}{{Bj{c}}}}}}{{{f{{d{ce}}}}}{{f{e}}}{lnA`}{{Ab{c}}}}{{{f{Ad}}{f{bc}}}jBn}{{{f{{Af{c}}}}{f{be}}}jA`Bn}{{}c{}}000{{{f{{d{ce}}}}}B`{lnA`}{{Ab{c}}}}{{{f{{Aj{c}}}}}B`{lnA`}}`{{{f{{d{ce}}}}}h{lnA`}{{Ab{c}}}}0{{{f{{Aj{c}}}}}h{lnA`}}{{{f{b{d{ce}}}}}j{lnA`}{{Ab{c}}}}0{{}{{d{cAd}}}{lnA`}}{{}{{Aj{c}}}{lnA`}}{{{f{{Aj{c}}}}}{{C`{c}}}{lnA`}}{{{f{{d{ce}}}}}{{C`{c}}}{lnA`}{{Ab{c}}}}0{{{f{b{Aj{c}}}}}{{C`{c}}}{lnA`}}{{{f{bAb}}c}j{}}{{{f{bAd}}c}j{}}{{{f{b{Af{c}}}}c}j{CbCd}}{{{f{b{d{ce}}}}}{{C`{c}}}{lnA`}{{Ab{c}}}}3210{{{f{b{Aj{c}}}}c}j{lnA`}}432{{{f{b{d{ce}}}}c}j{lnA`}{{Ab{c}}}}5430001`={fc{}}000{c{{Cf{e}}}{}{}}000{{}{{Cf{c}}}{}}000{fCh}000{e{{d{ce}}}{lnA`}{{Ab{c}}}}","D":"En","p":[[0,"mut"],[5,"DoubleHeap",0],[1,"reference"],[1,"usize"],[1,"unit"],[10,"Copy",106],[10,"Ord",107],[10,"Hash",108],[10,"Handler",0],[5,"Nop",0],[5,"Sum",0],[10,"Clone",109],[5,"RemovableHeap",0],[5,"Vec",110],[10,"Default",111],[1,"bool"],[10,"PartialEq",107],[5,"Formatter",112],[8,"Result",112],[10,"Debug",112],[17,"Item"],[10,"IntoIterator",113],[10,"Hasher",108],[6,"Option",114],[10,"AddAssign",115],[10,"SubAssign",115],[6,"Result",116],[5,"TypeId",117]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADsADAAIABMAIAAJAC4AAAAwAAEAOAAAAD4AAABFAAEASQABAE4AAQBSAAEAWAAAAFoADwA="}],["hld",{"t":"FFNNNNNNNNNNNOONNNNNNONNNNNNNN","n":["Hld","PathSegments","between","borrow","","borrow_mut","","dist","from","","from_edge_iterator","from_edges","from_short_parents","head","index","into","","into_iter","lca","ledacy_iter_v","next","parent","path_segments","path_segments_by_index","try_from","","try_into","","type_id",""],"q":[[0,"hld"],[30,"alloc::vec"],[31,"core::iter::traits::exact_size"],[32,"core::iter::traits::iterator"],[33,"core::option"],[34,"core::result"],[35,"core::any"]],"i":"``b0Ah1011011111100110111101010","f":"``{{{d{b}}fff}h}{d{{d{c}}}{}}0{{{d{j}}}{{d{jc}}}{}}0{{{d{b}}ff}f}{cc{}}0{{fc}{{n{b{l{{l{f}}}}}}}{{Ab{}{{A`{{n{ff}}}}}}}}{{f{d{{Ad{{n{ff}}}}}}}{{n{b{l{{l{f}}}}}}}}{{{l{f}}}{{n{b{l{{l{f}}}}}}}}``{{}c{}}005{{{d{b}}ff}{{`{{Af{}{{A`{{n{ff}}}}}}}}}}{{{d{jAh}}}{{Aj{c}}}{}}`{{{d{b}}ff}Ah}{{{d{b}}ff}{{`{{Af{}{{A`{{n{ffhh}}}}}}}}}}{c{{Al{e}}}{}{}}0{{}{{Al{c}}}{}}0{dAn}0","D":"Bf","p":[[5,"Hld",0],[1,"reference"],[1,"usize"],[1,"bool"],[0,"mut"],[5,"Vec",30],[1,"tuple"],[17,"Item"],[10,"ExactSizeIterator",31],[1,"slice"],[10,"Iterator",32],[5,"PathSegments",0],[6,"Option",33],[6,"Result",34],[5,"TypeId",35]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAsABAAEAAMAEgAAABUAAAAZAAUA"}],["hopkarp",{"t":"FONNNNNONNNONNHNOONNNN","n":["HopkarpResult","backward","borrow","borrow_mut","clone","clone_into","clone_to_uninit","count","default","eq","fmt","forward","from","hash","hopkarp","into","left","right","to_owned","try_from","try_into","type_id"],"q":[[0,"hopkarp"],[22,"core::fmt"],[23,"core::hash"],[24,"alloc::vec"],[25,"core::result"],[26,"core::any"]],"i":"`f000000000000`0000000","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{f}}}f}{{b{b{dc}}}h{}}{bh}`{{}f}{{{b{f}}{b{f}}}j}{{{b{f}}{b{dl}}}n}`{cc{}}{{{b{f}}{b{dc}}}hA`}{{Ab{b{{Af{{Ad{Ab}}}}}}}f}{{}c{}}``{bc{}}{c{{Ah{e}}}{}{}}{{}{{Ah{c}}}{}}{bAj}","D":"l","p":[[1,"reference"],[0,"mut"],[5,"HopkarpResult",0],[1,"unit"],[1,"bool"],[5,"Formatter",22],[8,"Result",22],[10,"Hasher",23],[1,"usize"],[5,"Vec",24],[1,"slice"],[6,"Result",25],[5,"TypeId",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABAABAACAAUACQADAA4AAAARAAUA"}],["hungarian",{"t":"FKONNNNNNNONHMNOONNNNOM","n":["HungarianResult","Value","backward","borrow","borrow_mut","clone","clone_into","clone_to_uninit","eq","fmt","forward","from","hungarian","infinity","into","left","right","to_owned","try_from","try_into","type_id","value","zero"],"q":[[0,"hungarian"],[23,"core::clone"],[24,"core::cmp"],[25,"core::fmt"],[26,"alloc::vec"],[27,"core::result"],[28,"core::any"]],"i":"``f000000000`j111111110","f":"```{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}{hj}}{{b{b{dc}}}l{}}{bl}{{{b{{f{c}}}}{b{{f{c}}}}}n{A`j}}{{{b{{f{c}}}}{b{dAb}}}Ad{Afj}}`{cc{}}{{{b{{Aj{{Ah{c}}}}}}}{{f{c}}}j}{{}j}{{}c{}}``{bc{}}{c{{Al{e}}}{}{}}{{}{{Al{c}}}{}}{bAn}`5","D":"Af","p":[[1,"reference"],[0,"mut"],[5,"HungarianResult",0],[10,"Clone",23],[10,"Value",0],[1,"unit"],[1,"bool"],[10,"PartialEq",24],[5,"Formatter",25],[8,"Result",25],[10,"Debug",25],[5,"Vec",26],[1,"slice"],[6,"Result",27],[5,"TypeId",28]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwABAAEAAYADgAAABIAAwAXAAAA"}],["interval_heap",{"t":"FNNNNNNNNNNNNNNNNNNNNNNNN","n":["IntervalHeap","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","eq","extend","fmt","from","","from_iter","into","into_iter","new","peek_max","peek_min","pop_max","pop_min","push","to_owned","try_from","try_into","type_id"],"q":[[0,"interval_heap"],[25,"core::clone"],[26,"core::cmp"],[27,"core::iter::traits::collect"],[28,"core::fmt"],[29,"alloc::vec"],[30,"core::option"],[31,"core::result"],[32,"core::any"]],"i":"`f00000000000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}{hj}}{{b{b{dc}}}l{}}{bl}{{}{{f{c}}}j}{{{b{{f{c}}}}{b{{f{c}}}}}n{A`j}}{{{b{d{f{c}}}}e}lj{{Ad{}{{Ab{c}}}}}}{{{b{{f{c}}}}{b{dAf}}}Ah{Ajj}}{{{Al{c}}}{{f{c}}}j}{cc{}}{e{{f{c}}}j{{Ad{}{{Ab{c}}}}}}{{}c{}}{{{f{c}}}ej{}}8{{{b{{f{c}}}}}{{An{{b{c}}}}}j}0{{{b{d{f{c}}}}}{{An{c}}}j}0{{{b{d{f{c}}}}c}lj}{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"IntervalHeap",0],[10,"Clone",25],[10,"Ord",26],[1,"unit"],[1,"bool"],[10,"PartialEq",26],[17,"Item"],[10,"IntoIterator",27],[5,"Formatter",28],[8,"Result",28],[10,"Debug",28],[5,"Vec",29],[6,"Option",30],[6,"Result",31],[5,"TypeId",32]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8ABAACAAkADQAAAA8AAAAWAAMA"}],["io",{"t":"KHM","n":["ParseLine","input","parse_line"],"q":[[0,"io"]],"i":"``b","f":"`{{}cb}{{{f{d}}}b}","D":"f","p":[[10,"ParseLine",0],[1,"str"],[1,"reference"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAMA"}],["lagrange",{"t":"HHHH","n":["evaluate","interpolate","interpolate_first_n","interpolate_one_point_first_n"],"q":[[0,"lagrange"],[4,"fp"],[5,"alloc::vec"]],"i":"````","f":"{{{f{{d{b}}}}b}b}{{{f{{d{{h{b}}}}}}}{{j{b}}}}{{{f{{d{b}}}}}{{j{b}}}}2","D":"j","p":[[5,"Fp",4],[1,"slice"],[1,"reference"],[1,"array"],[5,"Vec",5]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["lazy_segbeats",{"t":"KFNNNNNNNNNNNMMMNNNNNNNNNM","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","clone_to_uninit","eq","fmt","from","into","max_value","min_value","mul_u32","new","query_max","query_min","query_sum","range_add","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"lazy_segbeats"],[26,"core::clone"],[27,"core::ops::range"],[28,"core::cmp"],[29,"core::fmt"],[30,"core::result"],[31,"core::any"]],"i":"``f0000000000j001111111110","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{d{f{c}}}}ec}hj{l{A`{n}}}}0{{{b{{f{c}}}}}{{f{c}}}l}{{b{b{dc}}}h{}}{bh}{{{b{{f{c}}}}{b{{f{c}}}}}AbAd}{{{b{{f{c}}}}{b{dAf}}}AhAj}{cc{}}{{}c{}}{{}j}0{{{b{j}}Al}j}{{{b{{An{c}}}}}{{f{c}}}j}{{{b{{f{c}}}}e}cj{{A`{n}}}}00;{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}7","D":"d","p":[[1,"reference"],[0,"mut"],[5,"Segbeats",0],[1,"unit"],[10,"Elm",0],[10,"Clone",26],[1,"usize"],[10,"RangeBounds",27],[1,"bool"],[10,"PartialEq",28],[5,"Formatter",29],[8,"Result",29],[10,"Debug",29],[1,"u32"],[1,"slice"],[6,"Result",30],[5,"TypeId",31]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABgAAgAAAAsADgAMAA=="}],["lazy_segtree",{"t":"FKRRMNNNNNNMNNNNNMMNNMNNNNN","n":["LazySegtree","Op","Operator","Value","apply","borrow","borrow_mut","clone","clone_into","clone_to_uninit","collect","compose","fmt","fold","from","from_iter","get","identity","identity_op","into","new","op","range_apply","to_owned","try_from","try_into","type_id"],"q":[[0,"lazy_segtree"],[27,"core::clone"],[28,"alloc::vec"],[29,"core::fmt"],[30,"core::ops::range"],[31,"core::iter::traits::collect"],[32,"core::result"],[33,"core::any"]],"i":"``j00f000001000001100100000","f":"````{{{b{c}}{b{e}}}e{}{}}{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}{hj}}{{b{b{dc}}}l{}}{bl}{{{b{{f{c}}}}}nj}{{{b{c}}{b{c}}}c{}}{{{b{{f{c}}}}{b{dA`}}}Ab{Adj}}{{{b{d{f{c}}}}e}{}j{{Ah{Af}}}}{cc{}}{c{{f{e}}}{{Al{}{{Aj{}}}}}j}{{{b{{f{c}}}}Af}{}j}{{}c{}}00{{{b{An}}}{{f{c}}}j}7{{{b{d{f{c}}}}eb}lj{{Ah{Af}}}}{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}","D":"Bb","p":[[1,"reference"],[0,"mut"],[5,"LazySegtree",0],[10,"Clone",27],[10,"Op",0],[1,"unit"],[5,"Vec",28],[5,"Formatter",29],[8,"Result",29],[10,"Debug",29],[1,"usize"],[10,"RangeBounds",30],[17,"Item"],[10,"IntoIterator",31],[1,"slice"],[6,"Result",32],[5,"TypeId",33]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAoABAAGAAQADQAAABAAAAAYAAMA"}],["lg",{"t":"HHHHQHQQHQHHQHQ","n":["align_of","bools","format","hmap","","hvec","","lg","remove_ampersand","table","vec2","vmap","","vvec",""],"q":[[0,"lg"],[15,"alloc::string"],[16,"core::borrow"],[17,"core::iter::traits::collect"],[18,"core::fmt"],[19,"core::marker"],[20,"alloc::vec"],[21,"lg::map"],[22,"lg::vecs"],[23,"lg::vec2"]],"i":"```````````````","f":"`{ef{{j{h}}}{{n{}{{l{c}}}}}}{{{d{c}}}fA`}`````{{{d{b}}}{{d{b}}}}``````","D":"`","p":[[1,"str"],[1,"reference"],[5,"String",15],[1,"bool"],[10,"Borrow",16],[17,"Item"],[10,"IntoIterator",17],[10,"Debug",18],[10,"Copy",19],[17,"K"],[17,"V"],[5,"Vec",20],[1,"tuple"],[1,"slice"]],"r":[[3,21],[5,22],[10,23],[11,21],[13,22]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8AAQAAAA8A"}],["lin_ineq",{"t":"FTTKTNNNNNNMNNNNNNNNNNNNNNHHNNNN","n":["Interval","MAX","MIN","Signed","ZERO","borrow","borrow_mut","clone","clone_into","clone_to_uninit","contains","div_euclid","empty","fmt","from","full","intersection","into","is_empty","mul","","","","normalize","product","","solve","solve_squeeze","to_owned","try_from","try_into","type_id"],"q":[[0,"lin_ineq"],[32,"core::clone"],[33,"core::fmt"],[34,"core::iter::traits::iterator"],[35,"core::result"],[36,"core::any"]],"i":"`n0`0f00000100000000000000``0000","f":"`````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}h}{{b{b{dc}}}j{}}{bj}{{{f{c}}c}ln}{{nn}n}{{}{{f{c}}}n}{{{b{{f{c}}}}{b{dA`}}}Ab{Adn}}{cc{}}2{{{f{c}}{f{c}}}{{f{c}}}n}{{}c{}}{{{f{c}}}ln}{{{f{c}}{f{c}}}en{}}{{{f{c}}{b{{f{c}}}}}en{}}{{{b{{f{c}}}}{f{c}}}en{}}{{{b{{f{c}}}}{b{{f{c}}}}}en{}}{{{f{c}}}{{f{c}}}n}{e{{f{c}}}n{{Ah{}{{Af{{f{c}}}}}}}}{e{{f{c}}}n{{Ah{}{{Af{{b{{f{c}}}}}}}}}}{{cc}{{f{c}}}n}{{cc{f{c}}}{{f{c}}}n}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bAl}","D":"Bh","p":[[1,"reference"],[0,"mut"],[5,"Interval",0],[10,"Clone",32],[1,"unit"],[1,"bool"],[10,"Signed",0],[5,"Formatter",33],[8,"Result",33],[10,"Debug",33],[17,"Item"],[10,"Iterator",34],[6,"Result",35],[5,"TypeId",36]],"r":[],"b":[[19,"impl-Mul-for-Interval%3CT%3E"],[20,"impl-Mul%3C%26Interval%3CT%3E%3E-for-Interval%3CT%3E"],[21,"impl-Mul%3CInterval%3CT%3E%3E-for-%26Interval%3CT%3E"],[22,"impl-Mul-for-%26Interval%3CT%3E"],[24,"impl-Product-for-Interval%3CT%3E"],[25,"impl-Product%3C%26Interval%3CT%3E%3E-for-Interval%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwABAACAAEABQAFAAwAAAAdAAMA"}],["link_cut_tree",{"t":"IIFIKRNNNNNNNMNNNMNNNNNNNNNNN","n":["CommutLinkCutTree","LinkCutTree","LinkCutTreeBase","NonCommutLinkCutTree","Op","Value","borrow","borrow_mut","cut","evert","fold","from","from_values","identity","into","lca","link","mul","new","parent","set","try_from","try_into","type_id","undirected_cut","undirected_fold","undirected_has_edge","undirected_is_connected","undirected_link"],"q":[[0,"link_cut_tree"],[29,"link_cut_tree::base"],[30,"core::option"],[31,"core::iter::traits::collect"],[32,"core::ops::function"],[33,"core::result"],[34,"core::any"]],"i":"`````Alf0000001000100000000000","f":"``````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{d{f{c}}}}h}{{j{h}}}`}{{{b{d{f{c}}}}h}l`}{{{b{d{f{c}}}}h}{}`}{cc{}}{c{{f{e}}}{{A`{}{{n{}}}}}`}{{}c{}}0{{{b{d{f{c}}}}hh}{{j{h}}}`}{{{b{d{f{c}}}}hh}l`}{{{b{c}}{b{c}}}c{}}{h{{f{c}}}`}9{{{b{d{f{c}}}}he}l`{{Ad{}{{Ab{}}}}}}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{bAh}{{{b{d{f{c}}}}hh}Aj`}{{{b{d{f{c}}}}hh}j`}111","D":"Bl","p":[[1,"reference"],[0,"mut"],[5,"LinkCutTreeBase",0,29],[1,"usize"],[6,"Option",30],[1,"unit"],[17,"Item"],[10,"IntoIterator",31],[17,"Output"],[10,"FnMut",32],[6,"Result",33],[5,"TypeId",34],[1,"bool"],[10,"Op",0]],"r":[[2,29]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAcAEAAAAAYABwAIAA4AEgAWABcAGAA="}],["low_link",{"t":"FNNNNNNNNNNNNNNNNNNNNNN","n":["LowLink","add_edge","biconnected_components","borrow","borrow_mut","build","clone","clone_into","clone_to_uninit","default","eq","fmt","from","hash","into","is_articulation_point","is_bridge_unchecked","new","to_owned","try_from","try_into","two_edge_components","type_id"],"q":[[0,"low_link"],[23,"alloc::vec"],[24,"core::fmt"],[25,"core::hash"],[26,"core::result"],[27,"core::any"]],"i":"`d000000000000000000000","f":"`{{{f{bd}}hh}j}{{{f{d}}}{{n{{n{{l{h}}}}}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{bd}}}j}{{{f{d}}}d}{{f{f{bc}}}j{}}{fj}{{}d}{{{f{d}}{f{d}}}A`}{{{f{d}}{f{bAb}}}Ad}{cc{}}{{{f{d}}{f{bc}}}jAf}{{}c{}}{{{f{d}}h}A`}{{{f{d}}hh}A`}{hd}{fc{}}{c{{Ah{e}}}{}{}}{{}{{Ah{c}}}{}}{{{f{d}}}{{n{{n{h}}}}}}{fAj}","D":"Af","p":[[0,"mut"],[5,"LowLink",0],[1,"reference"],[1,"usize"],[1,"unit"],[1,"array"],[5,"Vec",23],[1,"bool"],[5,"Formatter",24],[8,"Result",24],[10,"Hasher",25],[6,"Result",26],[5,"TypeId",27]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwABQAEAAEABwAFAA4AAAATAAIAFwAAAA=="}],["make_graph",{"t":"HHHHHHHHHHHH","n":["array_make_directed","array_make_directed_weighted","array_make_undirected","array_make_undirected_weighted","make_directed_by","make_directed_weighted_by","make_undirected_by","make_undirected_weighted_by","tuple_make_directed","tuple_make_directed_weighted","tuple_make_undirected","tuple_make_undirected_weighted"],"q":[[0,"make_graph"],[12,"alloc::vec"],[13,"core::marker"],[14,"core::ops::function"]],"i":"````````````","f":"{{b{h{{f{{d{b}}}}}}}{{j{{j{b}}}}}}{{b{h{{f{{l{{d{b}}c}}}}}}}{{j{{j{{l{bc}}}}}}}n}10{{b{h{{f{c}}}}e}{{j{{j{b}}}}}{}{{Ab{{h{c}}}{{A`{{d{b}}}}}}}}{{b{h{{f{c}}}}g}{{j{{j{{l{be}}}}}}}{}n{{Ab{{h{c}}}{{A`{{l{{d{b}}e}}}}}}}}10{{b{h{{f{{l{bb}}}}}}}{{j{{j{b}}}}}}{{b{h{{f{{l{bbc}}}}}}}{{j{{j{{l{bc}}}}}}}n}10","D":"Aj","p":[[1,"usize"],[1,"array"],[1,"slice"],[1,"reference"],[5,"Vec",12],[1,"tuple"],[10,"Copy",13],[17,"Output"],[10,"Fn",14]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["manacher",{"t":"H","n":["manacher"],"q":[[0,"manacher"],[1,"alloc::vec"],[2,"core::cmp"]],"i":"`","f":"{{{d{{b{c}}}}}{{h{f}}}j}","D":"d","p":[[1,"slice"],[1,"reference"],[1,"usize"],[5,"Vec",1],[10,"Eq",2]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["mincost_flow",{"t":"FFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Edge","MinCostFlow","add_edge","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","default","","eq","","flow","fmt","","from","","get_edge","hash","","into","","new","slope","to_owned","","try_from","","try_into","","type_id",""],"q":[[0,"mincost_flow"],[37,"core::fmt"],[38,"core::hash"],[39,"alloc::vec"],[40,"core::result"],[41,"core::any"]],"i":"``dl101010101010110101101011101010101","f":"``{{{f{bd}}hhjj}h}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{l}}}l}{{{f{d}}}d}{{f{f{bc}}}n{}}0{fn}0{{}l}{{}d}{{{f{l}}{f{l}}}A`}{{{f{d}}{f{d}}}A`}{{{f{bd}}hhj}{{Ab{jj}}}}{{{f{l}}{f{bAd}}}Af}{{{f{d}}{f{bAd}}}Af}{cc{}}0{{{f{d}}h}l}{{{f{l}}{f{bc}}}nAh}{{{f{d}}{f{bc}}}nAh}{{}c{}}0{hd}{{{f{bd}}hhj}{{Aj{{Ab{jj}}}}}}{fc{}}0{c{{Al{e}}}{}{}}0{{}{{Al{c}}}{}}0{fAn}0","D":"Ah","p":[[0,"mut"],[5,"MinCostFlow",0],[1,"reference"],[1,"usize"],[1,"i64"],[5,"Edge",0],[1,"unit"],[1,"bool"],[1,"tuple"],[5,"Formatter",37],[8,"Result",37],[10,"Hasher",38],[5,"Vec",39],[6,"Result",40],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABkABAAEAA0AEwABABgAAQAeAAcA"}],["monotone_minima",{"t":"HHHHHH","n":["concave_maxplus_convolution","convex_minplus_convolution","monotone_maxima","monotone_maxima_by","monotone_minima","monotone_minima_by"],"q":[[0,"monotone_minima"],[6,"alloc::vec"],[7,"core::marker"],[8,"core::cmp"],[9,"core::ops::arith"],[10,"core::ops::function"]],"i":"``````","f":"{{{d{{b{c}}}}{d{{b{c}}}}}{{f{c}}}{hj{n{}{{l{}}}}}}0{{A`A`e}{{f{A`}}}j{{Ab{A`A`}{{l{c}}}}}}{{A`A`c}{{f{A`}}}{{Af{A`A`A`}{{l{Ad}}}}h}}10","D":"n","p":[[1,"slice"],[1,"reference"],[5,"Vec",6],[10,"Copy",7],[10,"Ord",8],[17,"Output"],[10,"Add",9],[1,"usize"],[10,"Fn",10],[6,"Ordering",8],[10,"FnMut",10]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["naive_poly",{"t":"HHHHHH","n":["add","div","eval","mul","pow","sub"],"q":[[0,"naive_poly"],[6,"alloc::vec"],[7,"core::marker"],[8,"core::cmp"],[9,"core::iter::traits::accum"],[10,"core::ops::arith"]],"i":"``````","f":"{{{d{{b{c}}}}{d{{b{c}}}}}{{f{c}}}{hjln}}{{{d{A`{f{c}}}}{d{{b{c}}}}}{{f{c}}}{hjlAb{Af{}{{Ad{}}}}{Ah{}{{Ad{}}}}}}{{{d{{b{c}}}}c}c{hl{Af{}{{Ad{}}}}nAj}}{{{d{{b{c}}}}{d{{b{c}}}}}{{f{c}}}{hl{Af{}{{Ad{}}}}n}}{{{f{c}}Al}{{f{c}}}{}}{{{d{{b{c}}}}{d{{b{c}}}}}{{f{c}}}{hjlnAb{Af{}{{Ad{}}}}}}","D":"n","p":[[1,"slice"],[1,"reference"],[5,"Vec",6],[10,"Copy",7],[10,"PartialEq",8],[10,"Sum",9],[10,"AddAssign",10],[0,"mut"],[10,"SubAssign",10],[17,"Output"],[10,"Mul",10],[10,"Div",10],[10,"MulAssign",10],[1,"u64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["newton",{"t":"HH","n":["sqrt","triangular_root"],"q":[[0,"newton"]],"i":"``","f":"{bb}0","D":"`","p":[[1,"u64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAIAEAAAAAAAAQACAA=="}],["next_permutation",{"t":"HHHHHHHHHHHHHHH","n":["for_each_pairing","for_each_partition","for_each_partition_rev","for_each_permutation","for_each_shuffle","next_pairing","next_partition","next_permutation","next_shuffle","pairings","partitions","partitions_rev","permutations","prev_partition","shuffles"],"q":[[0,"next_permutation"],[15,"core::ops::function"],[16,"core::cmp"],[17,"alloc::vec"],[18,"core::clone"]],"i":"```````````````","f":"{{bc}d{{j{{h{{f{b}}}}}}}}00{{{h{l{f{c}}}}e}dn{{j{{h{{f{c}}}}}}}}{{{h{l{f{c}}}}be}dn{{j{{h{{f{c}}}}}}}}{{{h{l{f{b}}}}}A`}{{{h{l{Ab{b}}}}}A`}{{{h{l{f{c}}}}}A`n}{{{h{l{f{c}}}}b}A`n}{b{{Ab{{Ab{b}}}}}}00{{{Ab{c}}}{{Ab{{Ab{c}}}}}{nAd}}4{{{Ab{c}}b}{{Ab{{Ab{c}}}}}{nAd}}","D":"B`","p":[[1,"usize"],[1,"unit"],[1,"slice"],[1,"reference"],[10,"FnMut",15],[0,"mut"],[10,"Ord",16],[1,"bool"],[5,"Vec",17],[10,"Clone",18]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["numeric_search",{"t":"KTTTTTTTKKTTTHHHHHM","n":["Float","INFINITY","MAX","MIN","NEG_INFINITY","ONE","","","Signed","Unsigned","ZERO","","","binary_search_signed","binary_search_unsigned","exp_search_float","exp_search_signed","exp_search_unsigned","sqrt"],"q":[[0,"numeric_search"],[19,"core::ops::function"],[20,"core::option"]],"i":"`lb011j1``201`````2","f":"`````````````{{cce}cb{{h{c}{{d{f}}}}}}{{cce}cj{{h{c}{{d{f}}}}}}{ecl{{h{c}{{d{f}}}}}}{e{{n{c}}}b{{h{c}{{d{f}}}}}}{e{{n{c}}}j{{h{c}{{d{f}}}}}}{ll}","D":"B`","p":[[10,"Signed",0],[17,"Output"],[1,"bool"],[10,"FnMut",19],[10,"Unsigned",0],[10,"Float",0],[6,"Option",20]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAMAEAAAAAMABAAIAA0A"}],["open",{"t":"H","n":["open"],"q":[[0,"open"],[1,"core::ops::range"]],"i":"`","f":"{{bc}{{d{b}}}{{f{b}}}}","D":"`","p":[[1,"usize"],[5,"Range",1],[10,"RangeBounds",1]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAEAEAAAAAAAAQA="}],["partially_persistent_union_find",{"t":"FNNNNNNNNNNNNNNNNNN","n":["PartiallyPersistentUnionFind","borrow","borrow_mut","clone","clone_into","clone_to_uninit","find","fmt","from","into","new","same","size","time","to_owned","try_from","try_into","type_id","union"],"q":[[0,"partially_persistent_union_find"],[19,"core::fmt"],[20,"core::option"],[21,"core::result"],[22,"core::any"]],"i":"`f00000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{f}}}f}{{b{b{dc}}}h{}}{bh}{{{b{f}}jj}j}{{{b{f}}{b{dl}}}n}{cc{}}{{}c{}}{jf}{{{b{f}}jjj}A`}5{{{b{f}}jj}{{Ab{j}}}}{bc{}}{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{bAf}{{{b{df}}jjj}A`}","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"PartiallyPersistentUnionFind",0],[1,"unit"],[1,"usize"],[5,"Formatter",19],[8,"Result",19],[1,"bool"],[6,"Option",20],[6,"Result",21],[5,"TypeId",22]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAkAAwACAAQACAAAAA8AAwA="}],["radix_heap",{"t":"FNNNNNNNNNNNNNNNNN","n":["RadixHeap","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","eq","fmt","from","into","new","pop","push","to_owned","try_from","try_into","type_id"],"q":[[0,"radix_heap"],[18,"core::clone"],[19,"core::fmt"],[20,"core::cmp"],[21,"core::option"],[22,"core::result"],[23,"core::any"]],"i":"`f0000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}h}{{b{b{dc}}}j{}}{bj}{{}{{f{c}}}l}{{{b{{f{c}}}}{b{{f{c}}}}}nA`}{{{b{{f{c}}}}{b{dAb}}}Adl}{cc{}}{{}c{}}{{}{{f{c}}}{}}{{{b{d{f{c}}}}}{{Aj{{Ah{Afc}}}}}{}}{{{b{d{f{c}}}}Afc}j{}}{bc{}}{c{{Al{e}}}{}{}}{{}{{Al{c}}}{}}{bAn}","D":"f","p":[[1,"reference"],[0,"mut"],[5,"RadixHeap",0],[10,"Clone",18],[1,"unit"],[10,"Debug",19],[1,"bool"],[10,"PartialEq",20],[5,"Formatter",19],[8,"Result",19],[1,"u32"],[1,"tuple"],[6,"Option",21],[6,"Result",22],[5,"TypeId",23]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAAAEAAAAAEA","e":"OzAAAAEAAA8AAgABAAgADAAGAA=="}],["randtools",{"t":"FFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["DistinctTwo","LogUniform","NonEmptySubRange","SimpleDigraph","SimpleDigraphEdges","SimpleGraph","SimpleGraphEdges","SubRange","Tree","borrow","","","","","","","","","borrow_mut","","","","","","","","","fmt","","","","","","","","","from","","","","","","","","","into","","","","","","","","","sample","","","","","","","","","try_from","","","","","","","","","try_into","","","","","","","","","type_id","","","","","","","","","vzip","","","","","","","",""],"q":[[0,"randtools"],[99,"core::fmt"],[100,"rand::rng"],[101,"core::marker"],[102,"core::ops::range"],[103,"alloc::vec"],[104,"core::result"],[105,"core::any"]],"i":"`````````flnA`AbAdAfAhAj876543210876543210876543210876543210876543210876543210876543210876543210876543210","f":"`````````{b{{b{c}}}{}}00000000{{{b{d}}}{{b{dc}}}{}}00000000{{{b{f}}{b{dh}}}j}{{{b{l}}{b{dh}}}j}{{{b{n}}{b{dh}}}j}{{{b{A`}}{b{dh}}}j}{{{b{Ab}}{b{dh}}}j}{{{b{Ad}}{b{dh}}}j}{{{b{Af}}{b{dh}}}j}{{{b{Ah}}{b{dh}}}j}{{{b{Aj}}{b{dh}}}j}{cc{}}00000000{{}c{}}00000000{{{b{f}}{b{dc}}}Al{AnB`}}{{{b{l}}{b{dc}}}{{Bb{AlAl}}}{AnB`}}{{{b{n}}{b{dc}}}{{Bd{Al}}}{AnB`}}{{{b{A`}}{b{dc}}}{{Bd{Al}}}{AnB`}}{{{b{Ab}}{b{dc}}}{{Bf{{Bf{Al}}}}}{AnB`}}{{{b{Ad}}{b{dc}}}{{Bf{{Bf{Al}}}}}{AnB`}}{{{b{Af}}{b{dc}}}{{Bf{{Bf{Al}}}}}{AnB`}}{{{b{Ah}}{b{dc}}}{{Bf{{Bb{AlAl}}}}}{AnB`}}{{{b{Aj}}{b{dc}}}{{Bf{{Bb{AlAl}}}}}{AnB`}}{c{{Bh{e}}}{}{}}00000000{{}{{Bh{c}}}{}}00000000{bBj}00000000<<<<<<<<<","D":"Bd","p":[[1,"reference"],[0,"mut"],[5,"LogUniform",0],[5,"Formatter",99],[8,"Result",99],[5,"DistinctTwo",0],[5,"SubRange",0],[5,"NonEmptySubRange",0],[5,"Tree",0],[5,"SimpleGraph",0],[5,"SimpleDigraph",0],[5,"SimpleGraphEdges",0],[5,"SimpleDigraphEdges",0],[1,"usize"],[10,"Rng",100],[10,"Sized",101],[1,"tuple"],[5,"Range",102],[5,"Vec",103],[6,"Result",104],[5,"TypeId",105]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFEAAgAAACQANwAsAA=="}],["rational",{"t":"FKNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNMNNNNNNNNNNNNNNM","n":["Rational","Signed","add","","","","add_assign","borrow","borrow_mut","clone","clone_into","clone_to_uninit","cmp","decompose","default","div","","","","div_assign","eq","fmt","from","from_str","generic_abs","generic_signum","into","into_f64","mul","","","","mul_assign","neg","new","one","partial_cmp","product","","sub","","","","sub_assign","sum","","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"rational"],[51,"core::clone"],[52,"core::cmp"],[53,"core::default"],[54,"core::fmt"],[55,"core::result"],[56,"core::option"],[57,"core::iter::traits::iterator"],[58,"core::any"]],"i":"``b000000000000000000000d01111111110111111111111110","f":"``{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{{b{c}}}}{b{c}}}ed{}}{{{f{{b{c}}}}{f{{b{c}}}}}ed{}}{{{b{c}}{f{{b{c}}}}}ed{}}{{{f{h{b{c}}}}{b{c}}}jd}{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{{b{c}}}}}{{b{c}}}{ld}}{{f{f{hc}}}j{}}{fj}{{{f{{b{c}}}}{f{{b{c}}}}}nd}{{{b{c}}}{{A`{c}}}d}{{}{{b{c}}}{Abd}}:<;98{{{f{{b{c}}}}{f{{b{c}}}}}Add}{{{f{{b{c}}}}{f{hAf}}}Ahd}{cc{}}{{{f{Aj}}}{{Al{{b{c}}e}}}d{}}{dd}0{{}c{}}{{{b{c}}}And}{{{f{{b{c}}}}{f{{b{c}}}}}ed{}}{{{b{c}}{f{{b{c}}}}}ed{}}{{{f{{b{c}}}}{b{c}}}ed{}}{{{b{c}}{b{c}}}{{b{c}}}d}{{{f{h{b{c}}}}{b{c}}}jd}{{{b{c}}}ed{}}{{cc}{{b{c}}}d}{{}d}{{{f{{b{c}}}}{f{{b{c}}}}}{{B`{n}}}d}{e{{b{c}}}d{{Bd{}{{Bb{{f{{b{c}}}}}}}}}}{e{{b{c}}}d{{Bd{}{{Bb{{b{c}}}}}}}}789:610{fc{}}{c{{Al{e}}}{}{}}{{}{{Al{c}}}{}}{fBf}7","D":"d","p":[[5,"Rational",0],[10,"Signed",0],[1,"reference"],[0,"mut"],[1,"unit"],[10,"Clone",51],[6,"Ordering",52],[1,"array"],[10,"Default",53],[1,"bool"],[5,"Formatter",54],[8,"Result",54],[1,"str"],[6,"Result",55],[1,"f64"],[6,"Option",56],[17,"Item"],[10,"Iterator",57],[5,"TypeId",58]],"r":[],"b":[[2,"impl-Add-for-Rational%3CM%3E"],[3,"impl-Add%3CRational%3CT%3E%3E-for-%26Rational%3CT%3E"],[4,"impl-Add-for-%26Rational%3CT%3E"],[5,"impl-Add%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[15,"impl-Div-for-%26Rational%3CT%3E"],[16,"impl-Div-for-Rational%3CM%3E"],[17,"impl-Div%3CRational%3CT%3E%3E-for-%26Rational%3CT%3E"],[18,"impl-Div%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[28,"impl-Mul-for-%26Rational%3CT%3E"],[29,"impl-Mul%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[30,"impl-Mul%3CRational%3CT%3E%3E-for-%26Rational%3CT%3E"],[31,"impl-Mul-for-Rational%3CM%3E"],[37,"impl-Product%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[38,"impl-Product-for-Rational%3CT%3E"],[39,"impl-Sub-for-Rational%3CM%3E"],[40,"impl-Sub%3CRational%3CT%3E%3E-for-%26Rational%3CT%3E"],[41,"impl-Sub%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[42,"impl-Sub-for-%26Rational%3CT%3E"],[44,"impl-Sum%3C%26Rational%3CT%3E%3E-for-Rational%3CT%3E"],[45,"impl-Sum-for-Rational%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADEAAwAAABYAGAACABwAFwA="}],["rb",{"t":"RFKFFKFRRNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNN","n":["Acc","Multimap","MultimapOp","MultimapSeg","Multiset","Op","Seg","Value","","append","binary_search","","","binary_search_ptr","borrow","","","","borrow_mut","","","","default","","","","display","fmt","","","fold","from","","","","from_iter","identity","insert","","","","into","","","","into_iter","","","","is_empty","","","","iter","","","","join","len","","","","lower_bound","","","mul","new","","","","nth","","","","nth_mut","","partition_point","","","remove","","","","remove_nth","","","split_off","table","to_acc","try_from","","","","try_into","","","","type_id","","","","upper_bound","",""],"q":[[0,"rb"],[104,"rb::seq"],[105,"rb::map"],[106,"core::result"],[107,"core::marker"],[108,"core::cmp"],[109,"core::borrow"],[110,"core::fmt"],[111,"core::ops::range"],[112,"core::iter::traits::collect"],[113,"core::option"],[114,"core::ops::function"],[115,"core::any"]],"i":"Aj``````0jdlAlAn2210321032103310332103342103210321032103210352103210421032103232102103210335210321032103210","f":"`````````{{{f{b{d{c}}}}{f{b{d{c}}}}}hj}{{{f{{l{eg}}}}{f{c}}}{{Ab{{A`{fn}}n}}}{AdAf}{{Ah{c}}Af}Aj}{{{f{{Al{eg}}}}{f{c}}}{{Ab{{A`{{f{g}}n}}n}}}{AdAf}{{Ah{c}}Af}{}}{{{f{{An{e}}}}{f{c}}}{{Ab{nn}}}{AdAf}{{Ah{c}}Af}}{{{f{{l{eg}}}}{f{c}}}{{Ab{{A`{{`{{`{eg}}}}n}}n}}}{AdAf}{{Ah{c}}Af}Aj}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{}{{l{ce}}}AfAj}{{}{{Al{ce}}}Af{}}{{}{{An{c}}}Af}{{}{{d{c}}}j}{{{f{{d{c}}}}}{{`{c}}}j}{{{f{{Al{ce}}}}{f{bB`}}}Bb{AfBd}Bd}{{{f{{An{c}}}}{f{bB`}}}Bb{AfBd}}{{{f{{d{c}}}}{f{bB`}}}Bbj}{{{f{{d{c}}}}e}{}j{{Bf{n}}}}{cc{}}000{c{{d{e}}}{{Bj{}{{Bh{}}}}}j}{{}c{}}{{{f{b{l{ce}}}}c}hAfAj}{{{f{b{Al{ce}}}}ce}hAf{}}{{{f{b{An{c}}}}c}hAf}{{{f{b{d{c}}}}n}hj}4444{{{f{{l{ce}}}}}gAfAj{}}{{{f{{Al{ce}}}}}gAf{}{}}{{{f{{An{c}}}}}eAf{}}{{{f{{d{c}}}}}ej{}}{{{f{{l{ce}}}}}BlAfAj}{{{f{{Al{ce}}}}}BlAf{}}{{{f{{An{c}}}}}BlAf}{{{f{{d{c}}}}}Blj}{{{f{{l{ce}}}}}{{`{ce}}}AfAj}{{{f{{Al{ce}}}}}{{`{ce}}}Af{}}{{{f{{An{c}}}}}{{`{c}}}Af}{{{f{{d{c}}}}}{{`{c}}}j}{{{Bn{{f{c}}}}{f{e}}{Bn{{f{c}}}}}c{}{}}{{{f{{l{ce}}}}}nAfAj}{{{f{{Al{ce}}}}}nAf{}}{{{f{{An{c}}}}}nAf}{{{f{{d{c}}}}}nj}{{{f{{l{ce}}}}{f{c}}}nAfAj}{{{f{{Al{ce}}}}{f{c}}}nAf{}}{{{f{{An{c}}}}{f{c}}}nAf}{{{f{c}}{f{c}}}c{}}{{}{{l{ce}}}AfAj}{{}{{Al{ce}}}Af{}}{{}{{An{c}}}Af}{{}{{d{c}}}j}{{{f{{l{ce}}}}n}{{A`{{f{c}}f}}}AfAj}{{{f{{Al{ce}}}}n}{{A`{{f{c}}{f{e}}}}}Af{}}{{{f{{An{c}}}}n}{{f{c}}}Af}{{{f{{d{c}}}}n}fj}{{{f{b{l{ce}}}}n}{{A`{{f{c}}{f{b}}}}}AfAj}{{{f{b{d{c}}}}n}{{`{c}}}j}{{{f{{l{ce}}}}g}nAfAj{{Cb{{f{c}}}{{C`{Bl}}}}}}{{{f{{Al{ce}}}}g}nAf{}{{Cb{{f{c}}}{{C`{Bl}}}}}}{{{f{{An{c}}}}e}nAf{{Cb{{f{c}}}{{C`{Bl}}}}}}{{{f{b{l{eg}}}}{f{c}}}{{Bn{{A`{e}}}}}{AdAf}{{Ah{c}}Af}Aj}{{{f{b{Al{eg}}}}{f{c}}}{{Bn{{A`{eg}}}}}{AdAf}{{Ah{c}}Af}{}}{{{f{b{An{e}}}}{f{c}}}{{Bn{e}}}{AdAf}{Af{Ah{c}}Af}}{{{f{b{d{c}}}}n}{}j}{{{f{b{l{ce}}}}n}{{A`{c}}}AfAj}{{{f{b{Al{ce}}}}n}{{A`{ce}}}Af{}}{{{f{b{An{c}}}}n}cAf}{{{f{b{d{c}}}}n}{{d{c}}}j}{{{f{{d{c}}}}}{{`{c}}}j}{{{f{c}}}e{}{}}{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{fCd}000{{{f{{l{ce}}}}{f{c}}}nAfAj}{{{f{{Al{ce}}}}{f{c}}}nAf{}}{{{f{{An{c}}}}{f{c}}}nAf}","D":"Ab","p":[[0,"mut"],[5,"Seg",0,104],[1,"reference"],[1,"unit"],[10,"Op",0,104],[5,"MultimapSeg",0,105],[1,"usize"],[1,"tuple"],[6,"Result",106],[10,"Sized",107],[10,"Ord",108],[10,"Borrow",109],[10,"MultimapOp",0,105],[5,"Multimap",0,105],[5,"Multiset",0,105],[5,"Formatter",110],[8,"Result",110],[10,"Debug",110],[10,"RangeBounds",111],[17,"Item"],[10,"IntoIterator",112],[1,"bool"],[6,"Option",113],[17,"Output"],[10,"FnMut",114],[5,"TypeId",115]],"r":[[1,105],[2,105],[3,105],[4,105],[5,104],[6,104]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAF8AAwABAB4AJAAFAC4AOgA="}],["rbtree",{"t":"FFKFRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNMNNNNNNNNNNN","n":["Iter","Nop","Op","RbTree","Summary","Value","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","default","delete","eq","fmt","fold","from","","","from_iter","get","hash","insert","into","","","into_iter","","is_empty","iter","len","merge","merge3","new","next","op","","partition_point","push_back","push_front","singleton","split","split3","summarize","","to_owned","try_from","","","try_into","","","type_id","",""],"q":[[0,"rbtree"],[59,"core::clone"],[60,"core::cmp"],[61,"core::fmt"],[62,"core::option"],[63,"core::ops::range"],[64,"core::iter::traits::collect"],[65,"core::marker"],[66,"core::hash"],[67,"core::ops::function"],[68,"core::result"],[69,"core::any"]],"i":"````l0fCfBj21022222222210222221020222222031222222312210210210","f":"``````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00{{{b{{f{ce}}}}}{{f{ce}}}h{{l{}{{j{c}}}}}}{{b{b{dc}}}n{}}{bn}{{}{{f{ce}}}{}{{l{}{{j{c}}}}}}{{{b{d{f{ce}}}}A`}c{}{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}{b{{f{ce}}}}}AbAd{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}{b{dAf}}}AhAj{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}g}Al{}{{l{}{{j{c}}}}}{{An{A`}}}}{cc{}}00{e{{f{cg}}}{}{{Bb{}{{B`{c}}}}}{{l{}{{j{c}}}}}}{{{b{d{f{ce}}}}A`}cBd{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}{b{dg}}}nBf{{l{}{{j{c}}}}}Bh}{{{b{d{f{ce}}}}A`c}n{}{{l{}{{j{c}}}}}}{{}c{}}00{{{b{{f{c}}}}}el{}}1{{{b{{f{ce}}}}}Ab{}{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}}{{Bj{ce}}}{}{{l{}{{j{c}}}}}}{{{b{{f{ce}}}}}A`{}{{l{}{{j{c}}}}}}{{{f{ce}}{f{ce}}}{{f{ce}}}{}{{l{}{{j{c}}}}}}{{{f{ce}}{f{ce}}{f{ce}}}{{f{ce}}}{}{{l{}{{j{c}}}}}}{{}{{f{ce}}}{}{{l{}{{j{c}}}}}}{{{b{d{Bj{ce}}}}}{{Al{g}}}{}{{l{}{{j{c}}}}}{}}{{cc}c{}}0{{{b{{f{ce}}}}g}A`{}{{l{}{{j{c}}}}}{{Bn{b}{{Bl{Ab}}}}}}{{{b{d{f{ce}}}}c}n{}{{l{}{{j{c}}}}}}0{c{{f{ce}}}{}{{l{}{{j{c}}}}}}{{{f{ce}}A`}{{C`{{f{ce}}}}}{}{{l{}{{j{c}}}}}}{{{f{ce}}A`A`}{{C`{{f{ce}}}}}{}{{l{}{{j{c}}}}}}{{{b{c}}}e{}{}}0{bc{}}{c{{Cb{e}}}{}{}}00{{}{{Cb{c}}}{}}00{bCd}00","D":"D`","p":[[1,"reference"],[0,"mut"],[5,"RbTree",0],[10,"Clone",59],[17,"Value"],[10,"Op",0],[1,"unit"],[1,"usize"],[1,"bool"],[10,"PartialEq",60],[5,"Formatter",61],[8,"Result",61],[10,"Debug",61],[6,"Option",62],[10,"RangeBounds",63],[17,"Item"],[10,"IntoIterator",64],[10,"Copy",65],[10,"Hash",66],[10,"Hasher",66],[5,"Iter",0],[17,"Output"],[10,"Fn",67],[1,"array"],[6,"Result",68],[5,"TypeId",69],[5,"Nop",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABsABwAHAAkAEgABABoAAAAfAAEAJwAAACkAAAAxAAoA"}],["scc",{"t":"FNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Scc","add_edge","borrow","borrow_mut","build","clone","clone_into","clone_to_uninit","cmp_count","cmp_of","cmp_ofs","default","eq","fmt","from","g","hash","into","is_empty","len","new","ord","quotient_graph","quotient_set","rg","to_owned","try_from","try_into","type_id"],"q":[[0,"scc"],[29,"core::fmt"],[30,"alloc::vec"],[31,"core::hash"],[32,"core::result"],[33,"core::any"]],"i":"`d000000000000000000000000000","f":"`{{{f{bd}}hh}j}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{bd}}}j}{{{f{d}}}d}{{f{f{bc}}}j{}}{fj}{{{f{d}}}h}{{{f{d}}h}h}{{{f{d}}}{{f{{l{h}}}}}}{{}d}{{{f{d}}{f{d}}}n}{{{f{d}}{f{bA`}}}Ab}{cc{}}{{{f{d}}}{{f{{l{{Ad{h}}}}}}}}{{{f{d}}{f{bc}}}jAf}{{}c{}}{{{f{d}}}n}:{hd}9{{{f{d}}}{{Ad{{Ad{h}}}}}}05{fc{}}{c{{Ah{e}}}{}{}}{{}{{Ah{c}}}{}}{fAj}","D":"Bb","p":[[0,"mut"],[5,"Scc",0],[1,"reference"],[1,"usize"],[1,"unit"],[1,"slice"],[1,"bool"],[5,"Formatter",29],[8,"Result",29],[5,"Vec",30],[10,"Hasher",31],[6,"Result",32],[5,"TypeId",33]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwABQADAAEABgACAAwAAgARAAAAGgADAA=="}],["segbeats",{"t":"KFNNNNNNNNNNNMMMNNNNNNNNM","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","clone_to_uninit","eq","fmt","from","into","max_value","min_value","mul_u32","new","query_max","query_min","query_sum","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"segbeats"],[25,"core::clone"],[26,"core::ops::range"],[27,"core::cmp"],[28,"core::fmt"],[29,"core::result"],[30,"core::any"]],"i":"``f0000000000j00111111110","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{d{f{c}}}}ec}hj{l{A`{n}}}}0{{{b{{f{c}}}}}{{f{c}}}l}{{b{b{dc}}}h{}}{bh}{{{b{{f{c}}}}{b{{f{c}}}}}AbAd}{{{b{{f{c}}}}{b{dAf}}}AhAj}{cc{}}{{}c{}}{{}j}0{{{b{j}}Al}j}{{{b{{An{c}}}}}{{f{c}}}j}{{{b{{f{c}}}}e}cj{{A`{n}}}}00{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}7","D":"d","p":[[1,"reference"],[0,"mut"],[5,"Segbeats",0],[1,"unit"],[10,"Elm",0],[10,"Clone",25],[1,"usize"],[10,"RangeBounds",26],[1,"bool"],[10,"PartialEq",27],[5,"Formatter",28],[8,"Result",28],[10,"Debug",28],[1,"u32"],[1,"slice"],[6,"Result",29],[5,"TypeId",30]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABcAAgAAAAsADgALAA=="}],["segbeats_task3",{"t":"KFNNNNNNNNNNNNMMMNNNNNNNNNM","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","clone_to_uninit","count_changes","eq","fmt","from","into","max_value","min_value","mul_u32","new","query_max","query_min","query_sum","range_add","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"segbeats_task3"],[27,"core::clone"],[28,"core::ops::range"],[29,"core::cmp"],[30,"core::fmt"],[31,"core::result"],[32,"core::any"]],"i":"``f00000000000j001111111110","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{d{f{c}}}}ec}hj{l{A`{n}}}}0{{{b{{f{c}}}}}{{f{c}}}l}{{b{b{dc}}}h{}}{bh}{{{b{{f{c}}}}e}Abj{{A`{n}}}}{{{b{{f{c}}}}{b{{f{c}}}}}AdAf}{{{b{{f{c}}}}{b{dAh}}}Ajj}{cc{}}{{}c{}}{{}j}0{{{b{j}}Al}j}{{{b{{An{c}}}}}{{f{c}}}j}{{{b{{f{c}}}}e}cj{{A`{n}}}}00<{bc{}}{c{{B`{e}}}{}{}}{{}{{B`{c}}}{}}{bBb}7","D":"d","p":[[1,"reference"],[0,"mut"],[5,"Segbeats",0],[1,"unit"],[10,"Elm",0],[10,"Clone",27],[1,"usize"],[10,"RangeBounds",28],[1,"u64"],[1,"bool"],[10,"PartialEq",29],[5,"Formatter",30],[8,"Result",30],[1,"u32"],[1,"slice"],[6,"Result",31],[5,"TypeId",32]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABkAAgAAAAwADwAMAA=="}],["segtree",{"t":"FFFKFFFRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNN","n":["Dense2dEntry","Dense2dSegtree","Entry","Op","Segtree","SegtreeWithCompression","Sparse2dSegtree","Value","apply","as_slice","borrow","","","","","","borrow_mut","","","","","","collect_map","","collect_vec","deref","","deref_mut","","drop","","entry","","","fmt","","","","","fold","","","","from","","","","","","from_iter","","","from_len","identity","index","","","","","into","","","","","","into_iter","iter","","","","keys","max_right","min_left","mul","new","","","","try_from","","","","","","try_into","","","","","","type_id","","","","",""],"q":[[0,"segtree"],[96,"core::cmp"],[97,"core::clone"],[98,"core::ops::function"],[99,"alloc::collections::btree::map"],[100,"alloc::vec"],[101,"core::fmt"],[102,"core::ops::range"],[103,"core::iter::traits::collect"],[104,"core::slice::iter"],[105,"core::iter::traits::iterator"],[106,"core::result"],[107,"core::any"]],"i":"```````ndAb0B`Af3AlBb43251025130303042143251425143251042546425514325104425124464251432510432510432510","f":"````````{{{f{b{d{ceg}}}}{f{c}}{f{e}}i}h{jl}{jl}n{{A`{{f{b}}}}}}{{{f{{Ab{c}}}}}{{f{Ad}}}n}{f{{f{c}}}{}}00000{{{f{b}}}{{f{bc}}}{}}00000{{{f{{Af{ce}}}}}{{Ah{c}}}{lj}n}{{{f{{d{ceg}}}}}{{Ah{{Aj{ce}}}}}{ljl}{ljl}n}{{{f{{Al{c}}}}}{{An{An}}}n}{{{f{{B`{c}}}}}{{f{e}}}n{}}{{{f{{Bb{c}}}}}{{f{e}}}n{}}{{{f{b{B`{c}}}}}{{f{be}}}n{}}{{{f{b{Bb{c}}}}}{{f{be}}}n{}}{{{f{b{B`{c}}}}}hn}{{{f{b{Bb{c}}}}}hn}{{{f{b{Ab{c}}}}Bd}{{B`{c}}}n}{{{f{b{Af{ce}}}}{f{c}}}{{B`{e}}}jn}{{{f{b{Al{c}}}}BdBd}{{Bb{c}}}n}{{{f{{Ab{c}}}}{f{bBf}}}Bhn}{{{f{{B`{c}}}}{f{bBf}}}Bhn}{{{f{{Af{ce}}}}{f{bBf}}}BhBjn}{{{f{{d{ceg}}}}{f{bBf}}}BhBjBjn}{{{f{{Al{c}}}}{f{bBf}}}Bhn}{{{f{{Ab{c}}}}e}{}n{{Bl{Bd}}}}{{{f{{Af{ce}}}}g}{}jn{{Bl{c}}}}{{{f{{d{ceg}}}}ik}{}{jl}{jl}n{{Bl{c}}}{{Bl{e}}l}}{{{f{{Al{c}}}}eg}{}n{{Bl{Bd}}}{{Bl{Bd}}}}{cc{}}00000{c{{Ab{e}}}{{C`{}{{Bn{}}}}}n}{e{{Af{cg}}}{lj}{{C`{}{{Bn{{Aj{c}}}}}}}n}{g{{d{cei}}}{jl}{jl}{{C`{}{{Bn{{Aj{ce}}}}}}}n}{Bd{{Ab{c}}}n}{{}c{}}{{{f{{Ab{c}}}}Bd}{{f{e}}}n{}}{{{f{{Af{ce}}}}c}{{f{g}}}jn{}}{{{f{{d{ceg}}}}c}{{f{i}}}jjn{}}{{{f{{d{ceg}}}}{Aj{ce}}}{{f{i}}}jjn{}}{{{f{{Al{c}}}}Bd}{{f{e}}}n{}}555555{{{f{{Ab{c}}}}}en{}}{{{f{{Ab{c}}}}}Cbn}{{{f{{Af{ce}}}}}{{`{{Cd{}{{Bn{{Aj{{f{c}}f}}}}}}}}}jn}{{{f{{d{ceg}}}}}{{`{{Cd{}{{Bn{{Aj{{f{c}}{f{e}}f}}}}}}}}}{jl}{jl}n}{{{f{{Al{c}}}}}{{`{{Cd{}{{Bn{{f{Ad}}}}}}}}}n}{{{f{{Af{ce}}}}}{{f{{Ad{c}}}}}jn}{{{f{{Ab{c}}}}Bde}Bdn{{A`{f}{{Cf{Ch}}}}}}0{{{f{c}}{f{c}}}c{}}{{{f{Ad}}}{{Ab{c}}}n}{{{f{{Ad{{Aj{c}}}}}}}{{Af{ce}}}{lj}n}{{{f{{Ad{{Aj{ce}}}}}}}{{d{ceg}}}{jl}{jl}n}{{{f{{Ad{An}}}}}{{Al{c}}}n}{c{{Cj{e}}}{}{}}00000{{}{{Cj{c}}}{}}00000{fCl}00000","D":"En","p":[[0,"mut"],[5,"Sparse2dSegtree",0],[1,"reference"],[1,"unit"],[10,"Ord",96],[10,"Clone",97],[10,"Op",0],[10,"FnMut",98],[5,"Segtree",0],[1,"slice"],[5,"SegtreeWithCompression",0],[5,"BTreeMap",99],[1,"tuple"],[5,"Dense2dSegtree",0],[5,"Vec",100],[5,"Entry",0],[5,"Dense2dEntry",0],[1,"usize"],[5,"Formatter",101],[8,"Result",101],[10,"Debug",101],[10,"RangeBounds",102],[17,"Item"],[10,"IntoIterator",103],[5,"Iter",104],[10,"Iterator",105],[17,"Output"],[1,"bool"],[6,"Result",106],[5,"TypeId",107]],"r":[],"b":[[56,"impl-Index%3CK%3E-for-Sparse2dSegtree%3CK,+L,+O%3E"],[57,"impl-Index%3C(K,+L)%3E-for-Sparse2dSegtree%3CK,+L,+O%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADEABwALAAsAGgAFACMABAAyAAIANwAEAEIAAABPABEA"}],["skew_heap",{"t":"FNNNNNNNNNNNNNNNNHNNNNNNNNNN","n":["SkewHeap","borrow","borrow_mut","clear","clone","clone_into","clone_to_uninit","default","eq","extend","","fmt","from","from_iter","hash","into","into_sorted_vec","meld","","new","peek","pop","push","singleton","to_owned","try_from","try_into","type_id"],"q":[[0,"skew_heap"],[28,"core::cmp"],[29,"core::clone"],[30,"core::iter::traits::collect"],[31,"core::marker"],[32,"core::fmt"],[33,"core::hash"],[34,"alloc::vec"],[35,"core::option"],[36,"core::result"],[37,"core::any"]],"i":"`f000000000000000`0000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{d{f{c}}}}}hj}{{{b{{f{c}}}}}{{f{c}}}l}{{b{b{dc}}}h{}}{bh}{{}{{f{c}}}j}{{{b{{f{c}}}}{b{{f{c}}}}}nA`}{{{b{d{f{c}}}}e}hj{{Ad{}{{Ab{c}}}}}}{{{b{d{f{c}}}}e}h{Afj}{{Ad{}{{Ab{{b{c}}}}}}}}{{{b{{f{c}}}}{b{dAh}}}Aj{Alj}}{cc{}}{e{{f{c}}}j{{Ad{}{{Ab{c}}}}}}{{{b{{f{c}}}}{b{de}}}hAnB`}{{}c{}}{{{f{c}}}{{Bb{c}}}j}{{{f{c}}{f{c}}}{{f{c}}}j}{{{b{d{f{c}}}}{f{c}}}hj};{{{b{{f{c}}}}}{{Bd{{b{c}}}}}j}{{{b{d{f{c}}}}}{{Bd{c}}}j}{{{b{d{f{c}}}}c}hj}{c{{f{c}}}j}{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}","D":"Aj","p":[[1,"reference"],[0,"mut"],[5,"SkewHeap",0],[1,"unit"],[10,"Ord",28],[10,"Clone",29],[1,"bool"],[10,"PartialEq",28],[17,"Item"],[10,"IntoIterator",30],[10,"Copy",31],[5,"Formatter",32],[8,"Result",32],[10,"Debug",32],[10,"Hash",33],[10,"Hasher",33],[5,"Vec",34],[6,"Option",35],[6,"Result",36],[5,"TypeId",37]],"r":[],"b":[[9,"impl-Extend%3CA%3E-for-SkewHeap%3CA%3E"],[10,"impl-Extend%3C%26A%3E-for-SkewHeap%3CA%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8ABAACAAEABQAHAA4AAQAZAAMA"}],["slicemore",{"t":"KHMHMHMHMHMHMHM","n":["SliceMore","lower_bound","","lower_bound_by","","lower_bound_by_key","","partition_point","","upper_bound","","upper_bound_by","","upper_bound_by_key",""],"q":[[0,"slicemore"],[15,"core::cmp"],[16,"core::ops::function"]],"i":"``j`0`0`0`0`0`0","f":"`{{{d{{b{c}}}}{d{c}}}fh}{{{d{j}}{d{c}}}fh}{{{d{{b{c}}}}e}f{}{{A`{{d{c}}}{{l{n}}}}}}{{{d{j}}e}f{}{{A`{{d{c}}}{{l{n}}}}}}{{{d{{b{c}}}}{d{e}}g}f{}h{{A`{{d{c}}}{{l{e}}}}}}{{{d{j}}{d{c}}g}fh{}{{A`{{d{e}}}{{l{c}}}}}}{{{d{{b{c}}}}e}f{}{{A`{{d{c}}}{{l{Ab}}}}}}{{{d{j}}e}f{}{{A`{{d{c}}}{{l{Ab}}}}}}765432","D":"Ab","p":[[1,"slice"],[1,"reference"],[1,"usize"],[10,"Ord",15],[10,"SliceMore",0],[17,"Output"],[6,"Ordering",15],[10,"FnMut",16],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAYAEAAAAAMABQAHAAkACwANAA8A"}],["snippetter",{"t":"JFJNNNNNONHNNNHHNONNNN","n":["CRATE_METADATAS","CrateMetadata","PROJECT_ROOT","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dependencies","eq","find_project_root_path","fmt","from","into","main","parse_local_dependencies_from_cargo_toml","serialize","tags","to_owned","try_from","try_into","type_id"],"q":[[0,"snippetter"],[22,"std::path"],[23,"core::fmt"],[24,"alloc::string"],[25,"alloc::vec"],[26,"core::result"],[27,"serde::ser"],[28,"core::any"]],"i":"```f000000`000``000000","f":"```{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{f}}}f}{{b{b{dc}}}h{}}{bh}`{{{b{f}}{b{f}}}j}{{}l}{{{b{f}}{b{dn}}}A`}{cc{}}{{}c{}}{{}h}{{{b{Ab}}}{{Af{Ad}}}}{{{b{f}}c}AhAj}`{bc{}}{c{{Ah{e}}}{}{}}{{}{{Ah{c}}}{}}{bAl}","D":"d","p":[[1,"reference"],[0,"mut"],[5,"CrateMetadata",0],[1,"unit"],[1,"bool"],[5,"PathBuf",22],[5,"Formatter",23],[8,"Result",23],[1,"str"],[5,"String",24],[5,"Vec",25],[6,"Result",26],[10,"Serializer",27],[5,"TypeId",28]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQAAgAAAAwADwAHAA=="}],["sort_tree",{"t":"HHHH","n":["remove_parent","sort_tree","sort_tree_by","sort_tree_remove_parent"],"q":[[0,"sort_tree"],[4,"alloc::vec"],[5,"core::ops::function"]],"i":"````","f":"{{{j{b{h{{f{d}}}}}}{j{{h{d}}}}}l}{{d{j{{h{{f{d}}}}}}}{{n{{f{d}}}}}}{{d{j{{h{{f{c}}}}}}e}{{n{{f{d}}}}}{}{{Ab{{j{c}}}{{A`{d}}}}}}{{d{j{b{h{{f{d}}}}}}}{{n{{f{d}}}}}}","D":"j","p":[[0,"mut"],[1,"usize"],[5,"Vec",4],[1,"slice"],[1,"reference"],[1,"unit"],[1,"array"],[17,"Output"],[10,"Fn",5]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["sparse_table",{"t":"KFFRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNN","n":["Op","SparseTable","SparseTable2d","Value","as_slice","","borrow","","borrow_mut","","clone_from_slice","","collect_vec","","fmt","","fold","","from","","","","","","from_iter","get","index","inner","","into","","iter","","mul","new","","try_from","","try_into","","type_id",""],"q":[[0,"sparse_table"],[42,"alloc::vec"],[43,"core::fmt"],[44,"core::option"],[45,"core::ops::range"],[46,"core::iter::traits::collect"],[47,"core::iter::traits::iterator"],[48,"core::result"],[49,"core::any"]],"i":"```hbj101010101010111000111101010210101010","f":"````{{{d{{b{c}}}}}{{d{f}}}h}{{{d{{j{c}}}}}{{d{{f{l}}}}}h}{d{{d{c}}}{}}0{{{d{n}}}{{d{nc}}}{}}0{{{d{f}}}{{b{c}}}h}{{{d{{f{l}}}}}{{j{c}}}h}{{{d{{b{c}}}}}lh}{{{d{{j{c}}}}}{{l{l}}}h}{{{d{{b{c}}}}{d{nA`}}}Abh}{{{d{{j{c}}}}{d{nA`}}}Abh}{{{d{{b{c}}}}e}Adh{{Ah{Af}}}}{{{d{{j{c}}}}eg}Adh{{Ah{Af}}}{{Ah{Af}}}}{l{{b{c}}}h}{cc{}}98{{{l{l}}}{{j{c}}}h}1{c{{b{e}}}{{Al{}{{Aj{}}}}}h}{{{d{{b{c}}}}Af}dh}{{{d{{b{c}}}}Af}{{d{e}}}h{}}{{{d{{b{c}}}}}{{d{{l{l}}}}}h}{{{d{{j{c}}}}}{{d{{l{{l{{l{l}}}}}}}}}h}{{}c{}}0{{{d{{b{c}}}}}{{`{{An{}{{Aj{d}}}}}}}h}{{{d{{j{c}}}}}{{`{{An{}{{Aj{{d{f}}}}}}}}}h}{{{d{c}}{d{c}}}c{}};9{c{{B`{e}}}{}{}}0{{}{{B`{c}}}{}}0{dBb}0","D":"Cb","p":[[5,"SparseTable",0],[1,"reference"],[1,"slice"],[10,"Op",0],[5,"SparseTable2d",0],[5,"Vec",42],[0,"mut"],[5,"Formatter",43],[8,"Result",43],[6,"Option",44],[1,"usize"],[10,"RangeBounds",45],[17,"Item"],[10,"IntoIterator",46],[10,"Iterator",47],[6,"Result",48],[5,"TypeId",49]],"r":[],"b":[[18,"impl-From%3CVec%3C%3CO+as+Op%3E::Value%3E%3E-for-SparseTable%3CO%3E"],[20,"impl-From%3C%26%5B%3CO+as+Op%3E::Value%5D%3E-for-SparseTable%3CO%3E"],[21,"impl-From%3C%26%5BVec%3C%3CO+as+Op%3E::Value%3E%5D%3E-for-SparseTable2d%3CO%3E"],[22,"impl-From%3CVec%3CVec%3C%3CO+as+Op%3E::Value%3E%3E%3E-for-SparseTable2d%3CO%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABEABwAHAAMADwABABMAAAAVAAIAGQAAABsAAAAlAAUA"}],["splay_tree",{"t":"RRFFRKFFKFKRRNMNNMNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMNNNNNNNNNNNNNNNNNNNNN","n":["Acc","","Entry","Iter","Lazy","LazyOps","NoLazy","Nop","Ops","SplayTree","Value","","","act","act_acc","","","act_value","","","append","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","cmp","compose","","","compose_to_option","default","delete","deref","deref_mut","drop","dump","entry","eq","fmt","fold","from","","","","","from_iter","get","hash","index","insert","into","","","","","into_iter","","is_empty","iter","len","new","next","next_back","op","","","","partial_cmp","proj","","","","range","reverse","split_off","to_owned","try_from","","","","","try_into","","","","","type_id","","","",""],"q":[[0,"splay_tree"],[100,"core::ops::range"],[101,"core::cmp"],[102,"core::option"],[103,"core::fmt"],[104,"core::iter::traits::collect"],[105,"core::hash"],[106,"core::result"],[107,"core::any"]],"i":"Bhj``0``````10d1BjBl3102102BbAd32410444453254400444444324104444432410414444116532465324444324103241032410","f":"`````````````{{{f{b{d{c}}}}e}hj{{n{l}}}}{{{f{c}}{f{be}}}h{}{}}00000{{{f{b{d{c}}}}{f{{d{c}}}}}hj}{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{{d{c}}}}}{{d{c}}}j}{{f{f{bc}}}h{}}{fh}{{{f{{d{c}}}}{f{{d{c}}}}}A`j}{{{f{c}}{f{bc}}}h{}}00{{{f{c}}{f{b{Ab{c}}}}}h{}}{{}{{d{c}}}j}{{{f{b{d{c}}}}l}{}j}{{{f{{Ad{c}}}}}{{f{e}}}j{}}{{{f{b{Ad{c}}}}}{{f{be}}}j{}}{{{f{b{d{c}}}}}hj}{{{f{{d{c}}}}}hj}{{{f{b{d{c}}}}l}{{Ab{{Ad{c}}}}}j}{{{f{{d{c}}}}{f{{d{c}}}}}Afj}{{{f{{d{c}}}}{f{bAh}}}Ajj}{{{f{{d{c}}}}e}Abj{{n{l}}}}{cc{}}0000{c{{d{e}}}{{An{}{{Al{}}}}}j}{{{f{{d{c}}}}l}{{Ab{f}}}j}{{{f{{d{c}}}}{f{be}}}hjB`}{{{f{{d{c}}}}l}{{f{e}}}j{}}{{{f{b{d{c}}}}l}hj}{{}c{}}0000{{{f{{d{c}}}}}ej{}}1{{{f{{d{c}}}}}Afj}{{{f{{d{c}}}}}{{Bb{c}}}j}{{{f{{d{c}}}}}lj}{{}{{d{c}}}j}{{{f{b{Bb{c}}}}}{{Ab{e}}}j{}}0{{{f{c}}{f{c}}}c{}}000{{{f{{d{c}}}}{f{{d{c}}}}}{{Ab{A`}}}j}{{{f{c}}}e{}{}}000{{{f{{d{c}}}}e}{{Bb{c}}}j{{n{l}}}}{{{f{b{d{c}}}}e}hj{{n{l}}}}{{{f{b{d{c}}}}l}{{d{c}}}j}{fc{}}{c{{Bd{e}}}{}{}}0000{{}{{Bd{c}}}{}}0000{fBf}0000","D":"En","p":[[0,"mut"],[5,"SplayTree",0],[1,"reference"],[1,"unit"],[10,"LazyOps",0],[1,"usize"],[10,"RangeBounds",100],[6,"Ordering",101],[6,"Option",102],[5,"Entry",0],[1,"bool"],[5,"Formatter",103],[8,"Result",103],[17,"Item"],[10,"IntoIterator",104],[10,"Hasher",105],[5,"Iter",0],[6,"Result",106],[5,"TypeId",107],[10,"Ops",0],[5,"Nop",0],[5,"NoLazy",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADUADgAQAAEAEwABABYADQAlAAEAKAAAACoAAgAvAAEANwAAADkAAQBBAAEARwABAEsAAgBQAAEAVQAPAA=="}],["suffix_array",{"t":"HH","n":["lcp_array","suffix_array"],"q":[[0,"suffix_array"],[2,"alloc::vec"],[3,"core::cmp"]],"i":"``","f":"{{{d{{b{c}}}}{d{{b{f}}}}}{{h{f}}}j}{{{d{{b{c}}}}}{{h{f}}}j}","D":"f","p":[[1,"slice"],[1,"reference"],[1,"usize"],[5,"Vec",2],[10,"Ord",3]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["suffix_sum",{"t":"KFFRNNNNNNMNNNNNNNNNNNMNNNNMNNNNNNNN","n":["Op","SuffixSum","SuffixSum2d","Value","borrow","","borrow_mut","","collect_vec","","div","fmt","","fold","","from","","","","from_iter","get","","identity","inner","","into","","mul","new","","try_from","","try_into","","type_id",""],"q":[[0,"suffix_sum"],[36,"alloc::vec"],[37,"core::fmt"],[38,"core::ops::range"],[39,"core::iter::traits::collect"],[40,"core::result"],[41,"core::any"]],"i":"```jfl101021010110011021010210101010","f":"````{b{{b{c}}}{}}0{{{b{d}}}{{b{dc}}}{}}0{{{b{{f{c}}}}}hj}{{{b{{l{c}}}}}{{h{h}}}j}{{{b{c}}{b{c}}}c{}}{{{b{{f{c}}}}{b{dn}}}A`j}{{{b{{l{c}}}}{b{dn}}}A`j}{{{b{{f{c}}}}e}{}j{{Ad{Ab}}}}{{{b{{l{c}}}}eg}{}j{{Ad{Ab}}}{{Ad{Ab}}}}{h{{f{c}}}j}{cc{}}0{{{h{h}}}{{l{c}}}j}{c{{f{e}}}{{Ah{}{{Af{}}}}}j}{{{b{{f{c}}}}Ab}{}j}{{{b{{l{c}}}}AbAb}{}j}{{}c{}}{{{b{{f{c}}}}}{{b{Aj}}}j}{{{b{{l{c}}}}}{{b{{h{h}}}}}j}22={{{b{Aj}}}{{f{c}}}j}{{{b{{Aj{h}}}}}{{l{c}}}j}{c{{Al{e}}}{}{}}0{{}{{Al{c}}}{}}0{bAn}0","D":"Bl","p":[[1,"reference"],[0,"mut"],[5,"SuffixSum",0],[5,"Vec",36],[10,"Op",0],[5,"SuffixSum2d",0],[5,"Formatter",37],[8,"Result",37],[1,"usize"],[10,"RangeBounds",38],[17,"Item"],[10,"IntoIterator",39],[1,"slice"],[6,"Result",40],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA4ABQAFAAMADAABABAAAAATAAEAHwAFAA=="}],["swag",{"t":"FKRNNNNNNNNNNNNNNNNNNNNNNMNNNNNNN","n":["DequeueSwag","Op","Value","as_two_slices","borrow","borrow_mut","clone_from_slice","collect_vec","copy_from_slice","default","extend","fmt","fold","from","","from_iter","get","index","into","into_iter","","is_empty","iter","len","new","op","pop_back","pop_front","push_back","push_front","try_from","try_into","type_id"],"q":[[0,"swag"],[33,"alloc::vec"],[34,"core::iter::traits::collect"],[35,"core::fmt"],[36,"core::option"],[37,"core::iter::traits::iterator"],[38,"core::result"],[39,"core::any"]],"i":"``jb00000000000000000000010000000","f":"```{{{d{{b{c}}}}}{{h{{d{f}}{d{f}}}}}j}{d{{d{c}}}{}}{{{d{l}}}{{d{lc}}}{}}{{{d{f}}}{{b{c}}}j}{{{d{{b{c}}}}}nj}1{{}{{b{c}}}j}{{{d{l{b{c}}}}e}A`j{{Ad{}{{Ab{}}}}}}{{{d{{b{c}}}}{d{lAf}}}Ahj}{{{d{{b{c}}}}}Ajj}{cc{}}{n{{b{c}}}j}{c{{b{e}}}{{Ad{}{{Ab{}}}}}j}{{{d{{b{c}}}}Al}{{Aj{d}}}j}{{{d{{b{c}}}}Al}{{d{e}}}j{}}{{}c{}}{{{d{{b{c}}}}}ej{}}{{{b{c}}}ej{}}{{{d{{b{c}}}}}Anj}{{{d{{b{c}}}}}{{`{{B`{}{{Ab{d}}}}}}}j}{{{d{{b{c}}}}}Alj}>{{{d{c}}{d{c}}}c{}}{{{d{l{b{c}}}}}Ajj}0{{{d{l{b{c}}}}}A`j}0{c{{Bb{e}}}{}{}}{{}{{Bb{c}}}{}}{dBd}","D":"Bj","p":[[5,"DequeueSwag",0],[1,"reference"],[1,"slice"],[1,"tuple"],[10,"Op",0],[0,"mut"],[5,"Vec",33],[1,"unit"],[17,"Item"],[10,"IntoIterator",34],[5,"Formatter",35],[8,"Result",35],[6,"Option",36],[1,"usize"],[1,"bool"],[10,"Iterator",37],[6,"Result",38],[5,"TypeId",39]],"r":[],"b":[[19,"impl-IntoIterator-for-%26DequeueSwag%3CO%3E"],[20,"impl-IntoIterator-for-DequeueSwag%3CO%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAwABgAFAAEACgACAA8AAQASAAAAFAABAB8AAgA="}],["tree_fold",{"t":"KFRNNONMNOMNNHNNMO","n":["Op","TwoWayTreeFoldResult","Value","borrow","borrow_mut","branch","from","identity","into","lower","mul","try_from","try_into","two_way_tree_fold","","type_id","up","upper"],"q":[[0,"tree_fold"],[18,"core::clone"],[19,"core::result"],[20,"alloc::vec"],[21,"core::any"]],"i":"``hAd000100100`1010","f":"```{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}`{cc{}}{{{b{{h{}{{f{c}}}}}}}cj}{{}c{}}`{{{b{{h{}{{f{c}}}}}}{b{c}}{b{c}}}cj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{{{b{c}}{b{{Ab{{A`{n}}}}}}{b{{Ab{n}}}}}Adh}{{{b{{h{}{{f{c}}}}}}{b{{Ab{{A`{n}}}}}}{b{{Ab{n}}}}}{{Ad{c}}}j}{bAf}{{{b{{h{}{{f{c}}}}}}{b{c}}n}cj}`","D":"Al","p":[[1,"reference"],[0,"mut"],[17,"Value"],[10,"Op",0],[10,"Clone",18],[6,"Result",19],[1,"usize"],[5,"Vec",20],[1,"slice"],[5,"TwoWayTreeFoldResult",0],[5,"TypeId",21]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAQABQAMAA0AEAA="}],["trial",{"t":"FFFKNNNNNNNHHNNNMNNNNNNNNNMHHNNNNNNNNNM","n":["Divisors","PrimeFactors","PrimeFactorsRle","Value","borrow","","","borrow_mut","","","divides","divisors","divisors_unordered","from","","","increment","into","","","into_iter","","","next","","","one","prime_factors","prime_factors_rle","try_from","","","try_into","","","type_id","","","zero"],"q":[[0,"trial"],[39,"alloc::vec"],[40,"trial::divisors"],[41,"core::option"],[42,"trial::prime_factors"],[43,"core::result"],[44,"core::any"]],"i":"````lAbAd210f``32103213213210``3213213210","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00{{ff}h}{c{{j{c}}}f}{c{{l{c}}}f}{cc{}}00{{{b{df}}}n}{{}c{}}00000{{{b{d{l{c}}}}}{{A`{e}}}f{}}{{{b{d{Ab{c}}}}}{{A`{e}}}f{}}{{{b{d{Ad{c}}}}}{{A`{e}}}f{}}{{}f}{c{{Ad{c}}}f}{c{{Ab{c}}}f}{c{{Af{e}}}{}{}}00{{}{{Af{c}}}{}}00{bAh}005","D":"Bf","p":[[1,"reference"],[0,"mut"],[10,"Value",0],[1,"bool"],[5,"Vec",39],[5,"Divisors",0,40],[1,"unit"],[6,"Option",41],[5,"PrimeFactorsRle",0,42],[5,"PrimeFactors",0,42],[6,"Result",43],[5,"TypeId",44]],"r":[[0,40],[1,42],[2,42],[11,40],[12,40],[27,42],[28,42]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQAAwAFAAUAFQAFAB4ACAA="}],["trie",{"t":"SFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["DEGREE","TrieMap","TrieSet","borrow","","borrow_mut","","clone","","clone_into","","clone_to_uninit","","contains","default","","eq","","fmt","","for_each","for_each_kv","for_each_prefix","","from","","get","get_mut","get_or_insert","get_or_insert_with","insert","","into","","new","","remove","","to_owned","","try_from","","try_into","","type_id",""],"q":[[0,"trie"],[46,"trie::trie_map"],[47,"core::clone"],[48,"trie::trie_set"],[49,"core::iter::traits::collect"],[50,"core::cmp"],[51,"core::fmt"],[52,"core::ops::function"],[53,"core::option"],[54,"core::result"],[55,"core::any"]],"i":"```fj10101010010101001101011111010101010101010","f":"```{b{{b{c}}}{}}0{{{b{d}}}{{b{dc}}}{}}0{{{b{{f{c}}}}}{{f{c}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}0{bl}0{{{b{j}}c}n{{Ad{}{{A`{Ab}}}}}}{{}{{f{c}}}{}}{{}j}{{{b{{f{c}}}}{b{{f{c}}}}}nAf}{{{b{j}}{b{j}}}n}{{{b{{f{c}}}}{b{dAh}}}AjAl}{{{b{j}}{b{dAh}}}Aj}{{{b{j}}c}l{{B`{{b{{An{Ab}}}}}}}}{{{b{{f{c}}}}e}l{}{{B`{{b{{An{Ab}}}}{b{c}}}}}}{{{b{{f{c}}}}eg}l{}{{Ad{}{{A`{Ab}}}}}{{B`{{b{{f{c}}}}}}}}{{{b{j}}ce}l{{Ad{}{{A`{Ab}}}}}{{B`{{b{{f{l}}}}}}}}{cc{}}0{{{b{{f{c}}}}e}{{Bb{{b{c}}}}}{}{{Ad{}{{A`{Ab}}}}}}{{{b{d{f{c}}}}e}{{Bb{{b{dc}}}}}{}{{Ad{}{{A`{Ab}}}}}}{{{b{d{f{c}}}}ec}{{b{dc}}}{}{{Ad{}{{A`{Ab}}}}}}{{{b{d{f{c}}}}eg}{{b{dc}}}{}{{Ad{}{{A`{Ab}}}}}{{Bf{}{{Bd{c}}}}}}{{{b{d{f{c}}}}ec}{{Bb{c}}}{}{{Ad{}{{A`{Ab}}}}}}{{{b{dj}}c}n{{Ad{}{{A`{Ab}}}}}}{{}c{}}0{{}{{f{c}}}{}}{{}j}{{{b{d{f{c}}}}e}{{Bb{c}}}{}{{Ad{}{{A`{Ab}}}}}}4{bc{}}0{c{{Bh{e}}}{}{}}0{{}{{Bh{c}}}{}}0{bBj}0","D":"Bn","p":[[1,"reference"],[0,"mut"],[5,"TrieMap",0,46],[10,"Clone",47],[5,"TrieSet",0,48],[1,"unit"],[1,"bool"],[17,"Item"],[1,"usize"],[10,"IntoIterator",49],[10,"PartialEq",50],[5,"Formatter",51],[8,"Result",51],[10,"Debug",51],[1,"slice"],[10,"FnMut",52],[6,"Option",53],[17,"Output"],[10,"FnOnce",52],[6,"Result",54],[5,"TypeId",55]],"r":[[1,46],[2,48]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABcAAwAEAAkADwAFACcABwA="}],["two_sat",{"t":"FNNNNNNNNNNNNNNNNNNN","n":["TwoSat","borrow","borrow_mut","build","clone","clone_into","clone_to_uninit","default","eq","fmt","from","hash","implies","into","new","solve","to_owned","try_from","try_into","type_id"],"q":[[0,"two_sat"],[20,"core::fmt"],[21,"core::hash"],[22,"alloc::vec"],[23,"core::option"],[24,"core::result"],[25,"core::any"]],"i":"`f000000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{{{b{f}}}f}{{b{b{dc}}}h{}}{bh}{{}f}{{{b{f}}{b{f}}}j}{{{b{f}}{b{dl}}}n}{cc{}}{{{b{f}}{b{dc}}}hA`}{{{b{df}}AbjAbj}h}{{}c{}}{Abf}{{{b{f}}}{{Af{{Ad{j}}}}}}{bc{}}{c{{Ah{e}}}{}{}}{{}{{Ah{c}}}{}}{bAj}","D":"n","p":[[1,"reference"],[0,"mut"],[5,"TwoSat",0],[1,"unit"],[1,"bool"],[5,"Formatter",20],[8,"Result",20],[10,"Hasher",21],[1,"usize"],[5,"Vec",22],[6,"Option",23],[6,"Result",24],[5,"TypeId",25]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA0AAwACAAgADAAAABEAAwA="}],["uf_checklist",{"t":"FFNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Iter","UfChecklist","borrow","","borrow_mut","","check","clone","clone_into","clone_to_uninit","fmt","","from","","into","","into_iter","is_checked","lower_bound","new","next","range_check","to_owned","try_from","","try_into","","type_id",""],"q":[[0,"uf_checklist"],[29,"core::fmt"],[30,"core::option"],[31,"core::ops::range"],[32,"core::result"],[33,"core::any"]],"i":"``fAb1011111010100111011101010","f":"``{b{{b{c}}}{}}0{{{b{d}}}{{b{dc}}}{}}0{{{b{df}}h}j}{{{b{f}}}f}{{b{b{dc}}}l{}}{bl}{{{b{f}}{b{dn}}}A`}{{{b{Ab}}{b{dn}}}A`}{cc{}}0{{}c{}}00{{{b{f}}h}j}{{{b{f}}h}{{Ad{h}}}}{hf}{{{b{dAb}}}{{Ad{c}}}{}}{{{b{df}}c}Ab{{Af{h}}}}{bc{}}{c{{Ah{e}}}{}{}}0{{}{{Ah{c}}}{}}0{bAj}0","D":"Ah","p":[[1,"reference"],[0,"mut"],[5,"UfChecklist",0],[1,"usize"],[1,"bool"],[1,"unit"],[5,"Formatter",29],[8,"Result",29],[5,"Iter",0],[6,"Option",30],[10,"RangeBounds",31],[6,"Result",32],[5,"TypeId",33]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABEABQADAAMACAAEABEAAAAVAAAAFwAGAA=="}],["union_find",{"t":"GGKFRGMNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNN","n":["EdgeCount","HasCycle","Op","UnionFind","Value","VertexCount","add_edge","","","","borrow","","","","borrow_mut","","","","clone","clone_into","clone_to_uninit","default","eq","find","find_mut","fmt","from","","","","from_values","get_value","graft","","","","hash","into","","","","is_root","new","same","singleton","","","","to_owned","try_from","","","","try_into","","","","type_id","","","","union","value","value_mut"],"q":[[0,"union_find"],[64,"core::clone"],[65,"core::default"],[66,"core::cmp"],[67,"core::fmt"],[68,"alloc::vec"],[69,"core::hash"],[70,"core::result"],[71,"core::any"]],"i":"````l`0BdBfBh210h32100000000032100043210321000043210321032103210000","f":"``````{{{d{bc}}}f{}}000{d{{d{c}}}{}}000{{{d{b}}}{{d{bc}}}{}}000{{{d{{h{c}}}}}{{h{c}}}{jl}}{{d{d{bc}}}f{}}{df}{{}{{h{c}}}{nl}}{{{d{{h{c}}}}{d{{h{c}}}}}A`{Abl}}{{{d{{h{c}}}}Ad}Adl}{{{d{b{h{c}}}}Ad}Adl}{{{d{{h{c}}}}{d{bAf}}}Ahl}{cc{}}000{Aj{{h{c}}}l}{{{d{{h{c}}}}Ad}dl}{{{d{bc}}c}f{}}000{{{d{{h{c}}}}{d{be}}}f{All}An}{{}c{}}000{{{d{{h{c}}}}Ad}A`l}{Ad{{h{c}}}l}{{{d{{h{c}}}}AdAd}A`l}3333{dc{}}{c{{B`{e}}}{}{}}000{{}{{B`{c}}}{}}000{dBb}000{{{d{b{h{c}}}}AdAd}A`l}{{{d{{h{c}}}}Ad}{}l}{{{d{b{h{c}}}}Ad}{{d{b}}}l}","D":"Bb","p":[[0,"mut"],[1,"reference"],[1,"unit"],[5,"UnionFind",0],[10,"Clone",64],[10,"Op",0],[10,"Default",65],[1,"bool"],[10,"PartialEq",66],[1,"usize"],[5,"Formatter",67],[8,"Result",67],[5,"Vec",68],[10,"Hash",69],[10,"Hasher",69],[6,"Result",70],[5,"TypeId",71],[6,"EdgeCount",0],[6,"VertexCount",0],[6,"HasCycle",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC8ABgAEAAAACAASAB8AAQAiAAMAKgACAC4AEgA="}],["veb",{"t":"PPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOO","n":["Internal","Leaf","VebMap","VebSet","borrow","","borrow_mut","","collect","","contains","contains_key","fmt","","from","","from_iter","","get","get_mut","index","index_mut","insert","","into","","is_empty","","len","","max","","max_key","max_value","min","","min_key","min_value","new","","pred","","pred_eq","","pred_eq_key","pred_eq_value","pred_key","pred_value","remove","","succ","","succ_eq","succ_eq_key","succ_eq_value","succ_key","succ_value","try_from","","try_into","","type_id","","chunks","csize","len","max","min","summary"],"q":[[0,"veb"],[63,"veb::VebSet"],[69,"alloc::vec"],[70,"core::fmt"],[71,"core::iter::traits::collect"],[72,"core::option"],[73,"core::result"],[74,"core::any"]],"i":"n0``f1010110010101000001010101010001000101010000010100000010101Bb00000","f":"````{b{{b{c}}}{}}0{{{b{d}}}{{b{dc}}}{}}0{{{b{{f{c}}}}}{{l{{j{h{b{c}}}}}}}{}}{{{b{n}}}{{l{h}}}}{{{b{n}}h}A`}{{{b{{f{c}}}}h}A`{}}{{{b{{f{c}}}}{b{dAb}}}AdAf}{{{b{n}}{b{dAb}}}Ad}{cc{}}0{e{{f{c}}}{}{{Aj{}{{Ah{{j{hc}}}}}}}}{cn{{Aj{}{{Ah{h}}}}}}{{{b{{f{c}}}}h}{{Al{{b{c}}}}}{}}{{{b{d{f{c}}}}h}{{Al{{b{dc}}}}}{}}{{{b{{f{c}}}}h}{{b{c}}}{}}{{{b{d{f{c}}}}h}{{b{dc}}}{}}{{{b{d{f{c}}}}hc}{{Al{c}}}{}}{{{b{dn}}h}A`}{{}c{}}0{{{b{{f{c}}}}}A`{}}{{{b{n}}}A`}{{{b{{f{c}}}}}h{}}{{{b{n}}}h}{{{b{{f{c}}}}}{{Al{{j{h{b{c}}}}}}}{}}{{{b{n}}}{{Al{h}}}}{{{b{{f{c}}}}}{{Al{h}}}{}}{{{b{{f{c}}}}}{{Al{{b{c}}}}}{}}3210{h{{f{c}}}{}}{hn}{{{b{{f{c}}}}h}{{Al{{j{h{b{c}}}}}}}{}}{{{b{n}}h}{{Al{h}}}}10{{{b{{f{c}}}}h}{{Al{h}}}{}}{{{b{{f{c}}}}h}{{Al{{b{c}}}}}{}}10{{{b{d{f{c}}}}h}{{Al{c}}}{}}{{{b{dn}}h}A`}5453232{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bB`}0``````","D":"El","p":[[1,"reference"],[0,"mut"],[5,"VebMap",0],[1,"usize"],[1,"tuple"],[5,"Vec",69],[6,"VebSet",0],[1,"bool"],[5,"Formatter",70],[8,"Result",70],[10,"Debug",70],[17,"Item"],[10,"IntoIterator",71],[6,"Option",72],[6,"Result",73],[5,"TypeId",74],[15,"Internal",63]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABcABgABAAEABQADAA0AAQARAAEAFQABADoACwA="}],["vec_lines",{"t":"KGGFKFIINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNNNN","n":["Constraint","DecreasingTilt","IncreasingTilt","Line","Signed","VecLines","VecLinesDecreasing","VecLinesIncreasing","borrow","","","","borrow_mut","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","eq","","","","eval","eval_gcc","fmt","","","","from","","","","get","hash","","","","into","","","","into_coeff","is_empty","iter_copied","len","new","ok","","","push","strictly_better","","","to_owned","","","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"vec_lines"],[81,"core::clone"],[82,"core::default"],[83,"core::cmp"],[84,"core::option"],[85,"core::fmt"],[86,"core::hash"],[87,"core::iter::traits::iterator"],[88,"core::result"],[89,"core::any"]],"i":"````````fjln3210321032103210323210233210321033210321023333Ad2140214321432143214321","f":"````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{{f{ce}}}}}{{f{ce}}}hh}{{{b{{j{c}}}}}{{j{c}}}h}{{{b{l}}}l}{{{b{n}}}n}{{b{b{dc}}}A`{}}000{bA`}000{{}{{f{ce}}}AbAd}{{}{{j{c}}}Af}{{{b{{f{ce}}}}{b{{f{ce}}}}}AhAjAj}{{{b{{j{c}}}}{b{{j{c}}}}}AhAj}{{{b{l}}{b{l}}}Ah}{{{b{n}}{b{n}}}Ah}{{{j{c}}c}cAb}{{{b{{f{ce}}}}c}{{Al{c}}}AbAd}{{{b{{f{ce}}}}{b{dAn}}}B`BbBb}{{{b{{j{c}}}}{b{dAn}}}B`Bb}{{{b{l}}{b{dAn}}}B`}{{{b{n}}{b{dAn}}}B`}{cc{}}000{{{b{{f{ce}}}}Bd}{{Al{{j{c}}}}}AbAd}{{{b{{f{ce}}}}{b{dg}}}A`BfBfBh}{{{b{{j{c}}}}{b{de}}}A`BfBh}{{{b{l}}{b{dc}}}A`Bh}{{{b{n}}{b{dc}}}A`Bh}{{}c{}}000{{{j{c}}}{{Bj{c}}}Ab}{{{b{{f{ce}}}}}AhAbAd}{{{b{{f{ce}}}}}{{`{{Bn{}{{Bl{{j{c}}}}}}}}}AbAd}{{{b{{f{ce}}}}}BdAbAd}{{}{{f{ce}}}AbAd}{{{j{c}}{j{c}}}AhAb}00{{{b{d{f{ce}}}}{Bj{c}}}A`AbAd}{{cc}AhAb}00{bc{}}000{c{{C`{e}}}{}{}}000{{}{{C`{c}}}{}}000{bCb}000","D":"Cd","p":[[1,"reference"],[0,"mut"],[5,"VecLines",0],[10,"Clone",81],[5,"Line",0],[6,"DecreasingTilt",0],[6,"IncreasingTilt",0],[1,"unit"],[10,"Signed",0],[10,"Constraint",0],[10,"Default",82],[1,"bool"],[10,"PartialEq",83],[6,"Option",84],[5,"Formatter",85],[8,"Result",85],[10,"Debug",85],[1,"usize"],[10,"Hash",86],[10,"Hasher",86],[1,"array"],[17,"Item"],[10,"Iterator",87],[6,"Result",88],[5,"TypeId",89]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADcABQAJABkAJQADAC4AAwA7AAIAPwASAA=="}],["wavelet_matrix",{"t":"FFFFNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO","n":["SpanInNode","Spans","StaticBitVec","WaveletMatrix","access","","borrow","","","","borrow_mut","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","depth","eq","","","","fmt","","","","from","","","","from_iter","","from_iter_collect_vec2","from_slice_of_usize_mut","hash","","","","index","into","","","","into_iter","is_empty","","len","","next","next_value","prev_value","quantile","range_freq","rank","select","spans","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","value"],"q":[[0,"wavelet_matrix"],[84,"core::fmt"],[85,"core::iter::traits::collect"],[86,"alloc::vec"],[87,"core::ops::function"],[88,"core::hash"],[89,"core::option"],[90,"core::ops::range"],[91,"core::result"],[92,"core::any"]],"i":"````bh10nA`32103210321032103203210321032103233321003210132321333322332103210321032100","f":"````{{{d{b}}f}f}{{{d{h}}f}j}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{{d{b}}}b}{{{d{h}}}h}{{{d{n}}}n}{{{d{A`}}}A`}{{d{d{lc}}}Ab{}}000{dAb}000{{}b}{{}h}`{{{d{b}}{d{b}}}j}{{{d{h}}{d{h}}}j}{{{d{n}}{d{n}}}j}{{{d{A`}}{d{A`}}}j}{{{d{b}}{d{lAd}}}Af}{{{d{h}}{d{lAd}}}Af}{{{d{n}}{d{lAd}}}Af}{{{d{A`}}{d{lAd}}}Af}{cc{}}000{cb{{Aj{}{{Ah{f}}}}}}{ch{{Aj{}{{Ah{j}}}}}}{c{{An{b{Al{{Al{f}}}}}}}{{Aj{}{{Ah{f}}}}}}{{{d{l{B`{f}}}}c}b{{Bb{{d{{B`{f}}}}}}}}{{{d{b}}{d{lc}}}AbBd}{{{d{h}}{d{lc}}}AbBd}{{{d{n}}{d{lc}}}AbBd}{{{d{A`}}{d{lc}}}AbBd}`{{}c{}}0000{{{d{b}}}j}{{{d{h}}}j}{{{d{b}}}f}{{{d{h}}}f}{{{d{ln}}}{{Bf{c}}}{}}{{{d{b}}ce}{{Bf{f}}}{{Bh{f}}}{{Bh{f}}}}0{{{d{b}}fce}{{Bf{f}}}{{Bh{f}}}{{Bh{f}}}}{{{d{b}}ce}f{{Bh{f}}}{{Bh{f}}}}{{{d{h}}f}f}0{{{d{b}}ce}n{{Bh{f}}}{{Bh{f}}}}{dc{}}000{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{dBl}000`","D":"Cn","p":[[5,"WaveletMatrix",0],[1,"reference"],[1,"usize"],[5,"StaticBitVec",0],[1,"bool"],[0,"mut"],[5,"Spans",0],[5,"SpanInNode",0],[1,"unit"],[5,"Formatter",84],[8,"Result",84],[17,"Item"],[10,"IntoIterator",85],[5,"Vec",86],[1,"tuple"],[1,"slice"],[10,"FnMut",87],[10,"Hasher",88],[6,"Option",89],[10,"RangeBounds",90],[6,"Result",91],[5,"TypeId",92]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADUABwAHABUAHgAHACoAAQAuAAMANwAAADwAAABEAA8A"}],["z_algo",{"t":"H","n":["z_algo"],"q":[[0,"z_algo"],[1,"alloc::vec"],[2,"core::cmp"]],"i":"`","f":"{{{d{{b{c}}}}}{{h{f}}}j}","D":"b","p":[[1,"slice"],[1,"reference"],[1,"usize"],[5,"Vec",1],[10,"Eq",2]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["zeta",{"t":"HHHHHHHHHHHHHHHHHH","n":["add","add_inv","add_rinv","aggr","bitand","bitor","bitxor","for_each","max","min","radd","rbitand","rbitor","rbitxor","rmax","rmin","rzeta","zeta"],"q":[[0,"zeta"],[18,"core::marker"],[19,"core::ops::arith"],[20,"alloc::vec"],[21,"core::ops::function"],[22,"core::ops::bit"],[23,"core::cmp"]],"i":"``````````````````","f":"{{{f{b{d{c}}}}}h{j{n{}{{l{}}}}}}{{{f{b{d{c}}}}}h{j{A`{}{{l{}}}}}}0{{{f{{d{c}}}}ec}{{Ab{c}}}j{{Ad{cc}{{l{c}}}}}}{{{f{b{d{c}}}}}h{j{Af{}{{l{}}}}}}{{{f{b{d{c}}}}}h{j{Ah{}{{l{}}}}}}{{{f{b{d{c}}}}}h{j{Aj{}{{l{}}}}}}{{{f{b{d{c}}}}e}h{}{{Ad{{f{bc}}{f{bc}}}}}}{{{f{b{d{c}}}}}h{jAl}}0743200{{{f{b{d{c}}}}e}hj{{Ad{cc}{{l{c}}}}}}0","D":"Bf","p":[[0,"mut"],[1,"slice"],[1,"reference"],[1,"unit"],[10,"Copy",18],[17,"Output"],[10,"Add",19],[10,"Sub",19],[5,"Vec",20],[10,"Fn",21],[10,"BitAnd",22],[10,"BitOr",22],[10,"BitXor",22],[10,"Ord",23]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}]]')); -if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; -else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[2010,408,2851,533,937,459,1576,2890,1029,2291,261,312,442,262,371,1616,1592,263,2446,574,4158,386,1081,4245,771,1437,3097,1230,903,1011,1276,231,374,1138,1250,738,1594,1279,1048,958,263,1147,680,778,189,907,704,238,893,972,1980,2793,3712,2442,1080,1113,1179,3397,1587,816,1028,524,1954,2566,325,1315,1585,889,1158,1984,912,1031,1687,2054,2242,2246,269,949]} \ No newline at end of file +var searchIndex = JSON.parse('{\ +"accum":{"doc":"","t":"DFFFLLLLLLLFFLLLLFFFFLFFFFFFLLLLFF","n":["Skipped","add","add_inv","and","borrow","borrow_mut","clone","clone_into","default","eq","fmt","for_each","for_each_mut","from","hash","into","into_iter","max","min","mul","mul_inv","next","or","rfor_each","rfor_each_mut","skipped","skipped_max","skipped_min","to_owned","try_from","try_into","type_id","xor","xor_inv"],"q":[[0,"accum"]],"d":["","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,2,2,2,2,2,2,2,0,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,2,2,0,0],"f":[0,[[]],[[]],[[]],[[]],[[]],[[[2,[1,1,1]]],[[2,[1,1,1]]]],[[]],[[],[[2,[3,3,3]]]],[[[2,[4,4,4]],[2,[4,4,4]]],5],[[[2,[6,6,6]],7],8],[9],[9],[[]],[[[2,[10,10,10]],11]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[9,9]]],12],[[]],[9],[9],[[9,9],[[2,[9,9]]]],[[[0,[13,14]]],[[15,[[0,[13,14]]]]]],[[[0,[13,14]]],[[15,[[0,[13,14]]]]]],[[]],[[],16],[[],16],[[],17],[[]],[[]]],"c":[],"p":[[8,"Clone"],[3,"Skipped"],[8,"Default"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"FnMut"],[8,"Hash"],[8,"Hasher"],[4,"Option"],[8,"Copy"],[8,"Ord"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"avl_tree":{"doc":"AVL …","t":"DDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["AvlTree","IntoIter","Iter","append","back","back_mut","binary_search","binary_search_by","binary_search_by_key","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","default","eq","eq","fmt","from","from","from","from_iter","front","front_mut","get","get_mut","hash","index","insert","into","into","into","into_iter","into_iter","into_iter","into_iter","is_empty","iter","len","lower_bound","new","next","next","next_back","partial_cmp","partition_point","pop_back","pop_front","push_back","push_front","remove","split_off","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upper_bound"],"q":[[0,"avl_tree"]],"d":["AVL 木本体です。","AvlTree …","AvlTree …","other のすべての要素を self …","列の末尾の要素があれば返し、空なら None …","列の末尾の要素があれば返し、空なら None …","value …","fEqual …","fEqual …","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","列の先頭の要素があれば返し、空なら None …","列の先頭の要素があれば返し、空なら None …","other の第 index 成分があれば返し、なければ …","other の第 index 成分があれば返し、なければ …","","","other の第 index 成分に value を挿入します。","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","空列であれば true を返します。","…","列の要素数を返します。","value …","空列を構築します。","","","","","","…","…","列の末尾に要素を追加します。","列の先頭に要素を追加します。","other の第 index …","other の第 index 成分以降を切り離します。","","","","","","","","","","","value …"],"i":[0,0,0,1,1,1,1,1,1,18,19,1,18,19,1,1,1,1,1,1,1,1,18,19,1,1,1,1,1,1,1,1,1,18,19,1,18,19,1,1,1,1,1,1,1,18,19,18,1,1,1,1,1,1,1,1,1,18,19,1,18,19,1,18,19,1,1],"f":[0,0,0,[[1,1]],[1,2],[1,2],[[[1,[[4,[3]]]],3],[[6,[5,5]]]],[[1,7],[[6,[5,5]]]],[[1,3,7],[[6,[5,5]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[[1,[8]]],[[1,[8]]]],[[]],[[[1,[3]],[1,[3]]],9],[[],1],[[[1,[[0,[10,10]]]]],11],[[[1,[10]],[1,[10]]],11],[[[1,[12]],13],14],[[]],[[]],[[]],[15,1],[1,2],[1,2],[[1,5],2],[[1,5],2],[[[1,[16]],17]],[[1,5]],[[1,5]],[[]],[[]],[[]],[[]],[[]],[1],[1],[1,11],[1,18],[1,5],[[[1,[[4,[3]]]],3],5],[[],1],[18,2],[19,2],[18,2],[[[1,[20]],[1,[20]]],[[2,[9]]]],[[1,7],5],[1,2],[1,2],[1],[1],[[1,5],2],[[1,5],1],[[]],[[],6],[[],6],[[],6],[[],6],[[],6],[[],6],[[],21],[[],21],[[],21],[[[1,[[4,[3]]]],3],5]],"c":[],"p":[[3,"AvlTree"],[4,"Option"],[8,"Ord"],[8,"Borrow"],[15,"usize"],[4,"Result"],[8,"FnMut"],[8,"Clone"],[4,"Ordering"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"IntoIterator"],[8,"Hash"],[8,"Hasher"],[3,"Iter"],[3,"IntoIter"],[8,"PartialOrd"],[3,"TypeId"]]},\ +"bfs":{"doc":"","t":"FFFFF","n":["calc_dist","calc_dist_restore","find_path","tree_diamter","tree_diamter_restore"],"q":[[0,"bfs"]],"d":["一点からの距離配列を作ります。","…","start から end …","…","…"],"i":[0,0,0,0,0],"f":[[1,[[3,[2]]]],[1],[[1,1],[[4,[[3,[1]]]]]],[[]],[[]]],"c":[],"p":[[15,"usize"],[15,"u32"],[3,"Vec"],[4,"Option"]]},\ +"bfs01":{"doc":"","t":"NENLLFFLLLLLLLLLLL","n":["One","Weight","Zero","borrow","borrow_mut","calc_dist","calc_dist_restore","clone","clone_into","eq","fmt","from","hash","into","to_owned","try_from","try_into","type_id"],"q":[[0,"bfs01"]],"d":["","","","","","一点からの距離配列を作ります。","…","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","",""],"i":[4,0,4,4,4,0,0,4,4,4,4,4,4,4,4,4,4,4],"f":[0,0,0,[[]],[[]],[1,[[3,[2]]]],[1],[4,4],[[]],[[4,4],5],[[4,6],7],[[]],[[4,8]],[[]],[[]],[[],9],[[],9],[[],10]],"c":[],"p":[[15,"usize"],[15,"u32"],[3,"Vec"],[4,"Weight"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[4,"Result"],[3,"TypeId"]]},\ +"binary":{"doc":"二分法(ダブリング)をします。","t":"IKKKFKF","n":["Pow","is_nonone","is_nonzero","is_odd","operator_binary","shr1","value_binary"],"q":[[0,"binary"]],"d":["…","*x != 1","*x != 0","x & 1 == 1","aⁿ(x) を計算します。","self >>= 1","aⁿを計算します。"],"i":[0,2,2,2,0,2,0],"f":[0,[[],1],[[],1],[[],1],[[2,3,3]],[[]],[[2,3]]],"c":[],"p":[[15,"bool"],[8,"Pow"],[8,"FnMut"]]},\ +"bitvec":{"doc":"Boolean 配列を u64 …","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["BitVec","Iter","bitand_assign","bitor_assign","bitxor_assign","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","eq","fmt","format","from","from","from_01str","from_iter","hash","into","into","into_iter","into_iter","is_empty","iter","len","new","next","push","set","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shl_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","shr_assign","test","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","unset"],"q":[[0,"bitvec"]],"d":["Boolean 配列を u64 …","ビットを順に bool を返すイテレータです。","","","","","","","","","","","","","指定したフォーマットの String …","Returns the argument unchanged.","Returns the argument unchanged.","“01” 文字列から構築します。","","","Calls U::from(self).","Calls U::from(self).","","","長さを返します。","ビットを順に bool …","長さを返します。","サイズを指定して 0 埋め構築します。","","後ろに要素を追架します。","特定のビットを立てます。","","","","","","","","","","","","","","","","","","","","","","","","","特定のビットが立っていれば true …","","","","","","","","","特定のビットをおろします。"],"i":[0,0,1,1,1,10,1,10,1,1,1,1,1,1,1,10,1,1,1,1,10,1,10,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,10,1,10,1,1],"f":[0,0,[[1,1]],[[1,1]],[[1,1]],[[]],[[]],[[]],[[]],[1,1],[[]],[[],1],[[1,1],2],[[1,3],4],[[1,5,5],6],[[]],[[]],[7,1],[8,1],[[1,9]],[[]],[[]],[[]],[1,10],[1,2],[1,10],[1,11],[11,1],[10,[[12,[2]]]],[[1,2]],[[1,11]],[[1,13]],[[1,14]],[[1,15]],[[1,16]],[[1,17]],[[1,18]],[[1,19]],[[1,20]],[[1,21]],[[1,22]],[[1,23]],[[1,11]],[[1,16]],[[1,11]],[[1,22]],[[1,18]],[[1,13]],[[1,19]],[[1,15]],[[1,21]],[[1,17]],[[1,20]],[[1,14]],[[1,23]],[[1,11],2],[[]],[1,6],[[],24],[[],24],[[],24],[[],24],[[],25],[[],25],[[1,11]]],"c":[],"p":[[3,"BitVec"],[15,"bool"],[3,"Formatter"],[6,"Result"],[15,"char"],[3,"String"],[15,"str"],[8,"IntoIterator"],[8,"Hasher"],[3,"Iter"],[15,"usize"],[4,"Option"],[15,"i8"],[15,"i32"],[15,"u8"],[15,"i16"],[15,"u64"],[15,"u32"],[15,"i64"],[15,"i128"],[15,"u128"],[15,"isize"],[15,"u16"],[4,"Result"],[3,"TypeId"]]},\ +"bsgs":{"doc":"Baby-step giant-step …","t":"DLLLLLLLLLLLLL","n":["Bsgs","borrow","borrow_mut","clone","clone_into","fmt","from","into","log","new","to_owned","try_from","try_into","type_id"],"q":[[0,"bsgs"]],"d":["Baby-stpp giant-step のソルバーです。","","","","","","Returns the argument unchanged.","Calls U::from(self).","x …","新しい BSGS ソルバーを構築します。","","","",""],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2],"f":[0,[[]],[[]],[[[2,[1,1]]],[[2,[1,1]]]],[[]],[[[2,[3]],4],5],[[]],[[]],[[[2,[[0,[6,7,8]],9]],[0,[6,7,8]]],[[11,[10]]]],[[[0,[6,7,8]],10,9,9,9],[[2,[[0,[6,7,8]],9]]]],[[]],[[],12],[[],12],[[],13]],"c":[],"p":[[8,"Clone"],[3,"Bsgs"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"Copy"],[8,"Hash"],[8,"Eq"],[8,"Fn"],[15,"u64"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"cht":{"doc":"CHT です。","t":"DEEIDDRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["BTreeCht","Concave","Convex","ConvexOrConcave","Quadratic","VecCht","X","add","add","add","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","eq","eq","eq","eval","eval","eval","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","hash","hash","hash","hash","hash","into","into","into","into","into","mul","multieval","multieval","neg","negate_if_concave","negate_if_concave","negate_if_concave","new","new","square","sub","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"cht"]],"d":["ログがつく方","凹関数を管理する方であるというマーカー","凸関数を管理する方であるというマーカー","BTreeCht, VecCht …","二次式","ログがつかない方","変数","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,2,4,3,6,7,2,4,3,6,7,2,4,3,6,7,2,4,3,6,7,2,4,3,2,4,3,2,4,3,2,4,3,6,7,2,4,3,6,7,2,4,3,3,6,7,2,4,3,6,7,2,4,3,3,2,4,3,1,6,7,2,4,3,3,6,7,2,4,3,6,7,2,4,3,6,7,2,4,3,6,7,2,4,3],"f":[0,0,0,0,0,0,0,[[[2,[1]],3]],[[[4,[1]],3]],[[3,[5,[3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[6,6],[7,7],[[[2,[8]]],[[2,[8]]]],[[[4,[8]]],[[4,[8]]]],[3,3],[[]],[[]],[[]],[[]],[[]],[[],[[2,[9]]]],[[],[[4,[9]]]],[[],3],[[[2,[10]],[2,[10]]],11],[[[4,[10]],[4,[10]]],11],[[3,3],11],[[[2,[1]],12],12],[[[4,[1]],12],12],[[3,12],12],[[6,13],14],[[7,13],14],[[[2,[15]],13],14],[[[4,[15]],13],14],[[3,13],14],[[]],[[]],[[]],[[]],[12,3],[[]],[[6,16]],[[7,16]],[[[2,[17]],16]],[[[4,[17]],16]],[[3,16]],[[]],[[]],[[]],[[]],[[]],[[3,[5,[3]]]],[[[2,[1]],18],[[19,[12]]]],[[[4,[1]],18],[[19,[12]]]],[3],[12,12],[12,12],[12,12],[[],[[2,[1]]]],[[],[[4,[1]]]],[3,3],[[3,[5,[3]]]],[[]],[[]],[[]],[[]],[[]],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],21],[[],21],[[],21],[[],21],[[],21]],"c":[],"p":[[8,"ConvexOrConcave"],[3,"VecCht"],[3,"Quadratic"],[3,"BTreeCht"],[8,"Into"],[4,"Convex"],[4,"Concave"],[8,"Clone"],[8,"Default"],[8,"PartialEq"],[15,"bool"],[15,"i64"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[8,"Hasher"],[8,"Hash"],[8,"Iterator"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"cipolla":{"doc":"","t":"SSISF","n":["ONE","TWO","Unsigned","ZERO","cipolla_sqrt"],"q":[[0,"cipolla"]],"d":["","","","",""],"i":[1,1,0,1,0],"f":[0,0,0,0,[[1,1],[[2,[1]]]]],"c":[],"p":[[8,"Unsigned"],[4,"Option"]]},\ +"convex_hull":{"doc":"","t":"FFFFF","n":["caliper","ccw","convex_hull","is_convex","sqmag"],"q":[[0,"convex_hull"]],"d":["凸包を求めます。 …","det(p1 - p0, p2 - p0) を求めます。","凸包を求めます。 …","凸であれば true を返します。","|p0 - p1| ^ 2 を求めます。"],"i":[0,0,0,0,0],"f":[[[]],[[],1],[[],2],[[],3],[[],1]],"c":[],"p":[[15,"i64"],[3,"Vec"],[15,"bool"]]},\ +"dfs":{"doc":"","t":"F","n":["calc_reachability"],"q":[[0,"dfs"]],"d":["一点からの到達可能性配列を返します。"],"i":[0],"f":[[1,[[3,[2]]]]],"c":[],"p":[[15,"usize"],[15,"bool"],[3,"Vec"]]},\ +"dijkstra_radix_heap":{"doc":"CAUTION: RadixHeap fails in testst!","t":"FF","n":["calc_dist","calc_dist_restore"],"q":[[0,"dijkstra_radix_heap"]],"d":["一点からの距離配列を作ります。","一点からの距離配列を作ります。"],"i":[0,0],"f":[[1,[[3,[2]]]],[1]],"c":[0],"p":[[15,"usize"],[15,"u32"],[3,"Vec"]]},\ +"dinic":{"doc":"Solves maximum flow problem.","t":"DDDILLLLLLLMLLLLLLLLLLLMLLLLLLLMLLLLKLLLLLMLLLLLLLLLLLLK","n":["Dinic","Edge","EdgeKey","Value","add_edge","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cap","change_edge","clone","clone","clone","clone_into","clone_into","clone_into","eq","eq","eq","flow","flow","flow_with_limit","fmt","fmt","fmt","from","from","from","from","get_edge","get_edges","get_excess","get_network","infinity","into","into","into","min_cut","new","to","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","zero"],"q":[[0,"dinic"]],"d":["A struct to execute Dinic’s algorithm.","A summary of the state of an edge, which is returned by …","A key object to query an edge.","An adapter trait of the capacity.","Inserts a new edge to the network.","","","","","","","The capacity of an edge.","Changes the capacity and the amount of the edge …","","","","","","","","","","Auguments the flow from s to t as much as possible. It …","The value of the flow of the network at this edge.","Auguments the flow from s to t as much as possible as long …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The vertex-index of the source of an edge.","Returns the current internal state of the edges.","Collects all the edges.","Returens the Vec of excess of all the vertices.","Collects all the edges and arrange it in adjacent-list …","Returns the max value of Self.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns a vector of length n, such that the i-th element …","Creates a new instance of Dinic","The vertex-index of the target of an edge.","","","","","","","","","","","","","Returns the zero."],"i":[0,0,0,0,2,2,6,4,2,6,4,6,2,2,6,4,2,6,4,2,6,4,2,6,2,2,6,4,2,6,4,6,2,2,2,2,1,2,6,4,2,2,6,2,6,4,2,6,4,2,6,4,2,6,4,1],"f":[0,0,0,0,[[[2,[1]],3,3,1],4],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[2,[1]],4,1,1]],[[[2,[5]]],[[2,[5]]]],[[[6,[5]]],[[6,[5]]]],[4,4],[[]],[[]],[[]],[[[2,[7]],[2,[7]]],8],[[[6,[7]],[6,[7]]],8],[[4,4],8],[[[2,[1]],3,3],1],0,[[[2,[1]],3,3,1],1],[[[2,[1]],9],10],[[[6,[11]],9],10],[[4,9],10],[[]],[[]],[[]],0,[[[2,[1]],4],[[6,[1]]]],[[[2,[1]]],[[12,[[6,[1]]]]]],[[[2,[1]]],[[12,[1]]]],[[[2,[1]]],[[12,[[12,[[6,[1]]]]]]]],[[]],[[]],[[]],[[]],[[[2,[1]],3],[[12,[8]]]],[3,[[2,[1]]]],0,[[]],[[]],[[]],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],14],[[],14],[[],14],[[]]],"c":[],"p":[[8,"Value"],[3,"Dinic"],[15,"usize"],[3,"EdgeKey"],[8,"Clone"],[3,"Edge"],[8,"PartialEq"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"dual_segtree":{"doc":"双対セグメント木(右作用)","t":"DIQLLLLLLLLLLLLLLLLKLLLLLKLLLLL","n":["DualSegtree","Ops","Value","apply","borrow","borrow_mut","clone","clone_into","collect_vec","default","eq","fmt","from","from","from_iter","get","get_cloned","get_copied","get_mut","identity","into","into_vec","is_empty","len","new","op","op_assign_from_right","to_owned","try_from","try_into","type_id"],"q":[[0,"dual_segtree"]],"d":["双対セグメント木(右作用)","演算(右作用)","値型","rangex を作用させます。(右作用)","","","","","Vec に変換します。","","","","","Returns the argument unchanged.","","i 番目の要素への参照を返します。","i 番目の要素をクローンして返します。","i 番目の要素をコピーして返します。","i 番目の要素への可変参照を返します。","op の単位元","Calls U::from(self).","Vec に変換します。","空なら true を返します。","管理している配列の長さを返します。","ExactSizeIterator から作ります。","作用する演算(右作用)","lhsop(lhs, rhs) で置き換えます。","","","",""],"i":[0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,2,2,2,2],"f":[0,0,0,[[[2,[1]],[4,[3]]]],[[]],[[]],[[[2,[[0,[5,1]]]]],[[2,[[0,[5,1]]]]]],[[]],[[[2,[1]]],6],[[],[[2,[[0,[7,1]]]]]],[[[2,[[0,[8,1]]]],[2,[[0,[8,1]]]]],9],[[[2,[1]],10],11],[6,[[2,[1]]]],[[]],[12,[[2,[1]]]],[[[2,[1]],3]],[[[2,[1]],3]],[[[2,[1]],3]],[[[2,[1]],3]],[[]],[[]],[[[2,[1]]],6],[[[2,[1]]],9],[[[2,[1]]],3],[12,[[2,[1]]]],[[]],[[]],[[]],[[],13],[[],13],[[],14]],"c":[],"p":[[8,"Ops"],[3,"DualSegtree"],[15,"usize"],[8,"RangeBounds"],[8,"Clone"],[3,"Vec"],[8,"Default"],[8,"PartialEq"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"IntoIterator"],[4,"Result"],[3,"TypeId"]]},\ +"elim":{"doc":"","t":"F","n":["column_reduce"],"q":[[0,"elim"]],"d":["…"],"i":[0],"f":[[[],1]],"c":[],"p":[[15,"usize"]]},\ +"erato":{"doc":"Use the two types of sieve of eratosthenes to query.","t":"IDIDDDDDDKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLK","n":["Int","LpdSieve","PrimeFactors","PrimeFactorsByLookup","PrimeFactorsByTrialDivision","PrimeNumbers","Rle","Sieve","Unique","as_usize","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","default","eq","eq","fmt","fmt","from","from","from","from","from","from","from","from_usize","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","is_empty","is_empty","is_prime","is_prime","len","len","lpd","new","new","next","next","next","next","next","one","prime_factors","prime_factors","prime_numbers","prime_numbers","rle","rle","rle","rle","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","two","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unique","unique","unique","unique","with_len","with_len","zero"],"q":[[0,"erato"]],"d":["Abstraction of integers.","Least-prime-divisor table.","An abstraction of prime factor generator.","See the document of crate::LpdSieve::prime_factors","See the document of crate::Sieve::prime_factors","An iterator to generate all the prime numbers, constructed …","An iterator returned by PrimeFactors::rle","Is-prime table.","An iterator returned by PrimeFactors::unique","Converts into usize","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Converts an usize into Self","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","Returns true if a sieve is empty.","Returns true if a sieve is empty.","Returns true if x is a prime number.","Returns true if x is a prime number.","Returns the length of a sieve.","Returns the length of a sieve.","Returns the least prime divisor of x.","Construct a new empty sieve. No heap allocations is run …","Construct a new empty sieve. No heap allocations is run …","","","","","","Returns 1.","Use trial-division algorithm to iterate over all the prime …","Use trial-division algorithm to iterate over all the prime …","Returns an iterator to generate all the prime numbers in …","Returns an iterator to generate all the prime numbers in …","Returns an iterator to generate the pairs of distinct …","Returns an iterator to generate the pairs of distinct …","","Forward crate::PrimeFactors::rle.","","","","","","","","","","","","","","","","","Returns 2.","","","","","","","","Make prime factors unique.","Make prime factors unique.","","Forward crate::PrimeFactors::unique.","Construct a sieve of given length.","Construct a sieve of given length.","Returns 0."],"i":[0,0,0,0,0,0,0,0,0,7,9,11,12,13,14,2,3,9,11,12,13,14,2,3,2,3,2,3,2,3,2,3,2,3,9,11,12,13,14,2,3,7,9,11,12,13,14,2,3,9,11,12,13,14,2,3,2,3,2,3,2,2,3,9,11,12,13,14,7,2,3,2,3,8,8,13,14,2,3,9,11,12,13,14,2,3,9,11,12,13,14,2,3,7,9,11,12,13,14,2,3,8,8,13,14,2,3,7],"f":[0,0,0,0,0,0,0,0,0,[[],1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,2],[3,3],[[]],[[]],[[],2],[[],3],[[2,2],4],[[3,3],4],[[2,5],6],[[3,5],6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[2,4],[3,4],[[2,7],4],[[3,7],4],[2,1],[3,1],[[2,7],7],[[],2],[[],3],[[[9,[7,[8,[7]]]]],10],[[[11,[7,[8,[7]]]]],10],[[[12,[0,7]]],10],[[[13,[7]]],10],[[[14,[7]]],10],[[]],[[2,7],[[14,[7]]]],[[3,7],[[13,[7]]]],[2,[[12,[0,7]]]],[3,[[12,[0,7]]]],[[],11],[[],11],[[[13,[7]]],[[11,[7,[13,[7]]]]]],[[[14,[7]]],[[11,[7,[14,[7]]]]]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],9],[[],9],[[[13,[7]]],[[9,[7,[13,[7]]]]]],[[[14,[7]]],[[9,[7,[14,[7]]]]]],[1,2],[1,3],[[]]],"c":[],"p":[[15,"usize"],[3,"LpdSieve"],[3,"Sieve"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Int"],[8,"PrimeFactors"],[3,"Unique"],[4,"Option"],[3,"Rle"],[3,"PrimeNumbers"],[3,"PrimeFactorsByTrialDivision"],[3,"PrimeFactorsByLookup"],[4,"Result"],[3,"TypeId"]]},\ +"euclid":{"doc":"","t":"IIIKFKLFFKKKK","n":["Int","Signed","Unsigned","abs","crt","div_euclid","divides","ext_gcd","gcd","increment","one","rem_euclid","zero"],"q":[[0,"euclid"]],"d":["Abstraction of integers.","Abstraction of signed integers.","Abstraction of unsigned integers.","Returns the absolute value.","Returns an integer res2, mod2 such that (res0 + mod0 ℤ) …","Calculates the quotient of Euclidean division of self by …","Returns true if and only if self divides n.","Takes two integers x, y and returns a, b, g satisfying …","Returns the greatest common divisor of x and y.","Increment self.","Returns 1.","Calculates the least nonnegative remainder of …","Returns 0."],"i":[0,0,0,4,0,4,4,0,0,4,4,4,4],"f":[0,0,0,[[]],[[1,1,1,1],2],[[]],[[],3],[[1,1]],[[4,4],4],[[]],[[]],[[]],[[]]],"c":[],"p":[[8,"Signed"],[4,"Option"],[15,"bool"],[8,"Int"]]},\ +"fp":{"doc":"A library for modular arithmetic.","t":"DDISLLLLLLFLLLLLLLLLLLLLLLLLFLLOFLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Factorial","Fp","PrimitiveRoot","VALUE","add","add","add","add","add_assign","add_assign","any_mod_fps_mul","binom","binom_signed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","div","div","div","div","div_assign","div_assign","eq","fact","falling","fft","fmt","fmt","fp","fps_mul","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","ifft","index","into","into","inv","inv_fact","m1pow","mul","mul","mul","mul","mul_assign","mul_assign","multinom","multiset_number","neg","new","new","pow","product","product","sign","sub","sub","sub","sub","sub_assign","sub_assign","sum","sum","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","value"],"q":[[0,"fp"]],"d":["Precomputes the factorials and their inverses.","A value in $\\\\mathbb{Fp}_p$.","A primitive root of unity.","A primitive root of unity.","","","","","","","Multiplies two polynomials.","$[x^k](1 + x)^n$.","$[x^k](1 + x)^n$.","","","","","","","","","","","","","","The factorial $n!$ Index is implemented for this method.","$[x^{n-k}]D^k x^n$.","Fast Fourier transform.","","","Constructs a new instance of Fp","Multiplies two polynomials.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","","","","Inverse fast Fourier transform.","","Calls U::from(self).","Calls U::from(self).","Returns the multiplicative inverse.","The inverse of the factorial $n!$","$(-1) ^ e$.","","","","","","","$[x^{a_1} \\\\cdot x^{a_l}](x_{a_1} + \\\\cdot x_{a_l})^n$.","$[x^k](1 - x)^{-n}$.","","Constructs a new instance.","Constructs a new instance.","Returns the $n$-th power.","","","Returns $(-1)^{\\\\text{pow}}$.","","","","","","","","","","","","","","","","","Returns the value."],"i":[0,0,0,26,1,1,1,1,1,1,0,4,4,4,1,4,1,1,1,1,1,1,1,1,1,1,4,4,0,1,1,0,0,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4,1,1,4,1,1,1,1,1,1,1,4,4,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,1,4,1,1],"f":[0,0,0,0,[[1,[2,[1]]]],[[1,1]],[[1,1]],[[1,[2,[1]]]],[[1,1]],[[1,1]],[[],[[3,[1]]]],[[4,5,5],1],[[4,5,6],1],[[]],[[]],[[]],[[]],[1,1],[[]],[[1,1]],[[1,[2,[1]]]],[[1,1]],[[1,[2,[1]]]],[[1,1]],[[1,1]],[[1,1],7],[[4,5],1],[[4,5,5],1],[[]],[[1,8],9],[[1,8],9],0,[[10,10],[[3,[1]]]],[[]],[11,1],[[]],[12,1],[5,1],[13,1],[14,1],[15,1],[6,1],[16,1],[17,1],[18,1],[19,1],[20,1],[[1,21]],[[]],[[4,5]],[[]],[[]],[1,1],[[4,5],1],[5,1],[[1,1]],[[1,[2,[1]]]],[[1,[2,[1]]]],[[1,1]],[[1,1]],[[1,1]],[4,1],[[4,5,5],1],[1],[5,4],[12,1],[[1,12],1],[22,1],[22,1],[5,1],[[1,1]],[[1,[2,[1]]]],[[1,1]],[[1,[2,[1]]]],[[1,1]],[[1,1]],[22,1],[22,1],[[]],[[],23],[[],24],[[],24],[[],24],[[],24],[[],25],[[],25],[1,12]],"c":[],"p":[[3,"Fp"],[8,"Into"],[3,"Vec"],[3,"Factorial"],[15,"usize"],[15,"isize"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"AsRef"],[15,"u16"],[15,"u64"],[15,"u8"],[15,"i16"],[15,"u32"],[15,"i128"],[15,"u128"],[15,"i8"],[15,"i64"],[15,"i32"],[8,"Hasher"],[8,"Iterator"],[3,"String"],[4,"Result"],[3,"TypeId"],[8,"PrimitiveRoot"]]},\ +"fps":{"doc":"Arithmetic of formal power series.","t":"OFFFFFFF","n":["fps","fps_deriv","fps_exp","fps_int","fps_inv","fps_log","fps_pow","fps_sqrt"],"q":[[0,"fps"]],"d":["Define a formal power series in the same way as vec!.","Returns the derivative of a formal power series.","Returns the exponential of a formal power series.","Returns the integral of a formal power series with zero …","Returns the multiplicative inverse of a formal power …","Returns the logarithm of a formal power series.","Resutns the $n$-th power of a formal power series.","Returns the square root of a formal power series."],"i":[0,0,0,0,0,0,0,0],"f":[0,[[1,2],[[4,[3]]]],[[1,2],[[4,[3]]]],[[1,2],[[4,[3]]]],[[1,2],[[4,[3]]]],[[1,2],[[4,[3]]]],[[1,2,2],[[4,[3]]]],[[1,2],[[4,[3]]]]],"c":[],"p":[[8,"AsRef"],[15,"usize"],[3,"Fp"],[3,"Vec"]]},\ +"gco":{"doc":"Solve a submodular graph cut optimizaion problem of degree …","t":"DDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["Gco","GcoResult","args","binary","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","default","eq","eq","fmt","fmt","from","from","hash","hash","into","into","new","solve","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","unary","value"],"q":[[0,"gco"]],"d":["A solver of graph cut optimization problems.","The minimum value and and an argmin of $f$.","An argmin","Add a binary term.","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Initialize a solver with $n$ terms.","Returns the minimum value and an argmin of $f$.","","","","","","","","","Add a unary term.","The minimum value"],"i":[0,0,2,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,1,1,2,1,2,1,2,1,2,1,2],"f":[0,0,0,[1],[[]],[[]],[[]],[[]],[1,1],[2,2],[[]],[[]],[[],1],[[],2],[[1,1],3],[[2,2],3],[[1,4],5],[[2,4],5],[[]],[[]],[[1,6]],[[2,6]],[[]],[[]],[7,1],[1,2],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[1,7]],0],"c":[],"p":[[3,"Gco"],[3,"GcoResult"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[15,"usize"],[4,"Result"],[3,"TypeId"]]},\ +"gss":{"doc":"黄金分割探索をします。","t":"IISIKKKKFFFFKKKKKK","n":["Float","Golden","INVPHI","Int","abs","as_f64","f64_as","golden_sect","gss_by_absolute_eps","gss_by_count","gss_integer","gss_on_slice","is_finite","max","midpoint_sorted","one","two","zero"],"q":[[0,"gss"]],"d":["gss_by_count …","黄金分割をする関数 golden_sect …","1 / φ = 0.6180339887498949","gss_integer …","Self の同名メソッド","","","selfother を φ:1 …","…","回数指定バージョン。count …","整数バージョン。正確な値を返します。","…","Self の同名メソッド","Self の同名メソッド","数学的な floor((self + upper)/2) …","1","2.0","0.0"],"i":[0,0,2,0,2,6,6,3,0,0,0,0,2,2,6,6,2,2],"f":[0,0,0,0,[[]],[[],1],[1],[[]],[[[0,[2,3]],[0,[2,3]],4,[0,[2,3]]],[[0,[2,3]]]],[[[0,[2,3]],[0,[2,3]],4,5],[[0,[2,3]]]],[[[0,[6,3]],[0,[6,3]],4],[[0,[6,3]]]],[[],5],[[],7],[[]],[[]],[[]],[[]],[[]]],"c":[],"p":[[15,"f64"],[8,"Float"],[8,"Golden"],[8,"Fn"],[15,"usize"],[8,"Int"],[15,"bool"]]},\ +"heap_slope_trick":{"doc":"BinaryHeap 二本で slope trick をします。","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLL","n":["HeapSlopeTrick","Summary","add_abs","add_const","add_cutoff_anti_diagonal","add_cutoff_diagonal","articulation_points","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cumulative_min_from_left","cumulative_min_from_right","default","default","eq","eval","fmt","fmt","from","from","get_argmin","get_minimum","get_tilt_maximum","get_tilt_minimum","hash","into","into","merge","new","shift","sliding_window_minimum","summary","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"heap_slope_trick"]],"d":["本体です。","HeapSlopeTrick::summary() の戻り値です。","絶対値関数加算 g(x) = f(x) + |x - a|","定数関数加算 g(x) = f(x) + c","傾き -1 のカットオフ一次関数加算 g(x) = f(x) …","傾き +1 のカットオフ一次関数加算 g(x) = f(x) …","関節点(二階差分が正である点)全体の列 …","","","","","","","","","左から累積最小値 g(x) = min { f(y) | y ∈ ]-∞, x…","右から累積最小値 g(x) = min { f(y) | y ∈ [x, ∞[…","","","","一点評価 f(x)","","","Returns the argument unchanged.","Returns the argument unchanged.","最小値を取る x の集合(と [MIN, MAX] …","最小値取得 min { f(x) | x in ]-∞, ∞[ }","差分の最大値 max { f(x + 1) - f(x) | x ∈ ]-∞, ∞…","差分の最小値 min { f(x + 1) - f(x) | x ∈ ]-∞, ∞…","","Calls U::from(self).","Calls U::from(self).","足し算をします。","零関数 f(x) = 0","平行移動 g(x) = f ( x - a )","スライド最小値 g(x) = min { f(y) | y ∈ [x - b, x …","関節点と差分の範囲を返します。","","","","","","","",""],"i":[0,0,1,1,1,1,1,1,4,1,4,1,4,1,4,1,1,1,4,4,1,1,4,1,4,1,1,1,1,4,1,4,0,1,1,1,1,1,4,1,4,1,4,1,4],"f":[0,0,[[1,2]],[[1,2]],[[1,2]],[[1,2]],[1,3],[[]],[[]],[[]],[[]],[1,1],[4,4],[[]],[[]],[1],[1],[[],1],[[],4],[[4,4],5],[[1,2],2],[[1,6],7],[[4,6],7],[[]],[[]],[1],[1,2],[1,2],[1,2],[[4,8]],[[]],[[]],[[1,1],1],[[],1],[[1,2]],[[1,2,2]],[1,4],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10]],"c":[],"p":[[3,"HeapSlopeTrick"],[15,"i64"],[3,"Vec"],[3,"Summary"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[4,"Result"],[3,"TypeId"]]},\ +"heap_tricks":{"doc":"remove_unchecked のできるヒープです。","t":"DIDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLKLLLKLLLLKLLLKLLLLLLMLLLLLLLLLLLLLLLLLL","n":["DoubleHeap","Handler","Nop","RemovableHeap","Sum","balance_left","balance_right","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","collect_left_sorted_vec","collect_right_sorted_vec","collect_sorted_vec","collect_sorted_vec","default","default","default","default","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","from_iter","handler","hash","hash","into","into","into","into","is_empty","is_empty","left","left_len","len","len","move_left","move_right","new","new","peek","peek_left","peek_right","pop","pop_left","pop_left","pop_left","pop_left","pop_right","pop_right","pop_right","pop_right","push","push_left","push_left","push_left","push_left","push_right","push_right","push_right","push_right","remove_left_unchecked","remove_right_unchecked","remove_unchecked","right","right_len","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","with_handler"],"q":[[0,"heap_tricks"]],"d":["…","集約操作を指定するためのトレイトです。 …","何も集約しないことを表す型です。 Handler …","論理削除のできるヒープです。","総和を集約するための型です。 Handler …","左側ヒープの要素が k …","右側ヒープの要素が k …","","","","","","","","","","","","","","","","","…","…","…","…","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","ハンドラへの参照を返します。","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","ヒープが空ならば true を返します。","ヒープが空ならば true を返します。","","左側ヒープの要素数を返します。","全体の要素数を返します。","ヒープの長さを返します。","…","…","","空のヒープを構築します。","…","左側ヒープの最大要素があれば返します。","右側ヒープの最大要素があれば返します。","…","左側から削除するときのコールバック関数","","","…","右側から削除するときのコールバック関数","","","…","ヒープに新しい要素 x を追加します。","左側に挿入するときのコールバック関数","","","…","右側に挿入するときのコールバック関数","","","…","…","…","ヒープに含まれる要素 x を削除します。 …","","右側ヒープの要素数を返します。","","","","","","","","","","","","","","","","","Handler を指定して構築します。"],"i":[0,0,0,0,0,5,5,7,9,5,10,7,9,5,10,7,9,5,10,7,9,5,10,5,5,5,10,7,9,5,10,7,9,7,9,5,10,7,9,5,10,10,5,7,9,7,9,5,10,5,10,9,5,5,10,5,5,5,10,10,5,5,10,4,7,9,5,4,7,9,5,10,4,7,9,5,4,7,9,5,5,5,10,9,5,7,9,5,10,7,9,5,10,7,9,5,10,7,9,5,10,5],"f":[0,0,0,0,0,[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],6]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[7,7],[[[9,[8]]],[[9,[8]]]],[[[5,[8,8]]],[[5,[8,8]]]],[[[10,[8]]],[[10,[8]]]],[[]],[[]],[[]],[[]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[11,[[0,[1,2,3]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[11,[[0,[1,2,3]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[11,[[0,[1,2,3]]]]]],[[[10,[[0,[1,2,3]]]]],[[11,[[0,[1,2,3]]]]]],[[],7],[[],[[9,[12]]]],[[],[[5,[[0,[1,2,3]],7]]]],[[],[[10,[[0,[1,2,3]]]]]],[[7,7],13],[[[9,[14]],[9,[14]]],13],[[7,15],16],[[[9,[17]],15],16],[[[5,[[0,[1,2,3,17]],[0,[[4,[[0,[1,2,3,17]]]],17]]]],15],16],[[[10,[[0,[1,2,3,17]]]],15],16],[[]],[[]],[[]],[[]],[18,[[10,[[0,[1,2,3]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[4,[[0,[1,2,3]]]]]],[[7,19]],[[[9,[3]],19]],[[]],[[]],[[]],[[]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],13],[[[10,[[0,[1,2,3]]]]],13],0,[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],6],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],6],[[[10,[[0,[1,2,3]]]]],6],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]]],[[],[[5,[[0,[1,2,3]],7]]]],[[],[[10,[[0,[1,2,3]]]]]],[[[10,[[0,[1,2,3]]]]],[[20,[[0,[1,2,3]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[20,[[0,[1,2,3]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[20,[[0,[1,2,3]]]]]],[[[10,[[0,[1,2,3]]]]],[[20,[[0,[1,2,3]]]]]],[[]],[7],[[[9,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[0,[[21,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[20,[[0,[1,2,3]]]]]],[[]],[7],[[[9,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[0,[[21,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],[[20,[[0,[1,2,3]]]]]],[[[10,[[0,[1,2,3]]]],[0,[1,2,3]]]],[[]],[7],[[[9,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[0,[[21,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],[0,[1,2,3]]]],[[]],[7],[[[9,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[0,[[21,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]],[22,[[0,[[21,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]],[22,[[0,[[21,[[0,[21,22]]]],[22,[[0,[21,22]]]]]]]]]]]]]]]]]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],[0,[1,2,3]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],[0,[1,2,3]]]],[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]],[0,[1,2,3]]]],[[[10,[[0,[1,2,3]]]],[0,[1,2,3]]]],0,[[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]],6],[[]],[[]],[[]],[[]],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],23],[[],24],[[],24],[[],24],[[],24],[[[4,[[0,[1,2,3]]]]],[[5,[[0,[1,2,3]],[4,[[0,[1,2,3]]]]]]]]],"c":[],"p":[[8,"Copy"],[8,"Ord"],[8,"Hash"],[8,"Handler"],[3,"DoubleHeap"],[15,"usize"],[3,"Nop"],[8,"Clone"],[3,"Sum"],[3,"RemovableHeap"],[3,"Vec"],[8,"Default"],[15,"bool"],[8,"PartialEq"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[8,"IntoIterator"],[8,"Hasher"],[4,"Option"],[8,"AddAssign"],[8,"SubAssign"],[4,"Result"],[3,"TypeId"]]},\ +"hld":{"doc":"Heavy-Light Decomposition","t":"DDLLLLLLLLLLLMMLLLLLLMLLLLLLLL","n":["Hld","PathSegments","between","borrow","borrow","borrow_mut","borrow_mut","dist","from","from","from_edge_iterator","from_edges","from_short_parents","head","index","into","into","into_iter","lca","ledacy_iter_v","next","parent","path_segments","path_segments_by_index","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"hld"]],"d":["Heavy-Light Decomposition","Iterator","j lies between i and k","","","","","Returns the distance between two vertices","Returns the argument unchanged.","Returns the argument unchanged.","Iterator version of from_edges","From the set of undirected edges $(u _ 0, v _ 0), \\\\dots ( …","From $p _ 1, \\\\dots, p _ { n - 1 }$. Root is always $0$.","vertex id -> head vertex id","vertex id -> vertex index (in the hld order)","Calls U::from(self).","Calls U::from(self).","","Returns the lca","deprecated","","vertex id -> parent vertex id","Decompose the (directed) path from --> to to the path …","Variation of path_segments that returns the index.","","","","","",""],"i":[0,0,1,1,7,1,7,1,1,7,1,1,1,1,1,1,7,7,1,1,7,1,1,1,1,7,1,7,1,7],"f":[0,0,[[1,2,2,2],3],[[]],[[]],[[]],[[]],[[1,2,2],2],[[]],[[]],[[2,4]],[2],[[[5,[2]]]],0,0,[[]],[[]],[[]],[[1,2,2],2],[[1,2,2],6],[7,8],0,[[1,2,2],7],[[1,2,2],6],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10]],"c":[],"p":[[3,"Hld"],[15,"usize"],[15,"bool"],[8,"ExactSizeIterator"],[3,"Vec"],[8,"Iterator"],[3,"PathSegments"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"hopkarp":{"doc":"Finds a maximum cardinality bipartite matching by …","t":"DMLLLLMLLLMLLFLMMLLLL","n":["HopkarpResult","backward","borrow","borrow_mut","clone","clone_into","count","default","eq","fmt","forward","from","hash","hopkarp","into","left","right","to_owned","try_from","try_into","type_id"],"q":[[0,"hopkarp"]],"d":["Summary of the result of Hopcroft―Karp’s algorithm.","","","","","","Cardinality of a maximum cardinality bipartite matching.","","","","","Returns the argument unchanged.","","Takes a forward adjacency list and the length of the right …","Calls U::from(self).","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1],"f":[0,0,[[]],[[]],[1,1],[[]],0,[[],1],[[1,1],2],[[1,3],4],0,[[]],[[1,5]],[6,1],[[]],0,0,[[]],[[],7],[[],7],[[],8]],"c":[],"p":[[3,"HopkarpResult"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[15,"usize"],[4,"Result"],[3,"TypeId"]]},\ +"hungarian":{"doc":"Solve an assignment problem by Hungarian algorithm.","t":"DIMLLLLLLMLFKLMMLLLLMK","n":["HungarianResult","Value","backward","borrow","borrow_mut","clone","clone_into","eq","fmt","forward","from","hungarian","infinity","into","left","right","to_owned","try_from","try_into","type_id","value","zero"],"q":[[0,"hungarian"]],"d":["A value object to represent the optimal solution of an …","A trait to adapt a value type to hungarian","Takes the second component of a match and returns the …","","","","","","","Takes the first component of a match and returns the …","Returns the argument unchanged.","See the crate level documentation","","Calls U::from(self).","A left half of an optimal potential.","A right half of an optimal potential.","","","","","The value of an optimal solution.",""],"i":[0,0,3,3,3,3,3,3,3,3,3,0,2,3,3,3,3,3,3,3,3,2],"f":[0,0,0,[[]],[[]],[[[3,[[0,[1,2]]]]],[[3,[[0,[1,2]]]]]],[[]],[[[3,[[0,[4,2]]]],[3,[[0,[4,2]]]]],5],[[[3,[[0,[6,2]]]],7],8],0,[[]],[[],[[3,[2]]]],[[]],[[]],0,0,[[]],[[],9],[[],9],[[],10],0,[[]]],"c":[],"p":[[8,"Clone"],[8,"Value"],[3,"HungarianResult"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[4,"Result"],[3,"TypeId"]]},\ +"interval_heap":{"doc":"Interval Heaps","t":"DLLLLLLLLLLLLLLLLLLLLLLL","n":["IntervalHeap","borrow","borrow_mut","clone","clone_into","default","eq","extend","fmt","from","from","from_iter","into","into_iter","new","peek_max","peek_min","pop_max","pop_min","push","to_owned","try_from","try_into","type_id"],"q":[[0,"interval_heap"]],"d":["Interval heap (double-ended priority queue)","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","Constructs a new, empty interval heap.","Returns $\\\\max(S)$.","Returns $\\\\min(S)$.","Removes and returns $\\\\max(S)$.","Removes and returns $\\\\min(S)$.","$S \\\\leftarrow S \\\\cup \\\\{\\\\!\\\\{x\\\\}\\\\!\\\\}$.","","","",""],"i":[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],"f":[0,[[]],[[]],[[[3,[[0,[1,2]]]]],[[3,[[0,[1,2]]]]]],[[]],[[],[[3,[2]]]],[[[3,[[0,[4,2]]]],[3,[[0,[4,2]]]]],5],[[[3,[2]],6]],[[[3,[[0,[7,2]]]],8],9],[[]],[[[10,[2]]],[[3,[2]]]],[6,[[3,[2]]]],[[]],[[[3,[2]]]],[[],[[3,[2]]]],[[[3,[2]]],[[11,[2]]]],[[[3,[2]]],[[11,[2]]]],[[[3,[2]]],[[11,[2]]]],[[[3,[2]]],[[11,[2]]]],[[[3,[2]],2]],[[]],[[],12],[[],12],[[],13]],"c":[],"p":[[8,"Clone"],[8,"Ord"],[3,"IntervalHeap"],[8,"PartialEq"],[15,"bool"],[8,"IntoIterator"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Vec"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"io":{"doc":"Read input from stdin and parse it.","t":"IFK","n":["ParseLine","input","parse_line"],"q":[[0,"io"]],"d":["Trait for types that can be parsed.","Read input from stdin and parse it.",""],"i":[0,0,1],"f":[0,[[],1],[2]],"c":[],"p":[[8,"ParseLine"],[15,"str"]]},\ +"lagrange":{"doc":"ラグランジュ補完","t":"FFFF","n":["evaluate","interpolate","interpolate_first_n","interpolate_one_point_first_n"],"q":[[0,"lagrange"]],"d":["多項式の係数から 1 …","x 座標の異なるような N 点の評価から、N - 1 …","0..N の評価から、N - 1 …","0..N での評価から決まる N - 1 …"],"i":[0,0,0,0],"f":[[1,1],[[],[[2,[1]]]],[[],[[2,[1]]]],[1,1]],"c":[],"p":[[3,"Fp"],[3,"Vec"]]},\ +"lazy_segbeats":{"doc":"","t":"IDLLLLLLLLLLKKKLFLLLLLLLLK","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","eq","fmt","from","into","max_value","min_value","mul_u32","new","open","query_max","query_min","query_sum","range_add","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"lazy_segbeats"]],"d":["","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","",""],"i":[0,0,2,2,2,2,2,2,2,2,2,2,1,1,1,2,0,2,2,2,2,2,2,2,2,1],"f":[0,0,[[]],[[]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[3]]],[[2,[3]]]],[[]],[[[2,[6]],[2,[6]]],7],[[[2,[8]],9],10],[[]],[[]],[[]],[[]],[11],[[],[[2,[1]]]],[[4,[5,[4]]],[[12,[4]]]],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[]],[[],13],[[],13],[[],14],[[]]],"c":[],"p":[[8,"Elm"],[3,"Segbeats"],[8,"Clone"],[15,"usize"],[8,"RangeBounds"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"u32"],[3,"Range"],[4,"Result"],[3,"TypeId"]]},\ +"lazy_segtree":{"doc":"LazySegtree","t":"DIQQKLLLLLKLLLLLKKLLKLLLLL","n":["LazySegtree","Op","Operator","Value","apply","borrow","borrow_mut","clone","clone_into","collect","compose","fmt","fold","from","from_iter","get","identity","identity_op","into","new","op","range_apply","to_owned","try_from","try_into","type_id"],"q":[[0,"lazy_segtree"]],"d":["A lazy segment tree.","Opertions for a lazy segment tree.","The operator type.","The value type.","Applies an operator to a value.","","","","","Returns the values as a vector. It takes $O(n \\\\log n)$ …","Composes two operators. The result of compose(a, b) is …","","Folds a range.","Returns the argument unchanged.","","Returns the value at the index i.","Returns the identity value.","Returns the identity operator.","Calls U::from(self).","Constructs a new lazy segment tree. You can use from_iter …","Multiplies two values.","Applies an operator to a range.","","","",""],"i":[0,0,2,2,2,3,3,3,3,3,2,3,3,3,3,3,2,2,3,3,2,3,3,3,3,3],"f":[0,0,0,0,[[]],[[]],[[]],[[[3,[[0,[1,2]]]]],[[3,[[0,[1,2]]]]]],[[]],[[[3,[2]]],4],[[]],[[[3,[[0,[5,2]]]],6],7],[[[3,[2]],[9,[8]]]],[[]],[10,[[3,[2]]]],[[[3,[2]],8]],[[]],[[]],[[]],[[],[[3,[2]]]],[[]],[[[3,[2]],[9,[8]]]],[[]],[[],11],[[],11],[[],12]],"c":[],"p":[[8,"Clone"],[8,"Op"],[3,"LazySegtree"],[3,"Vec"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"usize"],[8,"RangeBounds"],[8,"IntoIterator"],[4,"Result"],[3,"TypeId"]]},\ +"lg":{"doc":"","t":"FFFFOFOOFOFFOFO","n":["align_of","bools","format","hmap","hmap","hvec","hvec","lg","remove_ampersand","table","vec2","vmap","vmap","vvec","vvec"],"q":[[0,"lg"]],"d":["","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[0,[2,3],[4,3],0,0,0,0,0,[1,1],0,0,0,0,0,0],"c":[],"p":[[15,"str"],[8,"IntoIterator"],[3,"String"],[8,"Debug"],[8,"Copy"]]},\ +"lin_ineq":{"doc":"一次不等式を解きます。","t":"DSSISLLLLLKLLLLLLLLLLLLLLFFLLLL","n":["Interval","MAX","MIN","Signed","ZERO","borrow","borrow_mut","clone","clone_into","contains","div_euclid","empty","fmt","from","full","intersection","into","is_empty","mul","mul","mul","mul","normalize","product","product","solve","solve_squeeze","to_owned","try_from","try_into","type_id"],"q":[[0,"lin_ineq"]],"d":["閉区間を表す、[T; 2] …","","","符号付き整数です。","","","","","","…","","標準形の空区間を返します。具体的には、…","Interval 型のオブジェクトを human readable …","Returns the argument unchanged.","全区間を返します。具体的には、[MIN, MAX] …","区間の交差を計算します。","Calls U::from(self).","空区間であるかどうかを判定します。","intersection() を呼び出します。","intersection() を呼び出します。","intersection() を呼び出します。","intersection() を呼び出します。","…","intersection() で畳み込みます。","intersection() で畳み込みます。","基本形 ax <= b","挟み撃ち形 l <= ax + b <= r","","","",""],"i":[0,3,3,0,3,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2],"f":[0,0,0,0,0,[[]],[[]],[[[2,[1]]],[[2,[1]]]],[[]],[[[2,[3]],3],4],[[]],[[],[[2,[3]]]],[[[2,[[0,[5,3]]]],6],7],[[]],[[],[[2,[3]]]],[[[2,[3]],[2,[3]]],[[2,[3]]]],[[]],[[[2,[3]]],4],[[[2,[3]],[2,[3]]]],[[[2,[3]],[2,[3]]]],[[[2,[3]],[2,[3]]]],[[[2,[3]],[2,[3]]]],[[[2,[3]]],[[2,[3]]]],[8,[[2,[3]]]],[8,[[2,[3]]]],[[3,3],[[2,[3]]]],[[3,3,[2,[3]]],[[2,[3]]]],[[]],[[],9],[[],9],[[],10]],"c":[],"p":[[8,"Clone"],[3,"Interval"],[8,"Signed"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"Iterator"],[4,"Result"],[3,"TypeId"]]},\ +"link_cut_tree":{"doc":"Link-Cut Tree","t":"GGDGIQLLLLLLLKLLLKLLLLLLLLLLL","n":["CommutLinkCutTree","LinkCutTree","LinkCutTreeBase","NonCommutLinkCutTree","Op","Value","borrow","borrow_mut","cut","evert","fold","from","from_values","identity","into","lca","link","mul","new","parent","set","try_from","try_into","type_id","undirected_cut","undirected_fold","undirected_has_edge","undirected_is_connected","undirected_link"],"q":[[0,"link_cut_tree"]],"d":["Link-Cut Tree with commutative operation","Link-Cut Tree without aggregation operation","Common implementation of Link-Cut Tree. Please do not use …","Link-Cut Tree with non-commutative operation","Aggregation operation for link-cut tree","","","","Cuts the edge between x and its parent.","Makes x the root of the tree.","Folds the path from the root to x.","Returns the argument unchanged.","Constructs a new Link-Cut Tree with n nodes, where the …","","Calls U::from(self).","Returns the id of the lowest common ancestor of x and y.","Connects p and c with an edge, preserving the direction.","","Constructs a new Link-Cut Tree with n nodes.","Returns the id of the parent of x.","Sets the value of x to f(x).","","","","Cuts the edge between i and j, not preserving the …","Folds the path from i to j, not preserving the direction.","Returns true if there is an edge between x and y.","Returns true if x and y are connected.","Connects i and j with an edge, not preserving the …"],"i":[0,0,0,0,0,9,1,1,1,1,1,1,1,9,1,1,1,9,1,1,1,1,1,1,1,1,1,1,1],"f":[0,0,0,0,0,0,[[]],[[]],[[[1,[0]],2],[[3,[2]]]],[[[1,[0]],2]],[[[1,[0]],2]],[[]],[4,[[1,[0]]]],[[]],[[]],[[[1,[0]],2,2],[[3,[2]]]],[[[1,[0]],2,2]],[[]],[2,[[1,[0]]]],[[[1,[0]],2],[[3,[2]]]],[[[1,[0]],2,5]],[[],6],[[],6],[[],7],[[[1,[0]],2,2],8],[[[1,[0]],2,2],3],[[[1,[0]],2,2],8],[[[1,[0]],2,2],8],[[[1,[0]],2,2],8]],"c":[],"p":[[3,"LinkCutTreeBase"],[15,"usize"],[4,"Option"],[8,"IntoIterator"],[8,"FnMut"],[4,"Result"],[3,"TypeId"],[15,"bool"],[8,"Op"]]},\ +"low_link":{"doc":"Low-link を計算します。","t":"DLLLLLLLLLLLLLLLLLLLLL","n":["LowLink","add_edge","biconnected_components","borrow","borrow_mut","build","clone","clone_into","default","eq","fmt","from","hash","into","is_articulation_point","is_bridge_unchecked","new","to_owned","try_from","try_into","two_edge_components","type_id"],"q":[[0,"low_link"]],"d":["Low-link を計算する構造体です。","…","…","","","ビルドします。","","","","","","Returns the argument unchanged.","","Calls U::from(self).","頂点 x が関節点なら true を返します。","頂点 x, y …","未ビルドの空グラフを構築します。","","","","…",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2,2]],[1,[[3,[3]]]],[[]],[[]],[1],[1,1],[[]],[[],1],[[1,1],4],[[1,5],6],[[]],[[1,7]],[[]],[[1,2],4],[[1,2,2],4],[2,1],[[]],[[],8],[[],8],[1,[[3,[[3,[2]]]]]],[[],9]],"c":[],"p":[[3,"LowLink"],[15,"usize"],[3,"Vec"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[4,"Result"],[3,"TypeId"]]},\ +"make_graph":{"doc":"…","t":"FFFFFFFFFFFF","n":["array_make_directed","array_make_directed_weighted","array_make_undirected","array_make_undirected_weighted","make_directed_by","make_directed_weighted_by","make_undirected_by","make_undirected_weighted_by","tuple_make_directed","tuple_make_directed_weighted","tuple_make_undirected","tuple_make_undirected_weighted"],"q":[[0,"make_graph"]],"d":["[u, v] …","([u, v], w) …","[u, v] …","([u, v], w) …","…","…","…","…","(u, v) …","(u, v, w) …","(u, v) …","(u, v, w) …"],"i":[0,0,0,0,0,0,0,0,0,0,0,0],"f":[[1,[[2,[[2,[1]]]]]],[1,[[2,[2]]]],[1,[[2,[[2,[1]]]]]],[1,[[2,[2]]]],[[1,3],[[2,[[2,[1]]]]]],[[1,3],[[2,[2]]]],[[1,3],[[2,[[2,[1]]]]]],[[1,3],[[2,[2]]]],[1,[[2,[[2,[1]]]]]],[1,[[2,[2]]]],[1,[[2,[[2,[1]]]]]],[1,[[2,[2]]]]],"c":[],"p":[[15,"usize"],[3,"Vec"],[8,"Fn"]]},\ +"manacher":{"doc":"Manacher’s algorithm","t":"F","n":["manacher"],"q":[[0,"manacher"]],"d":["Returns the palindrome array $A$ of the given string $s$."],"i":[0],"f":[[[],[[2,[1]]]]],"c":[],"p":[[15,"usize"],[3,"Vec"]]},\ +"mincost_flow":{"doc":"Dijkstra …","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Edge","MinCostFlow","add_edge","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","default","eq","eq","flow","fmt","fmt","from","from","get_edge","hash","hash","into","into","new","slope","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"mincost_flow"]],"d":["MinCostFlow::get_edge の戻り値型","Dijkstra …","辺を追加します。","","","","","","","","","","","","","解きます","","","Returns the argument unchanged.","Returns the argument unchanged.","i 番目に挿入した辺を取得します。","","","Calls U::from(self).","Calls U::from(self).","空グラフを構築します。","解きます","","","","","","","",""],"i":[0,0,1,4,1,4,1,4,1,4,1,4,1,4,1,1,4,1,4,1,1,4,1,4,1,1,1,4,1,4,1,4,1,4,1],"f":[0,0,[[1,2,2,3,3],2],[[]],[[]],[[]],[[]],[4,4],[1,1],[[]],[[]],[[],4],[[],1],[[4,4],5],[[1,1],5],[[1,2,2,3]],[[4,6],7],[[1,6],7],[[]],[[]],[[1,2],4],[[4,8]],[[1,8]],[[]],[[]],[2,1],[[1,2,2,3],9],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],11],[[],11]],"c":[],"p":[[3,"MinCostFlow"],[15,"usize"],[15,"i64"],[3,"Edge"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"monotone_minima":{"doc":"Monotone minima のアルゴリズムと、それによる …","t":"FFFFFF","n":["concave_maxplus_convolution","convex_minplus_convolution","monotone_maxima","monotone_maxima_by","monotone_minima","monotone_minima_by"],"q":[[0,"monotone_minima"]],"d":["concave な列に対して max-plus convolution …","convex な列に対して min-plus convolution …","行列 f(i, j) を受け取って、monotone maxima …","行ごとのセル比較 cmp(i, j, k) …","行列 f(i, j) を受け取って、monotone minima …","行ごとのセル比較 cmp(i, j, k) …"],"i":[0,0,0,0,0,0],"f":[[[],[[4,[[0,[1,2,3]]]]]],[[],[[4,[[0,[1,2,3]]]]]],[[5,5,6],[[4,[5]]]],[[5,5,[0,[7,1]]],[[4,[5]]]],[[5,5,6],[[4,[5]]]],[[5,5,[0,[7,1]]],[[4,[5]]]]],"c":[],"p":[[8,"Copy"],[8,"Ord"],[8,"Add"],[3,"Vec"],[15,"usize"],[8,"Fn"],[8,"FnMut"]]},\ +"naive_poly":{"doc":"Naive implementation of polynomial operations","t":"FFFFFF","n":["add","div","eval","mul","pow","sub"],"q":[[0,"naive_poly"]],"d":["Add two polynomials in $O(\\\\max(n, m))$ time.","Divide two polynomials in $O((n - m) m)$ time.","Evaluate a polynomial at a point in $O(n)$ time.","Multiply two polynomials in $O(nm)$ time.","Compute the $e$-th power of a polynomial in $O((en)^2 \\\\log …","Subtract two polynomials in $O(\\\\max(n, m))$ time."],"i":[0,0,0,0,0,0],"f":[[[],[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,4]]]],4]]]],4]]]],4]]]]]],[[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,6,7,8]]]],6,7,8]]]],6,7,8]]]],6,7,8]]]]],[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,6,7,8]]]],6,7,8]]]],6,7,8]]]],6,7,8]]]]]],[[[0,[1,[3,[[0,[1,[3,[[0,[1,[3,[[0,[1,[3,[[0,[1,3,7,4,9]]]],7,4,9]]]],7,4,9]]]],7,4,9]]]],7,4,9]]],[[0,[1,[3,[[0,[1,[3,[[0,[1,[3,[[0,[1,[3,[[0,[1,3,7,4,9]]]],7,4,9]]]],7,4,9]]]],7,4,9]]]],7,4,9]]]],[[],[[5,[[0,[1,[3,[[0,[1,[3,[[0,[1,[3,[[0,[1,3,7,4]]]],7,4]]]],7,4]]]],7,4]]]]]],[[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],4,7]]]],4,7]]]],11],[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],[10,[[0,[1,2,[3,[[0,[1,2,3,10,4,7]]]],[10,[[0,[1,2,3,10,4,7]]]],4,7]]]],4,7]]]],4,7]]]]]],[[],[[5,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,[3,[[0,[1,2,3,4,6,7]]]],4,6,7]]]],4,6,7]]]],4,6,7]]]]]]],"c":[],"p":[[8,"Copy"],[8,"PartialEq"],[8,"Sum"],[8,"AddAssign"],[3,"Vec"],[8,"SubAssign"],[8,"Mul"],[8,"Div"],[8,"MulAssign"],[8,"Product"],[15,"u64"]]},\ +"newton":{"doc":"","t":"FF","n":["sqrt","triangular_root"],"q":[[0,"newton"]],"d":["",""],"i":[0,0],"f":[[1,1],[1,1]],"c":[],"p":[[15,"u64"]]},\ +"next_permutation":{"doc":"A library to enumerate permutations, shuffles, and …","t":"FFFFFFFFFFFFFFF","n":["for_each_pairing","for_each_partition","for_each_partition_rev","for_each_permutation","for_each_shuffle","next_pairing","next_partition","next_permutation","next_shuffle","pairings","partitions","partitions_rev","permutations","prev_partition","shuffles"],"q":[[0,"next_permutation"]],"d":["Calls f for each pairing (ascending …","Calls f for each partition of n in lexicographic order.","Calls f for each partition of n in the reverse of the …","Calls f for each permutation of a in lexicographic order.","Calls f for each $(K, N - K)$-shuffle of a in …","Returns the next pairing (ascending …","Returns the next partition of a in lexicographic order.","Returns the next permutation of a in lexicographic order.","Returns the next $(K, N - K)$-shuffle of a in …","Returns all pairings (ascending $(2,2,\\\\dots,2)$-shuffles) …","Returns all partitions of n in lexicographic order.","Returns all partitions of n in the reverse of the …","Returns all permutations of a in lexicographic order.","Returns the previous partition of a in lexicographic order.","Returns all $(K, N - K)$-shuffles of a in lexicographic …"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[[[1,2]],[[1,2]],[[1,2]],[2],[[1,2]],[[],3],[[[4,[1]]],3],[[],3],[1,3],[1,[[4,[[4,[1]]]]]],[1,[[4,[[4,[1]]]]]],[1,[[4,[[4,[1]]]]]],[[[4,[[0,[5,6]]]]],[[4,[[4,[[0,[5,6]]]]]]]],[[[4,[1]]],3],[[[4,[[0,[5,6]]]],1],[[4,[[4,[[0,[5,6]]]]]]]]],"c":[],"p":[[15,"usize"],[8,"FnMut"],[15,"bool"],[3,"Vec"],[8,"Ord"],[8,"Clone"]]},\ +"numeric_search":{"doc":"Run classic binary or exponential search on integer or …","t":"ISSSSSSSIISSSFFFFFK","n":["Float","INFINITY","MAX","MIN","NEG_INFINITY","ONE","ONE","ONE","Signed","Unsigned","ZERO","ZERO","ZERO","binary_search_signed","binary_search_unsigned","exp_search_float","exp_search_signed","exp_search_unsigned","sqrt"],"q":[[0,"numeric_search"]],"d":["Floating pont number.","$\\\\infty$","","","$-\\\\infty$","$1$","$1$","","Signed integers.","Unsigned integers.","$0$","$0$","","Run a binary search search on signed numbers.","Run a binary search search on unsigned numbers.","Run an exponential search on floating point numbers.","Run an exponential search on unsigned numbers.","Run an exponential search on unsigned numbers.","$x \\\\mapsto \\\\sqrt x$"],"i":[0,4,1,1,4,4,3,1,0,0,4,3,1,0,0,0,0,0,4],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,1,2],1],[[3,3,2],3],[2,4],[2,[[5,[1]]]],[2,[[5,[3]]]],[[]]],"c":[],"p":[[8,"Signed"],[8,"FnMut"],[8,"Unsigned"],[8,"Float"],[4,"Option"]]},\ +"partially_persistent_union_find":{"doc":"…","t":"DLLLLLLLLLLLLLLLLL","n":["PartiallyPersistentUnionFind","borrow","borrow_mut","clone","clone_into","find","fmt","from","into","new","same","size","time","to_owned","try_from","try_into","type_id","union"],"q":[[0,"partially_persistent_union_find"]],"d":["…","","","","","時刻 time の代表の頂点番号を返します。","","Returns the argument unchanged.","Calls U::from(self).","新しくデータ構造を構築します。","時刻 time に i と j …","時刻 time の i …","2 頂点が結合された時刻を返します。","","","","","…"],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[]],[[]],[1,1],[[]],[[1,2,2],2],[[1,3],4],[[]],[[]],[2,1],[[1,2,2,2],5],[[1,2,2],2],[[1,2,2],[[6,[2]]]],[[]],[[],7],[[],7],[[],8],[[1,2,2,2],5]],"c":[],"p":[[3,"PartiallyPersistentUnionFind"],[15,"usize"],[3,"Formatter"],[6,"Result"],[15,"bool"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"radix_heap":{"doc":"CAUTION: Failing in tests!","t":"DLLLLLLLLLLLLLLLL","n":["RadixHeap","borrow","borrow_mut","clone","clone_into","default","eq","fmt","from","into","new","pop","push","to_owned","try_from","try_into","type_id"],"q":[[0,"radix_heap"]],"d":["","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","",""],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],"f":[0,[[]],[[]],[[[2,[1]]],[[2,[1]]]],[[]],[[],[[2,[3]]]],[[[2,[4]],[2,[4]]],5],[[[2,[3]],6],7],[[]],[[]],[[],2],[2,8],[[2,9]],[[]],[[],10],[[],10],[[],11]],"c":[0],"p":[[8,"Clone"],[3,"RadixHeap"],[8,"Debug"],[8,"PartialEq"],[15,"bool"],[3,"Formatter"],[6,"Result"],[4,"Option"],[15,"u32"],[4,"Result"],[3,"TypeId"]]},\ +"randtools":{"doc":"","t":"DDDDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["DistinctTwo","LogUniform","NonEmptySubRange","SimpleDigraph","SimpleDigraphEdges","SimpleGraph","SimpleGraphEdges","SubRange","Tree","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","sample","sample","sample","sample","sample","sample","sample","sample","sample","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"randtools"]],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11,1,4,5,6,7,8,9,10,11],"f":[0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,2],3],[[4,2],3],[[5,2],3],[[6,2],3],[[7,2],3],[[8,2],3],[[9,2],3],[[10,2],3],[[11,2],3],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,[0,[12,13]]],14],[[4,[0,[12,13]]]],[[5,[0,[12,13]]],[[15,[14]]]],[[6,[0,[12,13]]],[[15,[14]]]],[[7,[0,[12,13]]],[[16,[[16,[14]]]]]],[[8,[0,[12,13]]],[[16,[[16,[14]]]]]],[[9,[0,[12,13]]],[[16,[[16,[14]]]]]],[[10,[0,[12,13]]],16],[[11,[0,[12,13]]],16],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"c":[],"p":[[3,"LogUniform"],[3,"Formatter"],[6,"Result"],[3,"DistinctTwo"],[3,"SubRange"],[3,"NonEmptySubRange"],[3,"Tree"],[3,"SimpleGraph"],[3,"SimpleDigraph"],[3,"SimpleGraphEdges"],[3,"SimpleDigraphEdges"],[8,"Rng"],[8,"Sized"],[15,"usize"],[3,"Range"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"rational":{"doc":"","t":"DILLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLKLLLLLLLLLLLLLLK","n":["Rational","Signed","add","add","add","add","add_assign","borrow","borrow_mut","clone","clone_into","cmp","decompose","default","div","div","div","div","div_assign","eq","fmt","from","from_str","generic_abs","generic_signum","into","into_f64","mul","mul","mul","mul","mul_assign","neg","new","one","partial_cmp","product","product","sub","sub","sub","sub","sub_assign","sum","sum","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"rational"]],"d":["","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1],"f":[0,0,[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]],[[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[]],[[]],[[[2,[[0,[3,1]]]]],[[2,[[0,[3,1]]]]]],[[]],[[[2,[1]],[2,[1]]],4],[[[2,[1]]]],[[],[[2,[[0,[5,1]]]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]],[[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]],6],[[[2,[1]],7],8],[[]],[9,[[10,[[2,[1]]]]]],[[]],[[]],[[]],[[[2,[1]]],11],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]],[[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]]]],[[1,1],[[2,[1]]]],[[]],[[[2,[1]],[2,[1]]],[[12,[4]]]],[13,[[2,[1]]]],[13,[[2,[1]]]],[[[2,[1]],[2,[1]]],[[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[[[2,[1]],[2,[1]]]],[13,[[2,[1]]]],[13,[[2,[1]]]],[[]],[[],10],[[],10],[[],14],[[]]],"c":[],"p":[[8,"Signed"],[3,"Rational"],[8,"Clone"],[4,"Ordering"],[8,"Default"],[15,"bool"],[3,"Formatter"],[6,"Result"],[15,"str"],[4,"Result"],[15,"f64"],[4,"Option"],[8,"Iterator"],[3,"TypeId"]]},\ +"rb":{"doc":"Containers for storing data in a red-black tree.","t":"QDIDDIDQQLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLKLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLL","n":["Acc","Multimap","MultimapOp","MultimapSeg","Multiset","Op","Seg","Value","Value","append","binary_search","binary_search","binary_search","binary_search_ptr","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","default","default","default","display","fmt","fmt","fmt","fold","from","from","from","from","from_iter","identity","insert","insert","insert","insert","into","into","into","into","into_iter","into_iter","into_iter","into_iter","is_empty","is_empty","is_empty","is_empty","iter","iter","iter","iter","join","len","len","len","len","lower_bound","lower_bound","lower_bound","mul","new","new","new","new","nth","nth","nth","nth","nth_mut","nth_mut","partition_point","partition_point","partition_point","remove","remove","remove","remove","remove_nth","remove_nth","remove_nth","split_off","table","to_acc","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upper_bound","upper_bound","upper_bound"],"q":[[0,"rb"]],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[6,0,0,0,0,0,0,6,1,2,7,10,11,7,7,10,11,2,7,10,11,2,7,10,11,2,2,10,11,2,2,7,10,11,2,2,1,7,10,11,2,7,10,11,2,7,10,11,2,7,10,11,2,7,10,11,2,6,7,10,11,2,7,10,11,1,7,10,11,2,7,10,11,2,7,2,7,10,11,7,10,11,2,7,10,11,2,2,6,7,10,11,2,7,10,11,2,7,10,11,2,7,10,11],"f":[0,0,0,0,0,0,0,0,0,[[[2,[1]],[2,[1]]]],[[[7,[[0,[3,[5,[[0,[3,4]]]]]],3,6]],[0,[3,4]]],[[9,[8]]]],[[[10,[[0,[3,[5,[[0,[3,4]]]]]],3]],[0,[3,4]]],[[9,[8]]]],[[[11,[[0,[3,[5,[[0,[3,4]]]]]],3]],[0,[3,4]]],[[9,[8,8]]]],[[[7,[[0,[3,[5,[[0,[3,4]]]]]],3,6]],[0,[3,4]]],[[9,[8]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[7,[3,6]]]],[[],[[10,[3]]]],[[],[[11,[3]]]],[[],[[2,[1]]]],[[[2,[1]]],[[0,[1]]]],[[[10,[[0,[3,12]],12]],13],14],[[[11,[[0,[3,12]]]],13],14],[[[2,[1]],13],14],[[[2,[1]],[15,[8]]]],[[]],[[]],[[]],[[]],[16,[[2,[1]]]],[[]],[[[7,[3,6]],3]],[[[10,[3]],3]],[[[11,[3]],3]],[[[2,[1]],8]],[[]],[[]],[[]],[[]],[[[7,[3,6]]]],[[[10,[3]]]],[[[11,[3]]]],[[[2,[1]]]],[[[7,[3,6]]],17],[[[10,[3]]],17],[[[11,[3]]],17],[[[2,[1]]],17],[[[7,[3,6]]],[[0,[3,6]]]],[[[10,[3]]],[[0,[3]]]],[[[11,[3]]],[[0,[3]]]],[[[2,[1]]],[[0,[1]]]],[[18,18]],[[[7,[3,6]]],8],[[[10,[3]]],8],[[[11,[3]]],8],[[[2,[1]]],8],[[[7,[3,6]],3],8],[[[10,[3]],3],8],[[[11,[3]],3],8],[[]],[[],[[7,[3,6]]]],[[],[[10,[3]]]],[[],[[11,[3]]]],[[],[[2,[1]]]],[[[7,[3,6]],8]],[[[10,[3]],8]],[[[11,[3]],8],3],[[[2,[1]],8]],[[[7,[3,6]],8]],[[[2,[1]],8],[[0,[1]]]],[[[7,[3,6]],19],8],[[[10,[3]],19],8],[[[11,[3]],19],8],[[[7,[[0,[3,[5,[[0,[3,4]]]]]],3,6]],[0,[3,4]]],18],[[[10,[[0,[3,[5,[[0,[3,4]]]]]],3]],[0,[3,4]]],18],[[[11,[[0,[3,[5,[[0,[3,4]]]]]],3]],[0,[3,4]]],[[18,[[0,[3,[5,[[0,[3,4]]]]]],3]]]],[[[2,[1]],8]],[[[7,[3,6]],8]],[[[10,[3]],8]],[[[11,[3]],8],3],[[[2,[1]],8],[[2,[1]]]],[[[2,[1]]],[[0,[1]]]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],20],[[],20],[[],20],[[],20],[[[7,[3,6]],3],8],[[[10,[3]],3],8],[[[11,[3]],3],8]],"c":[],"p":[[8,"Op"],[3,"Seg"],[8,"Ord"],[8,"Sized"],[8,"Borrow"],[8,"MultimapOp"],[3,"MultimapSeg"],[15,"usize"],[4,"Result"],[3,"Multimap"],[3,"Multiset"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"RangeBounds"],[8,"IntoIterator"],[15,"bool"],[4,"Option"],[8,"FnMut"],[3,"TypeId"]]},\ +"rbtree":{"doc":"赤黒木","t":"DDIDQQLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLKLLLLLLLLLLL","n":["Iter","Nop","Op","RbTree","Summary","Value","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","delete","eq","fmt","fold","from","from","from","from_iter","get","hash","insert","into","into","into","into_iter","into_iter","is_empty","iter","len","merge","merge3","new","next","op","op","partition_point","push_back","push_front","singleton","split","split3","summarize","summarize","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"rbtree"]],"d":["iter の返す型","…","…","赤黒木です。","中間ノードに持たせる値","葉に持たせる値","","","","","","","","","","i 番目の Nil …","","","range の範囲で畳み込みます。","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","…","i 番目の要素をコピーして返します。","","i 番目に新しい Nil ノードを挿入します。","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","空ならば true、さもなくば false …","…","長さ、すなわち Nil …","2 つの赤黒木をマージします。","3 つの赤黒木をマージします。","空の赤黒木を生成します。","","演算","","中間ノードの情報で二分探索します。","新しいノードを末尾に挿入します。","新しいノードを先頭に挿入します。","Nil …","i 番目で分割します。","l, r 番目で 3 つに分割します。","葉の値から中間ノードの値への変換","","","","","","","","","","",""],"i":[0,0,0,0,2,2,3,20,16,3,20,16,3,3,3,3,3,3,3,3,20,16,3,3,3,3,3,20,16,3,16,3,3,3,3,3,3,16,2,20,3,3,3,3,3,3,2,20,3,3,20,16,3,20,16,3,20,16],"f":[0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[1,2]]],[[3,[1,2]]]],[[]],[[],[[3,[2]]]],[[[3,[2]],4]],[[[3,[5,2]],[3,[5,2]]],6],[[[3,[7,2]],8],9],[[[3,[2]],[10,[4]]],11],[[]],[[]],[[]],[12,[[3,[2]]]],[[[3,[13,2]],4],13],[[[3,[14,2]],15]],[[[3,[2]],4]],[[]],[[]],[[]],[[[3,[2]]]],[[]],[[[3,[2]]],6],[[[3,[2]]],[[16,[2]]]],[[[3,[2]]],4],[[[3,[2]],[3,[2]]],[[3,[2]]]],[[[3,[2]],[3,[2]],[3,[2]]],[[3,[2]]]],[[],[[3,[2]]]],[[[16,[2]]],11],[[]],[[]],[[[3,[2]],17],4],[[[3,[2]]]],[[[3,[2]]]],[[],[[3,[2]]]],[[[3,[2]],4]],[[[3,[2]],4,4]],[[]],[[]],[[]],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],19],[[],19],[[],19]],"c":[],"p":[[8,"Clone"],[8,"Op"],[3,"RbTree"],[15,"usize"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"RangeBounds"],[4,"Option"],[8,"IntoIterator"],[8,"Copy"],[8,"Hash"],[8,"Hasher"],[3,"Iter"],[8,"Fn"],[4,"Result"],[3,"TypeId"],[3,"Nop"]]},\ +"riff":{"doc":"Future and otherworldly Rust features.","t":"IIIIQLLFFLLLLLLLLLLKKKLLLLLLKK","n":["BinarySearch","ChangeMinMax","PopIf","Unsigned","Value","bit_length","bit_length","bitmask_combinations","bitmask_subsets","change_max","change_max","change_min","change_min","lower_bound","lower_bound","lower_bound_by","lower_bound_by","lower_bound_by_key","lower_bound_by_key","one","partition_point","pop_if","upper_bound","upper_bound","upper_bound_by","upper_bound_by","upper_bound_by_key","upper_bound_by_key","wrapping_neg","zero"],"q":[[0,"riff"]],"d":["{lower,upper}_bound, etc","change_min and change_max","Conditional pop function.","Unsigned integer types.","","","","Generates all the $k$-subsets of $[0, N[$","Generates all the subsets of bs.","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,8,2,2,0,0,9,9,9,9,10,10,10,10,10,10,2,10,8,10,10,10,10,10,10,2,2],"f":[0,0,0,0,0,[[],1],[[],1],[[1,1],[[0,[2]]]],[2,[[0,[2]]]],[[]],[[]],[[]],[[]],[3,4],[3,4],[5,4],[5,4],[[3,5],4],[[3,5],4],[[]],[5,4],[6,7],[3,4],[3,4],[5,4],[5,4],[[3,5],4],[[3,5],4],[[]],[[]]],"c":[],"p":[[15,"u32"],[8,"Unsigned"],[8,"Ord"],[15,"usize"],[8,"FnMut"],[8,"FnOnce"],[4,"Option"],[8,"PopIf"],[8,"ChangeMinMax"],[8,"BinarySearch"]]},\ +"scc":{"doc":"このライブラリを使える問題","t":"DLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Scc","add_edge","borrow","borrow_mut","build","clone","clone_into","cmp_count","cmp_of","cmp_ofs","default","eq","fmt","from","g","hash","into","is_empty","len","new","ord","quotient_graph","quotient_set","rg","to_owned","try_from","try_into","type_id"],"q":[[0,"scc"]],"d":["本体です。","【Require: 未ビルド】 辺 (from, to) …","","","【Require: 未ビルド】 ビルドします。","","","【Require: ビルド済み】 …","【Require: ビルド済み】 頂点 x …","【Require: ビルド済み】 …","","","","Returns the argument unchanged.","正向きのグラフの隣接リストを返します。","","Calls U::from(self).","管理しているグラフが空グラフならば、true …","管理しているグラフの頂点数を返します。","頂点数 n …","【Require: ビルド済み】 …","【Require: ビルド済み】 …","【Require: ビルド済み】 …","逆向きのグラフの隣接リストを返します。","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[1,2,2]],[[]],[[]],[1],[1,1],[[]],[1,2],[[1,2],2],[1],[[],1],[[1,1],3],[[1,4],5],[[]],[1],[[1,6]],[[]],[1,3],[1,2],[2,1],[1],[1,[[7,[[7,[2]]]]]],[1,[[7,[[7,[2]]]]]],[1],[[]],[[],8],[[],8],[[],9]],"c":[],"p":[[3,"Scc"],[15,"usize"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[3,"Vec"],[4,"Result"],[3,"TypeId"]]},\ +"segbeats":{"doc":"","t":"IDLLLLLLLLLLKKKLFLLLLLLLK","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","eq","fmt","from","into","max_value","min_value","mul_u32","new","open","query_max","query_min","query_sum","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"segbeats"]],"d":["","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,2,2,2,2,2,2,2,2,2,2,1,1,1,2,0,2,2,2,2,2,2,2,1],"f":[0,0,[[]],[[]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[3]]],[[2,[3]]]],[[]],[[[2,[6]],[2,[6]]],7],[[[2,[8]],9],10],[[]],[[]],[[]],[[]],[11],[[],[[2,[1]]]],[[4,[5,[4]]],[[12,[4]]]],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[]],[[],13],[[],13],[[],14],[[]]],"c":[],"p":[[8,"Elm"],[3,"Segbeats"],[8,"Clone"],[15,"usize"],[8,"RangeBounds"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"u32"],[3,"Range"],[4,"Result"],[3,"TypeId"]]},\ +"segbeats_task3":{"doc":"","t":"IDLLLLLLLLLLLKKKLFLLLLLLLLK","n":["Elm","Segbeats","borrow","borrow_mut","change_max","change_min","clone","clone_into","count_changes","eq","fmt","from","into","max_value","min_value","mul_u32","new","open","query_max","query_min","query_sum","range_add","to_owned","try_from","try_into","type_id","zero"],"q":[[0,"segbeats_task3"]],"d":["","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","",""],"i":[0,0,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,0,2,2,2,2,2,2,2,2,1],"f":[0,0,[[]],[[]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[[2,[3]]],[[2,[3]]]],[[]],[[[2,[1]],[5,[4]]],6],[[[2,[7]],[2,[7]]],8],[[[2,[1]],9],10],[[]],[[]],[[]],[[]],[11],[[],[[2,[1]]]],[[4,[5,[4]]],[[12,[4]]]],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[5,[4]]],1],[[[2,[1]],[0,[3,[5,[4]]]],1]],[[]],[[],13],[[],13],[[],14],[[]]],"c":[],"p":[[8,"Elm"],[3,"Segbeats"],[8,"Clone"],[15,"usize"],[8,"RangeBounds"],[15,"u64"],[8,"PartialEq"],[15,"bool"],[3,"Formatter"],[6,"Result"],[15,"u32"],[3,"Range"],[4,"Result"],[3,"TypeId"]]},\ +"segtree":{"doc":"Segment tree and its variants.","t":"DDDIDDDQLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLL","n":["Dense2dEntry","Dense2dSegtree","Entry","Op","Segtree","SegtreeWithCompression","Sparse2dSegtree","Value","apply","as_slice","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","collect_map","collect_map","collect_vec","deref","deref","deref_mut","deref_mut","drop","drop","entry","entry","entry","fmt","fmt","fmt","fmt","fmt","fold","fold","fold","fold","from","from","from","from","from","from","from_iter","from_iter","from_iter","from_len","identity","index","index","index","index","index","into","into","into","into","into","into","iter","iter","iter","iter","keys","max_right","min_left","mul","new","new","new","new","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"segtree"]],"d":["The result of Dense2dSegtree::entry.","A dense 2D segment tree.","The result of Segtree::entry.","A trait for segment tree operations.","A segment tree. Use as_slice() to debug.","A sparse (compressed) segment tree. Use collect_map() to …","A segment tree of segment trees (2D segment tree). The …","The value type.","Apply a function to $x_{k, l}$.","Returns a slice of $x_0, x_1, \\\\ldots, x_{n-1}$.","","","","","","","","","","","","","Collects the key-value pairs into a BTreeMap.","Collects the key-value pairs into a BTreeMap.","Collect to a $2$-dimensional vector.","","","","","","","Returns the entry of $x_i$.","Returns the entry of $x_k$. If $k$ is not found, it panics.","Returns the entry of $x_{i, j}$.","","","","","","Returns $x_l \\\\cdot x_{l+1} \\\\cdot \\\\ldots \\\\cdot x_{r-1}$.","Folds $\\\\left \\\\lbrace x_k \\\\mid k \\\\in \\\\text{{range}} \\\\right …","Folds $\\\\left \\\\lbrace x_{k, l} \\\\mid (k, l) \\\\in …","Fold $\\\\left \\\\lbrace x_{i, j} \\\\mid i \\\\in \\\\text{{range}}_i, …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Constructs a new segment tree with the specified length.","Returns the identity value $e$.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns an iterator of $x_0, x_1, \\\\ldots, x_{n-1}$.","Returns an iterator of $(k, x_k)$.","Returns the iterator of $(k, l, x_{k, l})$.","Returns an iterator that returns the rows $(x_{i, 0}, x_…","Returns the keys.","Returns the maximum $r$ s.t. $f(x _ l \\\\cdot \\\\dots \\\\cdot x …","Returns the minimum $l$ s.t. $f(x _ l \\\\cdot \\\\dots \\\\cdot x …","Multiplies two values: $x \\\\cdot y$.","Constructs with the specified values.","Constructs with the specified key-value pairs.","Constructs with the specified key-value pairs.","Constructs with the specified values.","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,3,4,6,6,11,7,4,9,12,6,11,7,4,9,12,7,4,9,11,12,11,12,11,12,6,7,9,6,11,7,4,9,6,7,4,9,6,11,7,4,9,12,6,7,4,6,3,6,7,4,4,9,6,11,7,4,9,12,6,7,4,9,7,6,6,3,6,7,4,9,6,11,7,4,9,12,6,11,7,4,9,12,6,11,7,4,9,12],"f":[0,0,0,0,0,0,0,0,[[[4,[[0,[1,2]],[0,[1,2]],3]],[0,[1,2]],[0,[1,2]],5]],[[[6,[3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[7,[2,1,3]]],[[8,[2,1]]]],[[[4,[2,[0,[1,2]],2,[0,[1,2]],3]]],8],[[[9,[3]]],[[10,[10]]]],[[[11,[3]]]],[[[12,[3]]]],[[[11,[3]]]],[[[12,[3]]]],[[[11,[3]]]],[[[12,[3]]]],[[[6,[3]],13],[[11,[3]]]],[[[7,[1,3]],1],[[11,[3]]]],[[[9,[3]],13,13],[[12,[3]]]],[[[6,[3]],14],15],[[[11,[3]],14],15],[[[7,[16,3]],14],15],[[[4,[16,16,3]],14],15],[[[9,[3]],14],15],[[[6,[3]],[17,[13]]]],[[[7,[1,3]],[17,[1]]]],[[[4,[[0,[1,2]],[0,[1,2]],3]],[17,[[0,[1,2]]]],[0,[[17,[[0,[1,2]]]],2]]]],[[[9,[3]],[17,[13]],[17,[13]]]],[[]],[[]],[[]],[[]],[[]],[[]],[18,[[6,[3]]]],[18,[[7,[[0,[2,1]],3]]]],[18,[[4,[[0,[1,2]],[0,[1,2]],3]]]],[13,[[6,[3]]]],[[]],[[[6,[3]],13]],[[[7,[1,3]],1]],[[[4,[1,1,3]]]],[[[4,[1,1,3]],1]],[[[9,[3]],13]],[[]],[[]],[[]],[[]],[[]],[[]],[[[6,[3]]],19],[[[7,[1,3]]],20],[[[4,[[0,[1,2]],[0,[1,2]],3]]],20],[[[9,[3]]],20],[[[7,[1,3]]]],[[[6,[3]],13,5],13],[[[6,[3]],13,5],13],[[]],[[],[[6,[3]]]],[[],[[7,[2,1,3]]]],[[],[[4,[[0,[1,2]],[0,[1,2]],3]]]],[[],[[9,[3]]]],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],21],[[],22],[[],22],[[],22],[[],22],[[],22],[[],22]],"c":[],"p":[[8,"Ord"],[8,"Clone"],[8,"Op"],[3,"Sparse2dSegtree"],[8,"FnMut"],[3,"Segtree"],[3,"SegtreeWithCompression"],[3,"BTreeMap"],[3,"Dense2dSegtree"],[3,"Vec"],[3,"Entry"],[3,"Dense2dEntry"],[15,"usize"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[8,"RangeBounds"],[8,"IntoIterator"],[3,"Iter"],[8,"Iterator"],[4,"Result"],[3,"TypeId"]]},\ +"skew_heap":{"doc":"Meld のできるヒープ","t":"DLLLLLLLLLLLLLLLFLLLLLLLLLL","n":["SkewHeap","borrow","borrow_mut","clear","clone","clone_into","default","eq","extend","extend","fmt","from","from_iter","hash","into","into_sorted_vec","meld","meld","new","peek","pop","push","singleton","to_owned","try_from","try_into","type_id"],"q":[[0,"skew_heap"]],"d":["Meld のできるヒープ","","","中身を殻にします。","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","ソート済みの Vec に変換します。","2 つの SkewHeap …","2 つの SkewHeap …","新しく構築します。","…","…","要素を一つ、追加します。","要素一つからなる SkewHeap を構築します。","","","",""],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2],"f":[0,[[]],[[]],[[[2,[1]]]],[[[2,[3]]],[[2,[3]]]],[[]],[[],[[2,[1]]]],[[[2,[4]],[2,[4]]],5],[[[2,[[0,[6,1]]]],7]],[[[2,[1]],7]],[[[2,[[0,[8,1]]]],9],10],[[]],[7,[[2,[1]]]],[[[2,[11]],12]],[[]],[[[2,[1]]],[[13,[1]]]],[[[2,[1]],[2,[1]]],[[2,[1]]]],[[[2,[1]],[2,[1]]]],[[],[[2,[1]]]],[[[2,[1]]],[[14,[1]]]],[[[2,[1]]],[[14,[1]]]],[[[2,[1]],1]],[1,[[2,[1]]]],[[]],[[],15],[[],15],[[],16]],"c":[],"p":[[8,"Ord"],[3,"SkewHeap"],[8,"Clone"],[8,"PartialEq"],[15,"bool"],[8,"Copy"],[8,"IntoIterator"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"Hash"],[8,"Hasher"],[3,"Vec"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"snippetter":{"doc":"","t":"HDHLLLLMLFLLLFFLMLLLL","n":["CRATE_METADATAS","CrateMetadata","PROJECT_ROOT","borrow","borrow_mut","clone","clone_into","dependencies","eq","find_project_root_path","fmt","from","into","main","parse_local_dependencies_from_cargo_toml","serialize","tags","to_owned","try_from","try_into","type_id"],"q":[[0,"snippetter"]],"d":["","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","",""],"i":[0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1],"f":[0,0,0,[[]],[[]],[1,1],[[]],0,[[1,1],2],[[],3],[[1,4],5],[[]],[[]],[[]],[6,[[8,[7]]]],[[1,9],10],0,[[]],[[],10],[[],10],[[],11]],"c":[],"p":[[3,"CrateMetadata"],[15,"bool"],[3,"PathBuf"],[3,"Formatter"],[6,"Result"],[15,"str"],[3,"String"],[3,"Vec"],[8,"Serializer"],[4,"Result"],[3,"TypeId"]]},\ +"sparse_table":{"doc":"Sparse Table","t":"IDDQLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLL","n":["Op","SparseTable","SparseTable2d","Value","as_slice","as_slice","borrow","borrow","borrow_mut","borrow_mut","clone_from_slice","clone_from_slice","collect_vec","collect_vec","fmt","fmt","fold","fold","from","from","from","from","from","from","from_iter","get","index","inner","inner","into","into","iter","iter","mul","new","new","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"sparse_table"]],"d":["A trait for the operation used in sparse tables.","A sparse table for 1-dimensional range queries.","A sparse table for 2-dimensional range queries.","The type of the values.","Returns a slice of the values.","Returns a slice of the values.","","","","","Constructs a sparse table from a slice of values.","Constructs a sparse table from a slice of values.","Collects the values into a vector.","Collects the values into a vector of vectors.","","","Returns $x_l \\\\cdot x_{l+1} \\\\cdot \\\\ldots \\\\cdot x_{r-1}$, or …","Returns $(x_{i_0, j_0} \\\\cdot \\\\dots \\\\cdot x_{i_1-1, j_0}) …","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","Returns the value at the given index.","","Returns the inner table.","Returns the inner table.","Calls U::from(self).","Calls U::from(self).","Returns an iterator over the values.","Returns that yields the row of the table.","Multiplies two values: $x \\\\cdot y$.","Constructs a sparse table from a vector of values.","Constructs a sparse table from a vector of values.","","","","","",""],"i":[0,0,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,2,2,3,3,3,2,2,2,2,3,2,3,2,3,1,2,3,2,3,2,3,2,3],"f":[0,0,0,0,[[[2,[1]]]],[[[3,[1]]]],[[]],[[]],[[]],[[]],[[],[[2,[1]]]],[[],[[3,[1]]]],[[[2,[1]]],4],[[[3,[1]]],[[4,[4]]]],[[[2,[1]],5],6],[[[3,[1]],5],6],[[[2,[1]],[8,[7]]],9],[[[3,[1]],[8,[7]],[8,[7]]],9],[[]],[4,[[2,[1]]]],[[],[[2,[1]]]],[[],[[3,[1]]]],[[[4,[4]]],[[3,[1]]]],[[]],[10,[[2,[1]]]],[[[2,[1]],7]],[[[2,[1]],7]],[[[2,[1]]],[[4,[4]]]],[[[3,[1]]],[[4,[[4,[[4,[4]]]]]]]],[[]],[[]],[[[2,[1]]],11],[[[3,[1]]],11],[[]],[4,[[2,[1]]]],[[[4,[4]]],[[3,[1]]]],[[],12],[[],12],[[],12],[[],12],[[],13],[[],13]],"c":[],"p":[[8,"Op"],[3,"SparseTable"],[3,"SparseTable2d"],[3,"Vec"],[3,"Formatter"],[6,"Result"],[15,"usize"],[8,"RangeBounds"],[4,"Option"],[8,"IntoIterator"],[8,"Iterator"],[4,"Result"],[3,"TypeId"]]},\ +"splay_tree":{"doc":"スプレー木です。","t":"QQDDQIDDIDIQQLKLLKLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLKKLLLLLLLLLLLLLLLLLLLLL","n":["Acc","Acc","Entry","Iter","Lazy","LazyOps","NoLazy","Nop","Ops","SplayTree","Value","Value","Value","act","act_acc","act_acc","act_acc","act_value","act_value","act_value","append","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","compose","compose","compose","compose_to_option","default","delete","deref","deref_mut","drop","dump","entry","eq","fmt","fold","from","from","from","from","from","from_iter","get","hash","index","insert","into","into","into","into","into","into_iter","into_iter","is_empty","iter","len","new","next","next_back","op","op","op","op","partial_cmp","proj","proj","proj","proj","range","reverse","split_off","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"splay_tree"]],"d":["集約値型","集約値型","SplayTree::entry の戻り値型です。","SplayTree::iter, SplayTree::range の戻り値型です。","作用値型","集約と作用のトレイト","Ops を実装する型をラップして LazyOps …","集約も作用もなしの場合に使うトレイト","作用なしの場合に使うトレイト","スプレー木","Sized, Debug, Clone をまとめたトレイト","頂点重み型","頂点重み型","指定した範囲の要素すべてに作用します。","集約値への作用","","","頂点重みへの作用","","","…","","","","","","","","","","","","","","作用の合成","","","Option へ作用の合成","","指定した場所の要素を削除します。","","","","内部情報をダンプします。","…","","","指定した範囲の要素を畳み込みます。","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","…","","","指定した場所に挿入します。","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","空ならば true を返します。","要素を順番に返すイテレータを返します。","要素数を返します。","空のスプレー木を構築します。","","","集約演算","集約演算","","","","集約化","集約化","","","…","指定した範囲の要素を逆順にします。","指定した場所以降を切り離して返します。","","","","","","","","","","","","","","","",""],"i":[16,1,0,0,1,0,0,0,0,0,0,16,1,2,1,17,18,1,17,18,2,17,18,2,13,7,17,18,2,13,7,2,2,2,1,17,18,1,2,2,7,7,2,2,2,2,2,2,17,18,2,13,7,2,2,2,2,2,17,18,2,13,7,2,13,2,2,2,2,13,13,16,1,17,18,2,16,1,17,18,2,2,2,2,17,18,2,13,7,17,18,2,13,7,17,18,2,13,7],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[[2,[1]],[4,[3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]],[2,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]]],[[2,[1]]]],[[]],[[[2,[1]],[2,[1]]],5],[[]],[[]],[[]],[6],[[],[[2,[1]]]],[[[2,[1]],3]],[[[7,[1]]]],[[[7,[1]]]],[[[2,[1]]]],[[[2,[1]]]],[[[2,[1]],3],[[6,[[7,[1]]]]]],[[[2,[1]],[2,[1]]],8],[[[2,[1]],9],10],[[[2,[1]],[4,[3]]],6],[[]],[[]],[[]],[[]],[[]],[11,[[2,[1]]]],[[[2,[1]],3],6],[[[2,[1]],12]],[[[2,[1]],3]],[[[2,[1]],3]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]]]],[[]],[[[2,[1]]],8],[[[2,[1]]],[[13,[1]]]],[[[2,[1]]],3],[[],[[2,[1]]]],[[[13,[1]]],6],[[[13,[1]]],6],[[]],[[]],[[]],[[]],[[[2,[1]],[2,[1]]],[[6,[5]]]],[[]],[[]],[[]],[[]],[[[2,[1]],[4,[3]]],[[13,[1]]]],[[[2,[1]],[4,[3]]]],[[[2,[1]],3],[[2,[1]]]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],15],[[],15],[[],15],[[],15],[[],15]],"c":[],"p":[[8,"LazyOps"],[3,"SplayTree"],[15,"usize"],[8,"RangeBounds"],[4,"Ordering"],[4,"Option"],[3,"Entry"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"IntoIterator"],[8,"Hasher"],[3,"Iter"],[4,"Result"],[3,"TypeId"],[8,"Ops"],[3,"Nop"],[3,"NoLazy"]]},\ +"suffix_array":{"doc":"Suffix Array を計算します。","t":"FF","n":["lcp_array","suffix_array"],"q":[[0,"suffix_array"]],"d":["LCP 配列を計算します。","Surrix Array を計算します。"],"i":[0,0],"f":[[[],[[2,[1]]]],[[],[[2,[1]]]]],"c":[],"p":[[15,"usize"],[3,"Vec"]]},\ +"swag":{"doc":"Sliding Window Aggregation (SWAG)","t":"DIQLLLLLLLLLLLLLLLLLLLLLLKLLLLLLL","n":["DequeueSwag","Op","Value","as_two_slices","borrow","borrow_mut","clone_from_slice","collect_vec","copy_from_slice","default","extend","fmt","fold","from","from","from_iter","get","index","into","into_iter","into_iter","is_empty","iter","len","new","op","pop_back","pop_front","push_back","push_front","try_from","try_into","type_id"],"q":[[0,"swag"]],"d":["DequeueSwag","Operations","Value type","Returns two slices, joining that is exactly the all …","","","Constructs a new DequeueSwag from a slice.","Collects the DequeueSwag into a Vec.","Constructs a new DequeueSwag from a slice.","","","","Fold the DequeueSwag. Returns None if the DequeueSwag is …","Returns the argument unchanged.","","","Returns the element at the index.","","Calls U::from(self).","","","Returns whether the DequeueSwag is empty.","Returns an iterator over the DequeueSwag.","Returns the length of the DequeueSwag.","Constructs a new DequeueSwag.","Associative operation","Pop an element from the back. Returns None if the …","Pop an element from the front. Returns None if the …","Append an element to the back.","Append an element to the front.","","",""],"i":[0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2],"f":[0,0,0,[[[2,[1]]]],[[]],[[]],[[],[[2,[1]]]],[[[2,[1]]],3],[[],[[2,[1]]]],[[],[[2,[1]]]],[[[2,[1]],4]],[[[2,[1]],5],6],[[[2,[1]]],7],[[]],[3,[[2,[1]]]],[4,[[2,[1]]]],[[[2,[1]],8],7],[[[2,[1]],8]],[[]],[[[2,[1]]]],[[[2,[1]]]],[[[2,[1]]],9],[[[2,[1]]],10],[[[2,[1]]],8],[[],[[2,[1]]]],[[]],[[[2,[1]]],7],[[[2,[1]]],7],[[[2,[1]]]],[[[2,[1]]]],[[],11],[[],11],[[],12]],"c":[],"p":[[8,"Op"],[3,"DequeueSwag"],[3,"Vec"],[8,"IntoIterator"],[3,"Formatter"],[6,"Result"],[4,"Option"],[15,"usize"],[15,"bool"],[8,"Iterator"],[4,"Result"],[3,"TypeId"]]},\ +"tree_fold":{"doc":"2-way tree DP","t":"IDQLLMLKLMKLLFLLKM","n":["Op","TwoWayTreeFoldResult","Value","borrow","borrow_mut","branch","from","identity","into","lower","mul","try_from","try_into","two_way_tree_fold","two_way_tree_fold","type_id","up","upper"],"q":[[0,"tree_fold"]],"d":["Operations","The return value of Op::two_way_tree_fold() ans …","A monoid $M$.","","","$f(\\\\phi(T_i^\\\\blacktriangledown))$","Returns the argument unchanged.","$* \\\\to F$: empty forest","Calls U::from(self).","$\\\\prod_{j \\\\lessdot i} f(\\\\phi(T_j^\\\\blacktriangledown))$","$F \\\\times F \\\\to F$: concatenate two forests","","","Performs 2-way tree DP","Performs 2-way tree DP","","$F \\\\times V \\\\to T \\\\to F$: join by a root","$f(\\\\phi(T_i^\\\\triangle))$"],"i":[0,0,2,3,3,3,3,2,3,3,2,3,3,0,2,3,2,3],"f":[0,0,0,[[]],[[]],0,[[]],[[]],[[]],0,[[]],[[],1],[[],1],[2,3],[[],3],[[],4],[5],0],"c":[],"p":[[4,"Result"],[8,"Op"],[3,"TwoWayTreeFoldResult"],[3,"TypeId"],[15,"usize"]]},\ +"trial":{"doc":"Execute the trial-division algorithm.","t":"DDDILLLLLLLFFLLLKLLLLLLLLLKFFLLLLLLLLLK","n":["Divisors","PrimeFactors","PrimeFactorsRle","Value","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","divides","divisors","divisors_unordered","from","from","from","increment","into","into","into","into_iter","into_iter","into_iter","next","next","next","one","prime_factors","prime_factors_rle","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","zero"],"q":[[0,"trial"]],"d":["See the document of a function divisors_unordered","See the document of a function prime_factors","See the document of a function prime_factors_rle","Abstraction of unsigned integers.","","","","","","","Returns true if and only if self divides n.","Returns a Vec of the divisors. The divisors is guaranteed …","Takes an unsigned integer and returns an iterator to yield …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Increment self.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","Returns 1.","Takes an unsigned integer and returns an iterator to yield …","Takes an unsigned integer and returns an iterator to yield …","","","","","","","","","","Returns 0."],"i":[0,0,0,0,4,6,7,4,6,7,2,0,0,4,6,7,2,4,6,7,4,6,7,4,6,7,2,0,0,4,6,7,4,6,7,4,6,7,2],"f":[0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[2,[[3,[2]]]],[2,[[4,[2]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[4,[2]]],5],[[[6,[2]]],5],[[[7,[2]]],5],[[]],[2,[[7,[2]]]],[2,[[6,[2]]]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[],9],[[]]],"c":[],"p":[[15,"bool"],[8,"Value"],[3,"Vec"],[3,"Divisors"],[4,"Option"],[3,"PrimeFactorsRle"],[3,"PrimeFactors"],[4,"Result"],[3,"TypeId"]]},\ +"trie":{"doc":"A set and map data structure on trie.","t":"RDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["DEGREE","TrieMap","TrieSet","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","contains","default","default","eq","eq","fmt","fmt","for_each","for_each_kv","for_each_prefix","for_each_prefix","from","from","get","get_mut","get_or_insert","get_or_insert_with","insert","insert","into","into","new","new","remove","remove","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"trie"]],"d":["Tries here have the fixed branching number 26.","A map base on a trie.","A set base on a trie.","","","","","","","","","Returns true if the set contains a value.","","","","","","","Visits all the values of a values in the trie, in …","Visits all the pairs of a key of a values in the trie, in …","Visits all the “existing” nodes corresponding to the …","Visits all the “existing” nodes corresponding to the …","Returns the argument unchanged.","Returns the argument unchanged.","Returns a reference to the value corresponding to the key.","Returns a mutable reference to the value corresponding to …","Inserts a value at key if it is None, then returns a …","Inserts a value computed from f at key if it is None, then …","Inserts a key-value pair into the map.","Adds a value to the set.","Calls U::from(self).","Calls U::from(self).","Makes a new empty TrieMap.","Makes a new empty TrieMap.","Removes a key from the map, returning the stored key and …","Removes a value from the set. Returns whether the value was","","","","","","","",""],"i":[0,0,0,2,3,2,3,2,3,2,3,3,2,3,2,3,2,3,3,2,2,3,2,3,2,2,2,2,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3],"f":[0,0,0,[[]],[[]],[[]],[[]],[[[2,[1]]],[[2,[1]]]],[3,3],[[]],[[]],[[3,4],5],[[],2],[[],3],[[[2,[6]],[2,[6]]],5],[[3,3],5],[[[2,[7]],8],9],[[3,8],9],[[3,10]],[[2,10]],[[2,4,10]],[[3,4,10]],[[]],[[]],[[2,4],11],[[2,4],11],[[2,4]],[[2,4,12]],[[2,4],11],[[3,4],5],[[]],[[]],[[],2],[[],3],[[2,4],11],[[3,4],5],[[]],[[]],[[],13],[[],13],[[],13],[[],13],[[],14],[[],14]],"c":[],"p":[[8,"Clone"],[3,"TrieMap"],[3,"TrieSet"],[8,"IntoIterator"],[15,"bool"],[8,"PartialEq"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"FnMut"],[4,"Option"],[8,"FnOnce"],[4,"Result"],[3,"TypeId"]]},\ +"two_sat":{"doc":"2-SAT を解きます。","t":"DLLLLLLLLLLLLLLLLLL","n":["TwoSat","borrow","borrow_mut","build","clone","clone_into","default","eq","fmt","from","hash","implies","into","new","solve","to_owned","try_from","try_into","type_id"],"q":[[0,"two_sat"]],"d":["2-SAT の本体です。","","","","","","","","","Returns the argument unchanged.","","(x == a) -> (y == b) をかつでつなぎます。","Calls U::from(self).","n 個の不定元を持つ Always true を作ります。","充足する割り当てがあれば返し、なければ …","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[]],[[]],[1],[1,1],[[]],[[],1],[[1,1],2],[[1,3],4],[[]],[[1,5]],[[1,6,2,6,2]],[[]],[6,1],[1,[[8,[[7,[2]]]]]],[[]],[[],9],[[],9],[[],10]],"c":[],"p":[[3,"TwoSat"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Hasher"],[15,"usize"],[3,"Vec"],[4,"Option"],[4,"Result"],[3,"TypeId"]]},\ +"uf_checklist":{"doc":"Union-find …","t":"DDLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Iter","UfChecklist","borrow","borrow","borrow_mut","borrow_mut","check","clone","clone_into","fmt","fmt","from","from","into","into","into_iter","is_checked","lower_bound","new","next","range_check","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"uf_checklist"]],"d":["UfChecklist::range_check が返すイテレータです。","…","","","","","指定した場所をチェックします。","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","指定した場所がチェック済みならば true …","…","区間 [0, n[ …","","区間 range …","","","","","","",""],"i":[0,0,1,6,1,6,1,1,1,1,6,1,6,1,6,6,1,1,1,6,1,1,1,6,1,6,1,6],"f":[0,0,[[]],[[]],[[]],[[]],[[1,2],3],[1,1],[[]],[[1,4],5],[[6,4],5],[[]],[[]],[[]],[[]],[[]],[[1,2],3],[[1,2],[[7,[2]]]],[2,1],[6,7],[[1,[8,[2]]],6],[[]],[[],9],[[],9],[[],9],[[],9],[[],10],[[],10]],"c":[],"p":[[3,"UfChecklist"],[15,"usize"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"Iter"],[4,"Option"],[8,"RangeBounds"],[4,"Result"],[3,"TypeId"]]},\ +"union_find":{"doc":"Union Find です。","t":"EEIDQEKLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLL","n":["EdgeCount","HasCycle","Op","UnionFind","Value","VertexCount","add_edge","add_edge","add_edge","add_edge","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","default","eq","find","find_mut","fmt","from","from","from","from","from_values","get_value","graft","graft","graft","graft","hash","into","into","into","into","is_root","new","same","singleton","singleton","singleton","singleton","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","value","value_mut"],"q":[[0,"union_find"]],"d":["辺の本数","サイクルがあるとき、true","…","","頂点重み型","頂点の個数","連結成分に辺を1本追加したとき","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","…","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","UnionFind::new() で構築したときのデフォルト値","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,2,0,2,15,16,17,15,16,17,3,15,16,17,3,3,3,3,3,3,3,3,15,16,17,3,3,3,2,15,16,17,3,15,16,17,3,3,3,3,2,15,16,17,3,15,16,17,3,15,16,17,3,15,16,17,3,3,3,3],"f":[0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[[0,[1,2]]]]],[[3,[[0,[1,2]]]]]],[[]],[[],[[3,[[0,[4,2]]]]]],[[[3,[[0,[5,2]]]],[3,[[0,[5,2]]]]],6],[[[3,[2]],7],7],[[[3,[2]],7],7],[[[3,[2]],8],9],[[]],[[]],[[]],[[]],[10,[[3,[2]]]],[[[3,[2]],7]],[[]],[[]],[[]],[[]],[[[3,[[0,[11,2]]]],12]],[[]],[[]],[[]],[[]],[[[3,[2]],7],6],[7,[[3,[2]]]],[[[3,[2]],7,7],6],[[]],[[]],[[]],[[]],[[]],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],14],[[],14],[[],14],[[],14],[[[3,[2]],7,7],6],[[[3,[2]],7]],[[[3,[2]],7]]],"c":[],"p":[[8,"Clone"],[8,"Op"],[3,"UnionFind"],[8,"Default"],[8,"PartialEq"],[15,"bool"],[15,"usize"],[3,"Formatter"],[6,"Result"],[3,"Vec"],[8,"Hash"],[8,"Hasher"],[4,"Result"],[3,"TypeId"],[4,"EdgeCount"],[4,"VertexCount"],[4,"HasCycle"]]},\ +"veb":{"doc":"A predecessor data structure based on van Emde Boas trees.","t":"NNDELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMM","n":["Internal","Leaf","VebMap","VebSet","borrow","borrow","borrow_mut","borrow_mut","collect","collect","contains","contains_key","fmt","fmt","from","from","from_iter","from_iter","get","get_mut","index","index_mut","insert","insert","into","into","is_empty","is_empty","len","len","max","max","max_key","max_value","min","min","min_key","min_value","new","new","pred","pred","pred_eq","pred_eq","pred_eq_key","pred_eq_value","pred_key","pred_value","remove","remove","succ","succ","succ_eq","succ_eq_key","succ_eq_value","succ_key","succ_value","try_from","try_from","try_into","try_into","type_id","type_id","chunks","csize","len","max","min","summary"],"q":[[0,"veb"],[63,"veb::VebSet"]],"d":["","","A van Emde Boas tree-based map. The map is implemented as …","A van Emde Boas tree.","","","","","Returns the elements in the map in ascending order. The …","Returns the elements in the set in ascending order. The …","Returns true if the set contains the given element. …","Returns true if the map contains the given key.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the value corresponding to the key.","Returns a mutable reference to the value corresponding to …","","","Inserts an element into the map. Returns the previous …","Inserts an element into the set. Returns true if the …","Calls U::from(self).","Calls U::from(self).","Returns true if the map is empty.","Returns true if the set is empty. Returns false if the set …","Returns $|S|$.","Returns the number of elements in the set.","Returns the entry at $\\\\max \\\\left( S \\\\right)$.","Returns the maximum element in the set. Returns None if …","Returns the key $\\\\max \\\\left( S \\\\right)$.","Returns the value at $\\\\max \\\\left( S \\\\right)$.","Returns the entry at $\\\\min \\\\left( S \\\\right)$.","Returns the minimum element in the set. Returns None if …","Returns the key $\\\\min \\\\left( S \\\\right)$.","Returns the value at $\\\\min \\\\left( S \\\\right)$.","Creates a new van Emde Boas tree-based map with the given …","Creates a new van Emde Boas tree with the given capacity.","Returns the entry at $\\\\max \\\\left (i^▽ \\\\right)$.","Returns $\\\\min{j \\\\in S \\\\mid j \\\\le i}$.","Returns the entry at $\\\\max \\\\left (i^▲ \\\\right)$.","Returns $\\\\max{j \\\\in S \\\\mid j \\\\leq i}$.","Returns the key $\\\\max \\\\left (i^▲ \\\\right)$.","Returns the value at $\\\\max \\\\left (i^▲ \\\\right)$.","Returns the key $\\\\max \\\\left (i^▽ \\\\right)$.","Returns the value at $\\\\max \\\\left (i^▽ \\\\right)$.","Returns the value at $i$.","Removes an element from the set. Returns true if the …","Returns the entry at $\\\\min \\\\left (i^△ \\\\right)$.","Returns the minimum element greater than given element. …","Returns the entry at $\\\\min \\\\left (i^▲ \\\\right)$.","Returns the key $\\\\min \\\\left (i^▲ \\\\right)$.","Returns the value at $\\\\min \\\\left (i^▲ \\\\right)$.","Returns the key $\\\\min \\\\left (i^△ \\\\right)$.","Returns the value at $\\\\min \\\\left (i^△ \\\\right)$.","","","","","","","","","","","",""],"i":[3,3,0,0,1,3,1,3,1,3,3,1,1,3,1,3,1,3,1,1,1,1,1,3,1,3,1,3,1,3,1,3,1,1,1,3,1,1,1,3,1,3,1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,3,1,3,1,3,13,13,13,13,13,13],"f":[0,0,0,0,[[]],[[]],[[]],[[]],[1,2],[3,[[2,[4]]]],[[3,4],5],[[1,4],5],[[[1,[6]],7],8],[[3,7],8],[[]],[[]],[9,1],[9,3],[[1,4],10],[[1,4],10],[[1,4]],[[1,4]],[[1,4],10],[[3,4],5],[[]],[[]],[1,5],[3,5],[1,4],[3,4],[1,10],[3,[[10,[4]]]],[1,[[10,[4]]]],[1,10],[1,10],[3,[[10,[4]]]],[1,[[10,[4]]]],[1,10],[4,1],[4,3],[[1,4],10],[[3,4],[[10,[4]]]],[[1,4],10],[[3,4],[[10,[4]]]],[[1,4],[[10,[4]]]],[[1,4],10],[[1,4],[[10,[4]]]],[[1,4],10],[[1,4],10],[[3,4],5],[[1,4],10],[[3,4],[[10,[4]]]],[[1,4],10],[[1,4],[[10,[4]]]],[[1,4],10],[[1,4],[[10,[4]]]],[[1,4],10],[[],11],[[],11],[[],11],[[],11],[[],12],[[],12],0,0,0,0,0,0],"c":[],"p":[[3,"VebMap"],[3,"Vec"],[4,"VebSet"],[15,"usize"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"IntoIterator"],[4,"Option"],[4,"Result"],[3,"TypeId"],[13,"Internal"]]},\ +"vec_lines":{"doc":"傾き単調な直線の列を Vec で管理します。","t":"IEEDIDGGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLKLLLLLLLLLLLLLLLLLL","n":["Constraint","DecreasingTilt","IncreasingTilt","Line","Signed","VecLines","VecLinesDecreasing","VecLinesIncreasing","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","eq","eq","eq","eq","eval","eval_gcc","fmt","fmt","fmt","fmt","from","from","from","from","get","hash","hash","hash","hash","into","into","into","into","into_coeff","is_empty","iter_copied","len","new","ok","ok","ok","push","strictly_better","strictly_better","strictly_better","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"vec_lines"]],"d":["…","傾き単調減少を意味するマーカー","傾き単調増加を意味するマーカー","一次関数 $ax + b$ を、[a, b] …","符号つき整数","傾き単調な直線の列を Vec で管理します。","傾きが単調減少な直線の列を管理します。","傾きが単調増加な直線の列を管理します。","","","","","","","","","","","","","","","","","","","","","","","特定の x 座標における値を計算します。","黄金分割探索で最適値を計算します。","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","index 番目の直線を返します。","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","係数を返します。","管理している直線が 0 本のとき true…","…","管理している直線の本数を返します。","傾き単調な直線の列を Vec で管理します。","","","","後ろに直線を挿入します。","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,2,3,4,5,2,3,4,5,2,3,4,5,2,3,4,5,2,3,2,3,4,5,3,2,2,3,4,5,2,3,4,5,2,2,3,4,5,2,3,4,5,3,2,2,2,2,7,4,5,2,7,4,5,2,3,4,5,2,3,4,5,2,3,4,5,2,3,4,5],"f":[0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1,1]]],[[2,[1,1]]]],[[[3,[1]]],[[3,[1]]]],[4,4],[5,5],[[]],[[]],[[]],[[]],[[],[[2,[6,7]]]],[[],[[3,[8]]]],[[[2,[9,9]],[2,[9,9]]],10],[[[3,[9]],[3,[9]]],10],[[4,4],10],[[5,5],10],[[[3,[6]],6],6],[[[2,[6,7]],6],[[11,[6]]]],[[[2,[12,12]],13],14],[[[3,[12]],13],14],[[4,13],14],[[5,13],14],[[]],[[]],[[]],[[]],[[[2,[6,7]],15],[[11,[[3,[6]]]]]],[[[2,[16,16]],17]],[[[3,[16]],17]],[[4,17]],[[5,17]],[[]],[[]],[[]],[[]],[[[3,[6]]]],[[[2,[6,7]]],10],[[[2,[6,7]]],18],[[[2,[6,7]]],15],[[],[[2,[6,7]]]],[[[3,[6]],[3,[6]]],10],[[[3,[6]],[3,[6]]],10],[[[3,[6]],[3,[6]]],10],[[[2,[6,7]]]],[[6,6],10],[[6,6],10],[[6,6],10],[[]],[[]],[[]],[[]],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],20],[[],20],[[],20],[[],20]],"c":[],"p":[[8,"Clone"],[3,"VecLines"],[3,"Line"],[4,"DecreasingTilt"],[4,"IncreasingTilt"],[8,"Signed"],[8,"Constraint"],[8,"Default"],[8,"PartialEq"],[15,"bool"],[4,"Option"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"usize"],[8,"Hash"],[8,"Hasher"],[8,"Iterator"],[4,"Result"],[3,"TypeId"]]},\ +"wavelet_matrix":{"doc":"ウェーブレット行列","t":"DDDDLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLM","n":["SpanInNode","Spans","StaticBitVec","WaveletMatrix","access","access","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","depth","eq","eq","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","from_iter","from_iter","from_iter_collect_vec2","from_slice_of_usize_mut","hash","hash","hash","hash","index","into","into","into","into","into_iter","is_empty","is_empty","len","len","next","next_value","prev_value","quantile","range_freq","rank","select","spans","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","value"],"q":[[0,"wavelet_matrix"]],"d":["Spans のアイテム型です。詳しくは …","イテレータです 詳しくは WaveletMatrix::spans …","累積和のできる静的なビットベクター","ウェーブレット行列","i 番目の要素を返します。","a[i]","","","","","","","","","","","","","","","","","","","ウェーブレット行列内の i 座標","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","…","特に高速化の意図がなければ、FromIterator …","","","","","ウェーブレット行列内の j 座標の範囲","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","配列が空であれば true を返します。","a.is_empty()","配列の長さを返します。","a.len()","","index により指定された部分列のうち、 value …","index により指定された部分列のうち、 value …","index により指定された部分列のうち、 value …","index により指定された部分列のうち、 value …","sum(a[..end])","min i s.t. target <= sum(a[..i])","対応する部分を、(depth, index_range, value_range) …","","","","","","","","","","","","","","","","","現在のノードの担当する値の範囲"],"i":[0,0,0,0,1,3,1,3,5,6,1,3,5,6,1,3,5,6,1,3,5,6,1,3,6,1,3,5,6,1,3,5,6,1,3,5,6,1,3,1,1,1,3,5,6,6,1,3,5,6,5,1,3,1,3,5,1,1,1,1,3,3,1,1,3,5,6,1,3,5,6,1,3,5,6,1,3,5,6,6],"f":[0,0,0,0,[[1,2],2],[[3,2],4],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[3,3],[5,5],[6,6],[[]],[[]],[[]],[[]],[[],1],[[],3],0,[[1,1],4],[[3,3],4],[[5,5],4],[[6,6],4],[[1,7],8],[[3,7],8],[[5,7],8],[[6,7],8],[[]],[[]],[[]],[[]],[9,1],[9,3],[9],[10,1],[[1,11]],[[3,11]],[[5,11]],[[6,11]],0,[[]],[[]],[[]],[[]],[[]],[1,4],[3,4],[1,2],[3,2],[5,12],[[1,[13,[2]],[13,[2]]],[[12,[2]]]],[[1,[13,[2]],[13,[2]]],[[12,[2]]]],[[1,2,[13,[2]],[13,[2]]],[[12,[2]]]],[[1,[13,[2]],[13,[2]]],2],[[3,2],2],[[3,2],2],[[1,[13,[2]],[13,[2]]],5],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],15],[[],15],[[],15],[[],15],0],"c":[],"p":[[3,"WaveletMatrix"],[15,"usize"],[3,"StaticBitVec"],[15,"bool"],[3,"Spans"],[3,"SpanInNode"],[3,"Formatter"],[6,"Result"],[8,"IntoIterator"],[8,"FnMut"],[8,"Hasher"],[4,"Option"],[8,"RangeBounds"],[4,"Result"],[3,"TypeId"]]},\ +"z_algo":{"doc":"","t":"F","n":["z_algo"],"q":[[0,"z_algo"]],"d":["Z-algorithm"],"i":[0],"f":[[[],[[2,[1]]]]],"c":[],"p":[[15,"usize"],[3,"Vec"]]},\ +"zeta":{"doc":"…","t":"FFFFFFFFFFFFFFFFFF","n":["add","add_inv","add_rinv","aggr","bitand","bitor","bitxor","for_each","max","min","radd","rbitand","rbitor","rbitxor","rmax","rmin","rzeta","zeta"],"q":[[0,"zeta"]],"d":["+ でゼータ変換","(+, -) でメビウス変換","反転束において (+, -) でメビウス変換","すべての添字集合に関して (二項演算 f, …","bit-and でゼータ変換","bit-or でゼータ変換","bit-xor でゼータ変換","…","max でゼータ変換","min でゼータ変換","反転束において + でゼータ変換","反転束において bit-and でメビウス変換","反転束において bit-or でメビウス変換","反転束において bit-xor でメビウス変換","反転束において max でメビウス変換","反転束において min でメビウス変換","反転束において、f …","f を加法とするゼータ変換をします。"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[[[]],[[]],[[]],[[1,2],[[3,[2]]]],[[]],[[]],[[]],[1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1],[1]],"c":[],"p":[[8,"Fn"],[8,"Copy"],[3,"Vec"]]}\ +}'); +if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; +if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/search.desc/accum/accum-desc-0-.js b/search.desc/accum/accum-desc-0-.js deleted file mode 100644 index 2151dce0..00000000 --- a/search.desc/accum/accum-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("accum", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/advance/advance-desc-0-.js b/search.desc/advance/advance-desc-0-.js deleted file mode 100644 index 60351985..00000000 --- a/search.desc/advance/advance-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("advance", 0, "しゃくとり法ユーティルです。\ncheckertrue …\nadvance_until …") \ No newline at end of file diff --git a/search.desc/avl_tree/avl_tree-desc-0-.js b/search.desc/avl_tree/avl_tree-desc-0-.js deleted file mode 100644 index 6594a085..00000000 --- a/search.desc/avl_tree/avl_tree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("avl_tree", 0, "AVL …\nAVL 木本体です。\nAvlTree …\nAvlTree …\nother のすべての要素を self …\n列の末尾の要素があれば返し、空なら None …\n列の末尾の要素があれば返し、空なら None …\nvalue …\nfEqual …\nfEqual …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n列の先頭の要素があれば返し、空なら None …\n列の先頭の要素があれば返し、空なら None …\nother の第 index 成分があれば返し、なければ …\nother の第 index 成分があれば返し、なければ …\nother の第 index 成分に value を挿入します。\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\n空列であれば true を返します。\n…\n列の要素数を返します。\nvalue …\n空列を構築します。\n…\n…\n列の末尾に要素を追加します。\n列の先頭に要素を追加します。\nother の第 index …\nother の第 index 成分以降を切り離します。\nvalue …") \ No newline at end of file diff --git a/search.desc/bfs/bfs-desc-0-.js b/search.desc/bfs/bfs-desc-0-.js deleted file mode 100644 index 0f5d3d74..00000000 --- a/search.desc/bfs/bfs-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bfs", 0, "一点からの距離配列を作ります。\n…\nstart から end …\n…\n…") \ No newline at end of file diff --git a/search.desc/bfs01/bfs01-desc-0-.js b/search.desc/bfs01/bfs01-desc-0-.js deleted file mode 100644 index bce5c9dd..00000000 --- a/search.desc/bfs01/bfs01-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bfs01", 0, "一点からの距離配列を作ります。\n…\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/binary/binary-desc-0-.js b/search.desc/binary/binary-desc-0-.js deleted file mode 100644 index 229c77fc..00000000 --- a/search.desc/binary/binary-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("binary", 0, "二分法(ダブリング)をします。\n…\n*x != 1\n*x != 0\nx & 1 == 1\naⁿ(x) を計算します。\nself >>= 1\naⁿを計算します。") \ No newline at end of file diff --git a/search.desc/bitutils/bitutils-desc-0-.js b/search.desc/bitutils/bitutils-desc-0-.js deleted file mode 100644 index 8ebda000..00000000 --- a/search.desc/bitutils/bitutils-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bitutils", 0, "Provides iterator utilities of integer expression of sets.\nSee the document of combinations\nSee the document of subsets\nAdapter trait of this crate. Already implemented for all …\nReturns an iterator over k-subsets of …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nReturns an iterator over subsets of bs.") \ No newline at end of file diff --git a/search.desc/bitvec/bitvec-desc-0-.js b/search.desc/bitvec/bitvec-desc-0-.js deleted file mode 100644 index 0902f233..00000000 --- a/search.desc/bitvec/bitvec-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bitvec", 0, "Boolean 配列を u64 …\nBoolean 配列を u64 …\nビットを順に bool を返すイテレータです。\n指定したフォーマットの String …\nReturns the argument unchanged.\nReturns the argument unchanged.\n“01” 文字列から構築します。\nCalls U::from(self).\nCalls U::from(self).\n長さを返します。\nビットを順に bool …\n長さを返します。\nサイズを指定して 0 埋め構築します。\n後ろに要素を追架します。\n特定のビットを立てます。\n特定のビットが立っていれば true …\n特定のビットをおろします。") \ No newline at end of file diff --git a/search.desc/bsgs/bsgs-desc-0-.js b/search.desc/bsgs/bsgs-desc-0-.js deleted file mode 100644 index 4490d2f5..00000000 --- a/search.desc/bsgs/bsgs-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bsgs", 0, "Baby-step giant-step …\nBaby-stpp giant-step のソルバーです。\nReturns the argument unchanged.\nCalls U::from(self).\nx …\n新しい BSGS ソルバーを構築します。") \ No newline at end of file diff --git a/search.desc/cht/cht-desc-0-.js b/search.desc/cht/cht-desc-0-.js deleted file mode 100644 index f99f5084..00000000 --- a/search.desc/cht/cht-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("cht", 0, "CHT です。\nログがつく方\n凹関数を管理する方であるというマーカー\n凸関数を管理する方であるというマーカー\nBTreeCht, VecCht …\n二次式\nログがつかない方\n変数\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/cipolla/cipolla-desc-0-.js b/search.desc/cipolla/cipolla-desc-0-.js deleted file mode 100644 index a95588a2..00000000 --- a/search.desc/cipolla/cipolla-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("cipolla", 0, "") \ No newline at end of file diff --git a/search.desc/cmpmore/cmpmore-desc-0-.js b/search.desc/cmpmore/cmpmore-desc-0-.js deleted file mode 100644 index d358ea40..00000000 --- a/search.desc/cmpmore/cmpmore-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("cmpmore", 0, "Utility change_{min,max}.\nProvide method versions of change_min(), change_max()\nIf lhs is smaller than rhs, override lhs by rhs.\nIf self is smaller than rhs, override self by rhs.\nMacro version of change_max(). This is useful to avoid …\nIf lhs is larger than rhs, override lhs by rhs.\nIf self is larger than rhs, override self by rhs.\nMacro version of change_min(). This is useful to avoid …") \ No newline at end of file diff --git a/search.desc/convex_hull/convex_hull-desc-0-.js b/search.desc/convex_hull/convex_hull-desc-0-.js deleted file mode 100644 index 4c7392a3..00000000 --- a/search.desc/convex_hull/convex_hull-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("convex_hull", 0, "凸包を求めます。 …\ndet(p1 - p0, p2 - p0) を求めます。\n凸包を求めます。 …\n凸であれば true を返します。\n|p0 - p1| ^ 2 を求めます。") \ No newline at end of file diff --git a/search.desc/dfs/dfs-desc-0-.js b/search.desc/dfs/dfs-desc-0-.js deleted file mode 100644 index 336a6d88..00000000 --- a/search.desc/dfs/dfs-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("dfs", 0, "一点からの到達可能性配列を返します。") \ No newline at end of file diff --git a/search.desc/dijkstra_radix_heap/dijkstra_radix_heap-desc-0-.js b/search.desc/dijkstra_radix_heap/dijkstra_radix_heap-desc-0-.js deleted file mode 100644 index 8eb9c924..00000000 --- a/search.desc/dijkstra_radix_heap/dijkstra_radix_heap-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("dijkstra_radix_heap", 0, "CAUTION: RadixHeap fails in testst!\n一点からの距離配列を作ります。\n一点からの距離配列を作ります。") \ No newline at end of file diff --git a/search.desc/dinic/dinic-desc-0-.js b/search.desc/dinic/dinic-desc-0-.js deleted file mode 100644 index 3b8dfd5d..00000000 --- a/search.desc/dinic/dinic-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("dinic", 0, "Solves maximum flow problem.\nA struct to execute Dinic’s algorithm.\nA summary of the state of an edge, which is returned by …\nA key object to query an edge.\nAn adapter trait of the capacity.\nInserts a new edge to the network.\nThe capacity of an edge.\nChanges the capacity and the amount of the edge …\nAuguments the flow from s to t as much as possible. It …\nThe value of the flow of the network at this edge.\nAuguments the flow from s to t as much as possible as long …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe vertex-index of the source of an edge.\nReturns the current internal state of the edges.\nCollects all the edges.\nReturens the Vec of excess of all the vertices.\nCollects all the edges and arrange it in adjacent-list …\nReturns the max value of Self.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns a vector of length n, such that the i-th element …\nCreates a new instance of Dinic\nThe vertex-index of the target of an edge.\nReturns the zero.") \ No newline at end of file diff --git a/search.desc/dual_segtree/dual_segtree-desc-0-.js b/search.desc/dual_segtree/dual_segtree-desc-0-.js deleted file mode 100644 index 4b239bbb..00000000 --- a/search.desc/dual_segtree/dual_segtree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("dual_segtree", 0, "双対セグメント木(右作用)\n双対セグメント木(右作用)\n演算(右作用)\n値型\nrangex を作用させます。(右作用)\nVec に変換します。\nReturns the argument unchanged.\ni 番目の要素への参照を返します。\ni 番目の要素をクローンして返します。\ni 番目の要素をコピーして返します。\ni 番目の要素への可変参照を返します。\nop の単位元\nCalls U::from(self).\nVec に変換します。\n空なら true を返します。\n管理している配列の長さを返します。\nExactSizeIterator から作ります。\n作用する演算(右作用)\nlhsop(lhs, rhs) で置き換えます。") \ No newline at end of file diff --git a/search.desc/elim/elim-desc-0-.js b/search.desc/elim/elim-desc-0-.js deleted file mode 100644 index f2a1d093..00000000 --- a/search.desc/elim/elim-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("elim", 0, "…") \ No newline at end of file diff --git a/search.desc/erato/erato-desc-0-.js b/search.desc/erato/erato-desc-0-.js deleted file mode 100644 index fece4bb1..00000000 --- a/search.desc/erato/erato-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("erato", 0, "Use the two types of sieve of eratosthenes to query.\nAbstraction of integers.\nLeast-prime-divisor table.\nAn abstraction of prime factor generator.\nSee the document of crate::LpdSieve::prime_factors\nSee the document of crate::Sieve::prime_factors\nAn iterator to generate all the prime numbers, constructed …\nAn iterator returned by PrimeFactors::rle\nIs-prime table.\nAn iterator returned by PrimeFactors::unique\nConverts into usize\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConverts an usize into Self\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns true if a sieve is empty.\nReturns true if a sieve is empty.\nReturns true if x is a prime number.\nReturns true if x is a prime number.\nReturns the length of a sieve.\nReturns the length of a sieve.\nReturns the least prime divisor of x.\nConstruct a new empty sieve. No heap allocations is run …\nConstruct a new empty sieve. No heap allocations is run …\nReturns 1.\nUse trial-division algorithm to iterate over all the prime …\nUse trial-division algorithm to iterate over all the prime …\nReturns an iterator to generate all the prime numbers in …\nReturns an iterator to generate all the prime numbers in …\nReturns an iterator to generate the pairs of distinct …\nReturns an iterator to generate the pairs of distinct …\nForward crate::PrimeFactors::rle.\nReturns 2.\nMake prime factors unique.\nMake prime factors unique.\nForward crate::PrimeFactors::unique.\nConstruct a sieve of given length.\nConstruct a sieve of given length.\nReturns 0.") \ No newline at end of file diff --git a/search.desc/euclid/euclid-desc-0-.js b/search.desc/euclid/euclid-desc-0-.js deleted file mode 100644 index 76763322..00000000 --- a/search.desc/euclid/euclid-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("euclid", 0, "Abstraction of integers.\nAbstraction of signed integers.\nAbstraction of unsigned integers.\nReturns the absolute value.\nReturns an integer res2, mod2 such that (res0 + mod0 ℤ) …\nCalculates the quotient of Euclidean division of self by …\nReturns true if and only if self divides n.\nTakes two integers x, y and returns a, b, g satisfying …\nReturns the greatest common divisor of x and y.\nIncrement self.\nReturns 1.\nCalculates the least nonnegative remainder of …\nReturns 0.") \ No newline at end of file diff --git a/search.desc/fp/fp-desc-0-.js b/search.desc/fp/fp-desc-0-.js deleted file mode 100644 index 8312a3e2..00000000 --- a/search.desc/fp/fp-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("fp", 0, "A library for modular arithmetic.\nPrecomputes the factorials and their inverses.\nA value in $\\mathbb{Fp}_p$.\nA primitive root of unity.\nA primitive root of unity.\nMultiplies two polynomials.\n$[x^k](1 + x)^n$.\n$[x^k](1 + x)^n$.\nThe factorial $n!$ Index is implemented for this method.\n$[x^{n-k}]D^k x^n$.\nFast Fourier transform.\nConstructs a new instance of Fp\nMultiplies two polynomials.\nReturns the argument unchanged.\nReturns the argument unchanged.\nInverse fast Fourier transform.\nCalls U::from(self).\nCalls U::from(self).\nReturns the multiplicative inverse.\nThe inverse of the factorial $n!$\n$(-1) ^ e$.\n$[x^{a_1} \\cdot x^{a_l}](x_{a_1} + \\cdot x_{a_l})^n$.\n$[x^k](1 - x)^{-n}$.\nConstructs a new instance.\nConstructs a new instance.\nReturns the $n$-th power.\nReturns $(-1)^{\\text{pow}}$.\nReturns the value.") \ No newline at end of file diff --git a/search.desc/fps/fps-desc-0-.js b/search.desc/fps/fps-desc-0-.js deleted file mode 100644 index a1e6f21c..00000000 --- a/search.desc/fps/fps-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("fps", 0, "Arithmetic of formal power series.\nDefine a formal power series in the same way as vec!.\nReturns the derivative of a formal power series.\nReturns the exponential of a formal power series.\nReturns the integral of a formal power series with zero …\nReturns the multiplicative inverse of a formal power …\nReturns the logarithm of a formal power series.\nResutns the $n$-th power of a formal power series.\nReturns the square root of a formal power series.") \ No newline at end of file diff --git a/search.desc/gco/gco-desc-0-.js b/search.desc/gco/gco-desc-0-.js deleted file mode 100644 index 9b5379c5..00000000 --- a/search.desc/gco/gco-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("gco", 0, "Solve a submodular graph cut optimizaion problem of degree …\nA solver of graph cut optimization problems.\nThe minimum value and and an argmin of $f$.\nAn argmin\nAdd a binary term.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nInitialize a solver with $n$ terms.\nReturns the minimum value and an argmin of $f$.\nAdd a unary term.\nThe minimum value") \ No newline at end of file diff --git a/search.desc/gridnei/gridnei-desc-0-.js b/search.desc/gridnei/gridnei-desc-0-.js deleted file mode 100644 index 43f88ce1..00000000 --- a/search.desc/gridnei/gridnei-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("gridnei", 0, "…\n…\ngrid_iter! …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n…\n…\n新しい Grid* を定義して、GridIterator …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/gss/gss-desc-0-.js b/search.desc/gss/gss-desc-0-.js deleted file mode 100644 index 7268764f..00000000 --- a/search.desc/gss/gss-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("gss", 0, "黄金分割探索をします。\ngss_by_count …\n黄金分割をする関数 golden_sect …\n1 / φ = 0.6180339887498949\ngss_integer …\nSelf の同名メソッド\nselfother を φ:1 …\n…\n回数指定バージョン。count …\n整数バージョン。正確な値を返します。\n…\nSelf の同名メソッド\nSelf の同名メソッド\n数学的な floor((self + upper)/2) …\n1\n2.0\n0.0") \ No newline at end of file diff --git a/search.desc/heap_slope_trick/heap_slope_trick-desc-0-.js b/search.desc/heap_slope_trick/heap_slope_trick-desc-0-.js deleted file mode 100644 index 968e3676..00000000 --- a/search.desc/heap_slope_trick/heap_slope_trick-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("heap_slope_trick", 0, "BinaryHeap 二本で slope trick をします。\n本体です。\nHeapSlopeTrick::summary() の戻り値です。\n絶対値関数加算 g(x) = f(x) + |x - a|\n定数関数加算 g(x) = f(x) + c\n傾き -1 のカットオフ一次関数加算 g(x) = f(x) …\n傾き +1 のカットオフ一次関数加算 g(x) = f(x) …\n関節点(二階差分が正である点)全体の列 …\n左から累積最小値 g(x) = min { f(y) | y ∈ ]-∞, x…\n右から累積最小値 g(x) = min { f(y) | y ∈ [x, ∞[…\n一点評価 f(x)\nReturns the argument unchanged.\nReturns the argument unchanged.\n最小値を取る x の集合(と [MIN, MAX] …\n最小値取得 min { f(x) | x in ]-∞, ∞[ }\n差分の最大値 max { f(x + 1) - f(x) | x ∈ ]-∞, ∞…\n差分の最小値 min { f(x + 1) - f(x) | x ∈ ]-∞, ∞…\nCalls U::from(self).\nCalls U::from(self).\n足し算をします。\n零関数 f(x) = 0\n平行移動 g(x) = f ( x - a )\nスライド最小値 g(x) = min { f(y) | y ∈ [x - b, x …\n関節点と差分の範囲を返します。") \ No newline at end of file diff --git a/search.desc/heap_tricks/heap_tricks-desc-0-.js b/search.desc/heap_tricks/heap_tricks-desc-0-.js deleted file mode 100644 index 1291c823..00000000 --- a/search.desc/heap_tricks/heap_tricks-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("heap_tricks", 0, "remove_unchecked のできるヒープです。\n…\n集約操作を指定するためのトレイトです。 …\n何も集約しないことを表す型です。 Handler …\n論理削除のできるヒープです。\n総和を集約するための型です。 Handler …\n左側ヒープの要素が k …\n右側ヒープの要素が k …\n…\n…\n…\n…\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nハンドラへの参照を返します。\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nヒープが空ならば true を返します。\nヒープが空ならば true を返します。\n左側ヒープの要素数を返します。\n全体の要素数を返します。\nヒープの長さを返します。\n…\n…\n空のヒープを構築します。\n…\n左側ヒープの最大要素があれば返します。\n右側ヒープの最大要素があれば返します。\n…\n左側から削除するときのコールバック関数\n…\n右側から削除するときのコールバック関数\n…\nヒープに新しい要素 x を追加します。\n左側に挿入するときのコールバック関数\n…\n右側に挿入するときのコールバック関数\n…\n…\n…\nヒープに含まれる要素 x を削除します。 …\n右側ヒープの要素数を返します。\nHandler を指定して構築します。") \ No newline at end of file diff --git a/search.desc/hld/hld-desc-0-.js b/search.desc/hld/hld-desc-0-.js deleted file mode 100644 index e049ee09..00000000 --- a/search.desc/hld/hld-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("hld", 0, "Heavy-Light Decomposition\nHeavy-Light Decomposition\nIterator\nj lies between i and k\nReturns the distance between two vertices\nReturns the argument unchanged.\nReturns the argument unchanged.\nIterator version of from_edges\nFrom the set of undirected edges $(u _ 0, v _ 0), \\dots ( …\nFrom $p _ 1, \\dots, p _ { n - 1 }$. Root is always $0$.\nvertex id -> head vertex id\nvertex id -> vertex index (in the hld order)\nCalls U::from(self).\nCalls U::from(self).\nReturns the lca\ndeprecated\nvertex id -> parent vertex id\nDecompose the (directed) path from --> to to the path …\nVariation of path_segments that returns the index.") \ No newline at end of file diff --git a/search.desc/hopkarp/hopkarp-desc-0-.js b/search.desc/hopkarp/hopkarp-desc-0-.js deleted file mode 100644 index 72d45014..00000000 --- a/search.desc/hopkarp/hopkarp-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("hopkarp", 0, "Finds a maximum cardinality bipartite matching by …\nSummary of the result of Hopcroft―Karp’s algorithm.\nCardinality of a maximum cardinality bipartite matching.\nReturns the argument unchanged.\nTakes a forward adjacency list and the length of the right …\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/hungarian/hungarian-desc-0-.js b/search.desc/hungarian/hungarian-desc-0-.js deleted file mode 100644 index fefb92f8..00000000 --- a/search.desc/hungarian/hungarian-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("hungarian", 0, "Solve an assignment problem by Hungarian algorithm.\nA value object to represent the optimal solution of an …\nA trait to adapt a value type to hungarian\nTakes the second component of a match and returns the …\nTakes the first component of a match and returns the …\nReturns the argument unchanged.\nSee the crate level documentation\nCalls U::from(self).\nA left half of an optimal potential.\nA right half of an optimal potential.\nThe value of an optimal solution.") \ No newline at end of file diff --git a/search.desc/interval_heap/interval_heap-desc-0-.js b/search.desc/interval_heap/interval_heap-desc-0-.js deleted file mode 100644 index ca70e9dc..00000000 --- a/search.desc/interval_heap/interval_heap-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("interval_heap", 0, "Interval Heaps\nInterval heap (double-ended priority queue)\nReturns the argument unchanged.\nCalls U::from(self).\nConstructs a new, empty interval heap.\nReturns $\\max(S)$.\nReturns $\\min(S)$.\nRemoves and returns $\\max(S)$.\nRemoves and returns $\\min(S)$.\n$S \\leftarrow S \\cup \\{\\!\\{x\\}\\!\\}$.") \ No newline at end of file diff --git a/search.desc/io/io-desc-0-.js b/search.desc/io/io-desc-0-.js deleted file mode 100644 index d0fb21bf..00000000 --- a/search.desc/io/io-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("io", 0, "Read input from stdin and parse it.\nTrait for types that can be parsed.\nRead input from stdin and parse it.") \ No newline at end of file diff --git a/search.desc/lagrange/lagrange-desc-0-.js b/search.desc/lagrange/lagrange-desc-0-.js deleted file mode 100644 index 785b0c66..00000000 --- a/search.desc/lagrange/lagrange-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("lagrange", 0, "ラグランジュ補完\n多項式の係数から 1 …\nx 座標の異なるような N 点の評価から、N - 1 …\n0..N の評価から、N - 1 …\n0..N での評価から決まる N - 1 …") \ No newline at end of file diff --git a/search.desc/lazy_segbeats/lazy_segbeats-desc-0-.js b/search.desc/lazy_segbeats/lazy_segbeats-desc-0-.js deleted file mode 100644 index 69431865..00000000 --- a/search.desc/lazy_segbeats/lazy_segbeats-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("lazy_segbeats", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/lazy_segtree/lazy_segtree-desc-0-.js b/search.desc/lazy_segtree/lazy_segtree-desc-0-.js deleted file mode 100644 index 5d190eae..00000000 --- a/search.desc/lazy_segtree/lazy_segtree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("lazy_segtree", 0, "LazySegtree\nA lazy segment tree.\nOpertions for a lazy segment tree.\nThe operator type.\nThe value type.\nApplies an operator to a value.\nReturns the values as a vector. It takes $O(n \\log n)$ …\nComposes two operators. The result of compose(a, b) is …\nFolds a range.\nReturns the argument unchanged.\nReturns the value at the index i.\nReturns the identity value.\nReturns the identity operator.\nCalls U::from(self).\nConstructs a new lazy segment tree. You can use from_iter …\nMultiplies two values.\nApplies an operator to a range.") \ No newline at end of file diff --git a/search.desc/lg/lg-desc-0-.js b/search.desc/lg/lg-desc-0-.js deleted file mode 100644 index 56047da7..00000000 --- a/search.desc/lg/lg-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("lg", 0, "") \ No newline at end of file diff --git a/search.desc/lin_ineq/lin_ineq-desc-0-.js b/search.desc/lin_ineq/lin_ineq-desc-0-.js deleted file mode 100644 index e039d464..00000000 --- a/search.desc/lin_ineq/lin_ineq-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("lin_ineq", 0, "一次不等式を解きます。\n閉区間を表す、[T; 2] …\n符号付き整数です。\n…\n標準形の空区間を返します。具体的には、…\nInterval 型のオブジェクトを human readable …\nReturns the argument unchanged.\n全区間を返します。具体的には、[MIN, MAX] …\n区間の交差を計算します。\nCalls U::from(self).\n空区間であるかどうかを判定します。\nintersection() を呼び出します。\nintersection() を呼び出します。\nintersection() を呼び出します。\nintersection() を呼び出します。\n…\nintersection() で畳み込みます。\nintersection() で畳み込みます。\n基本形 ax <= b\n挟み撃ち形 l <= ax + b <= r") \ No newline at end of file diff --git a/search.desc/link_cut_tree/link_cut_tree-desc-0-.js b/search.desc/link_cut_tree/link_cut_tree-desc-0-.js deleted file mode 100644 index b30a389d..00000000 --- a/search.desc/link_cut_tree/link_cut_tree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("link_cut_tree", 0, "Link-Cut Tree\nLink-Cut Tree with commutative operation\nLink-Cut Tree without aggregation operation\nCommon implementation of Link-Cut Tree. Please do not use …\nLink-Cut Tree with non-commutative operation\nAggregation operation for link-cut tree\nCuts the edge between x and its parent.\nMakes x the root of the tree.\nFolds the path from the root to x.\nReturns the argument unchanged.\nConstructs a new Link-Cut Tree with n nodes, where the …\nCalls U::from(self).\nReturns the id of the lowest common ancestor of x and y.\nConnects p and c with an edge, preserving the direction.\nConstructs a new Link-Cut Tree with n nodes.\nReturns the id of the parent of x.\nSets the value of x to f(x).\nCuts the edge between i and j, not preserving the …\nFolds the path from i to j, not preserving the direction.\nReturns true if there is an edge between x and y.\nReturns true if x and y are connected.\nConnects i and j with an edge, not preserving the …") \ No newline at end of file diff --git a/search.desc/low_link/low_link-desc-0-.js b/search.desc/low_link/low_link-desc-0-.js deleted file mode 100644 index 1b944777..00000000 --- a/search.desc/low_link/low_link-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("low_link", 0, "Low-link を計算します。\nLow-link を計算する構造体です。\n…\n…\nビルドします。\nReturns the argument unchanged.\nCalls U::from(self).\n頂点 x が関節点なら true を返します。\n頂点 x, y …\n未ビルドの空グラフを構築します。\n…") \ No newline at end of file diff --git a/search.desc/make_graph/make_graph-desc-0-.js b/search.desc/make_graph/make_graph-desc-0-.js deleted file mode 100644 index 788cc7e5..00000000 --- a/search.desc/make_graph/make_graph-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("make_graph", 0, "…\n[u, v] …\n([u, v], w) …\n[u, v] …\n([u, v], w) …\n…\n…\n…\n…\n(u, v) …\n(u, v, w) …\n(u, v) …\n(u, v, w) …") \ No newline at end of file diff --git a/search.desc/manacher/manacher-desc-0-.js b/search.desc/manacher/manacher-desc-0-.js deleted file mode 100644 index fa3b0057..00000000 --- a/search.desc/manacher/manacher-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("manacher", 0, "Manacher’s algorithm\nReturns the palindrome array $A$ of the given string $s$.") \ No newline at end of file diff --git a/search.desc/mincost_flow/mincost_flow-desc-0-.js b/search.desc/mincost_flow/mincost_flow-desc-0-.js deleted file mode 100644 index 245c067b..00000000 --- a/search.desc/mincost_flow/mincost_flow-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("mincost_flow", 0, "Dijkstra …\nMinCostFlow::get_edge の戻り値型\nDijkstra …\n辺を追加します。\n解きます\nReturns the argument unchanged.\nReturns the argument unchanged.\ni 番目に挿入した辺を取得します。\nCalls U::from(self).\nCalls U::from(self).\n空グラフを構築します。\n解きます") \ No newline at end of file diff --git a/search.desc/monotone_minima/monotone_minima-desc-0-.js b/search.desc/monotone_minima/monotone_minima-desc-0-.js deleted file mode 100644 index dc8f6b4c..00000000 --- a/search.desc/monotone_minima/monotone_minima-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("monotone_minima", 0, "Monotone minima のアルゴリズムと、それによる …\nconcave な列に対して max-plus convolution …\nconvex な列に対して min-plus convolution …\n行列 f(i, j) を受け取って、monotone maxima …\n行ごとのセル比較 cmp(i, j, k) …\n行列 f(i, j) を受け取って、monotone minima …\n行ごとのセル比較 cmp(i, j, k) …") \ No newline at end of file diff --git a/search.desc/naive_poly/naive_poly-desc-0-.js b/search.desc/naive_poly/naive_poly-desc-0-.js deleted file mode 100644 index 4c4ed17a..00000000 --- a/search.desc/naive_poly/naive_poly-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("naive_poly", 0, "Naive implementation of polynomial operations\nAdd two polynomials in $O(\\max(n, m))$ time.\nDivide two polynomials in $O((n - m) m)$ time.\nEvaluate a polynomial at a point in $O(n)$ time.\nMultiply two polynomials in $O(nm)$ time.\nCompute the $e$-th power of a polynomial in $O((en)^2 \\log …\nSubtract two polynomials in $O(\\max(n, m))$ time.") \ No newline at end of file diff --git a/search.desc/newton/newton-desc-0-.js b/search.desc/newton/newton-desc-0-.js deleted file mode 100644 index ecd7a039..00000000 --- a/search.desc/newton/newton-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("newton", 0, "") \ No newline at end of file diff --git a/search.desc/next_permutation/next_permutation-desc-0-.js b/search.desc/next_permutation/next_permutation-desc-0-.js deleted file mode 100644 index a4880fc2..00000000 --- a/search.desc/next_permutation/next_permutation-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("next_permutation", 0, "A library to enumerate permutations, shuffles, and …\nCalls f for each pairing (ascending …\nCalls f for each partition of n in lexicographic order.\nCalls f for each partition of n in the reverse of the …\nCalls f for each permutation of a in lexicographic order.\nCalls f for each $(K, N - K)$-shuffle of a in …\nReturns the next pairing (ascending …\nReturns the next partition of a in lexicographic order.\nReturns the next permutation of a in lexicographic order.\nReturns the next $(K, N - K)$-shuffle of a in …\nReturns all pairings (ascending $(2,2,\\dots,2)$-shuffles) …\nReturns all partitions of n in lexicographic order.\nReturns all partitions of n in the reverse of the …\nReturns all permutations of a in lexicographic order.\nReturns the previous partition of a in lexicographic order.\nReturns all $(K, N - K)$-shuffles of a in lexicographic …") \ No newline at end of file diff --git a/search.desc/numeric_search/numeric_search-desc-0-.js b/search.desc/numeric_search/numeric_search-desc-0-.js deleted file mode 100644 index 2e68d2bc..00000000 --- a/search.desc/numeric_search/numeric_search-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("numeric_search", 0, "Run classic binary or exponential search on integer or …\nFloating pont number.\n$\\infty$\n$-\\infty$\n$1$\n$1$\nSigned integers.\nUnsigned integers.\n$0$\n$0$\nRun a binary search search on signed numbers.\nRun a binary search search on unsigned numbers.\nRun an exponential search on floating point numbers.\nRun an exponential search on unsigned numbers.\nRun an exponential search on unsigned numbers.\n$x \\mapsto \\sqrt x$") \ No newline at end of file diff --git a/search.desc/open/open-desc-0-.js b/search.desc/open/open-desc-0-.js deleted file mode 100644 index dd99d541..00000000 --- a/search.desc/open/open-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("open", 0, "") \ No newline at end of file diff --git a/search.desc/partially_persistent_union_find/partially_persistent_union_find-desc-0-.js b/search.desc/partially_persistent_union_find/partially_persistent_union_find-desc-0-.js deleted file mode 100644 index f5c1b294..00000000 --- a/search.desc/partially_persistent_union_find/partially_persistent_union_find-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("partially_persistent_union_find", 0, "…\n…\n時刻 time の代表の頂点番号を返します。\nReturns the argument unchanged.\nCalls U::from(self).\n新しくデータ構造を構築します。\n時刻 time に i と j …\n時刻 time の i …\n2 頂点が結合された時刻を返します。\n…") \ No newline at end of file diff --git a/search.desc/radix_heap/radix_heap-desc-0-.js b/search.desc/radix_heap/radix_heap-desc-0-.js deleted file mode 100644 index 9191400f..00000000 --- a/search.desc/radix_heap/radix_heap-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("radix_heap", 0, "CAUTION: Failing in tests!\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/randtools/randtools-desc-0-.js b/search.desc/randtools/randtools-desc-0-.js deleted file mode 100644 index 1ac189c2..00000000 --- a/search.desc/randtools/randtools-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("randtools", 0, "Returns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/rational/rational-desc-0-.js b/search.desc/rational/rational-desc-0-.js deleted file mode 100644 index 682c30de..00000000 --- a/search.desc/rational/rational-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("rational", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/rb/rb-desc-0-.js b/search.desc/rb/rb-desc-0-.js deleted file mode 100644 index ca4ac7f3..00000000 --- a/search.desc/rb/rb-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("rb", 0, "Containers for storing data in a red-black tree.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/rbtree/rbtree-desc-0-.js b/search.desc/rbtree/rbtree-desc-0-.js deleted file mode 100644 index a6ab62f6..00000000 --- a/search.desc/rbtree/rbtree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("rbtree", 0, "赤黒木\niter の返す型\n…\n…\n赤黒木です。\n中間ノードに持たせる値\n葉に持たせる値\ni 番目の Nil …\nrange の範囲で畳み込みます。\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n…\ni 番目の要素をコピーして返します。\ni 番目に新しい Nil ノードを挿入します。\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\n空ならば true、さもなくば false …\n…\n長さ、すなわち Nil …\n2 つの赤黒木をマージします。\n3 つの赤黒木をマージします。\n空の赤黒木を生成します。\n演算\n中間ノードの情報で二分探索します。\n新しいノードを末尾に挿入します。\n新しいノードを先頭に挿入します。\nNil …\ni 番目で分割します。\nl, r 番目で 3 つに分割します。\n葉の値から中間ノードの値への変換") \ No newline at end of file diff --git a/search.desc/scc/scc-desc-0-.js b/search.desc/scc/scc-desc-0-.js deleted file mode 100644 index aae818cb..00000000 --- a/search.desc/scc/scc-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("scc", 0, "このライブラリを使える問題\n本体です。\n【Require: 未ビルド】 辺 (from, to) …\n【Require: 未ビルド】 ビルドします。\n【Require: ビルド済み】 …\n【Require: ビルド済み】 頂点 x …\n【Require: ビルド済み】 …\nReturns the argument unchanged.\n正向きのグラフの隣接リストを返します。\nCalls U::from(self).\n管理しているグラフが空グラフならば、true …\n管理しているグラフの頂点数を返します。\n頂点数 n …\n【Require: ビルド済み】 …\n【Require: ビルド済み】 …\n【Require: ビルド済み】 …\n逆向きのグラフの隣接リストを返します。") \ No newline at end of file diff --git a/search.desc/segbeats/segbeats-desc-0-.js b/search.desc/segbeats/segbeats-desc-0-.js deleted file mode 100644 index 2ceecfc7..00000000 --- a/search.desc/segbeats/segbeats-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("segbeats", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/segbeats_task3/segbeats_task3-desc-0-.js b/search.desc/segbeats_task3/segbeats_task3-desc-0-.js deleted file mode 100644 index a1b7a2bc..00000000 --- a/search.desc/segbeats_task3/segbeats_task3-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("segbeats_task3", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/segtree/segtree-desc-0-.js b/search.desc/segtree/segtree-desc-0-.js deleted file mode 100644 index 73a3cc9d..00000000 --- a/search.desc/segtree/segtree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("segtree", 0, "Segment tree and its variants.\nThe result of Dense2dSegtree::entry.\nA dense 2D segment tree.\nThe result of Segtree::entry.\nA trait for segment tree operations.\nA segment tree. Use as_slice() to debug.\nA sparse (compressed) segment tree. Use collect_map() to …\nA segment tree of segment trees (2D segment tree). The …\nThe value type.\nApply a function to $x_{k, l}$.\nReturns a slice of $x_0, x_1, \\ldots, x_{n-1}$.\nCollects the key-value pairs into a BTreeMap.\nCollects the key-value pairs into a BTreeMap.\nCollect to a $2$-dimensional vector.\nReturns the entry of $x_i$.\nReturns the entry of $x_k$. If $k$ is not found, it panics.\nReturns the entry of $x_{i, j}$.\nReturns $x_l \\cdot x_{l+1} \\cdot \\ldots \\cdot x_{r-1}$.\nFolds $\\left \\lbrace x_k \\mid k \\in \\text{{range}} \\right …\nFolds $\\left \\lbrace x_{k, l} \\mid (k, l) \\in …\nFold $\\left \\lbrace x_{i, j} \\mid i \\in \\text{{range}}_i, …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs a new segment tree with the specified length.\nReturns the identity value $e$.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns an iterator of $x_0, x_1, \\ldots, x_{n-1}$.\nReturns an iterator of $(k, x_k)$.\nReturns the iterator of $(k, l, x_{k, l})$.\nReturns an iterator that returns the rows $(x_{i, 0}, x_…\nReturns the keys.\nReturns the maximum $r$ s.t. $f(x _ l \\cdot \\dots \\cdot x …\nReturns the minimum $l$ s.t. $f(x _ l \\cdot \\dots \\cdot x …\nMultiplies two values: $x \\cdot y$.\nConstructs with the specified values.\nConstructs with the specified key-value pairs.\nConstructs with the specified key-value pairs.\nConstructs with the specified values.") \ No newline at end of file diff --git a/search.desc/skew_heap/skew_heap-desc-0-.js b/search.desc/skew_heap/skew_heap-desc-0-.js deleted file mode 100644 index 777ef469..00000000 --- a/search.desc/skew_heap/skew_heap-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("skew_heap", 0, "Meld のできるヒープ\nMeld のできるヒープ\n中身を殻にします。\nReturns the argument unchanged.\nCalls U::from(self).\nソート済みの Vec に変換します。\n2 つの SkewHeap …\n2 つの SkewHeap …\n新しく構築します。\n…\n…\n要素を一つ、追加します。\n要素一つからなる SkewHeap を構築します。") \ No newline at end of file diff --git a/search.desc/slicemore/slicemore-desc-0-.js b/search.desc/slicemore/slicemore-desc-0-.js deleted file mode 100644 index 8eb80602..00000000 --- a/search.desc/slicemore/slicemore-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("slicemore", 0, "{lower,upper}_bound and partition_point\nMethod versions of functions.\nFind $i$ s.t. $a _ { i - 1 } \\lt b \\le a _ i$.\nFind $i$ s.t. $f ( a _ { i - 1 } ) \\in \\left \\lbrace …\nFind $i$ s.t. $f ( a _ { i - 1 } ) \\lt b \\le f ( a _ i )$.\nFind $i$ s.t. $f ( a _ { i - 1 } ) \\land \\neg f ( a _ i )$.\nFind $i$ s.t. $a _ { i - 1 } \\le b \\lt a _ i$.\nFind $i$ s.t. $f ( a _ { i - 1 } ) \\in \\left \\lbrace …\nFind $i$ s.t. $f ( a _ { i - 1 } ) \\le b \\lt f ( a _ i )$.") \ No newline at end of file diff --git a/search.desc/snippetter/snippetter-desc-0-.js b/search.desc/snippetter/snippetter-desc-0-.js deleted file mode 100644 index af143c94..00000000 --- a/search.desc/snippetter/snippetter-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("snippetter", 0, "Returns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/search.desc/sort_tree/sort_tree-desc-0-.js b/search.desc/sort_tree/sort_tree-desc-0-.js deleted file mode 100644 index c16c7f85..00000000 --- a/search.desc/sort_tree/sort_tree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("sort_tree", 0, "根付き木をトポロジカルソートします。\n親を消します\n根付き木をトポロジカルソートします。\n根付き木をトポロジカルソートします。\n…") \ No newline at end of file diff --git a/search.desc/sparse_table/sparse_table-desc-0-.js b/search.desc/sparse_table/sparse_table-desc-0-.js deleted file mode 100644 index e768da9d..00000000 --- a/search.desc/sparse_table/sparse_table-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("sparse_table", 0, "Sparse Table\nA trait for the operation used in sparse tables.\nA sparse table for 1-dimensional range queries.\nA sparse table for 2-dimensional range queries.\nThe type of the values.\nReturns a slice of the values.\nReturns a slice of the values.\nConstructs a sparse table from a slice of values.\nConstructs a sparse table from a slice of values.\nCollects the values into a vector.\nCollects the values into a vector of vectors.\nReturns $x_l \\cdot x_{l+1} \\cdot \\ldots \\cdot x_{r-1}$, or …\nReturns $(x_{i_0, j_0} \\cdot \\dots \\cdot x_{i_1-1, j_0}) …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the value at the given index.\nReturns the inner table.\nReturns the inner table.\nCalls U::from(self).\nCalls U::from(self).\nReturns an iterator over the values.\nReturns that yields the row of the table.\nMultiplies two values: $x \\cdot y$.\nConstructs a sparse table from a vector of values.\nConstructs a sparse table from a vector of values.") \ No newline at end of file diff --git a/search.desc/splay_tree/splay_tree-desc-0-.js b/search.desc/splay_tree/splay_tree-desc-0-.js deleted file mode 100644 index 8e00d528..00000000 --- a/search.desc/splay_tree/splay_tree-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("splay_tree", 0, "スプレー木です。\n集約値型\n集約値型\nSplayTree::entry の戻り値型です。\nSplayTree::iter, SplayTree::range の戻り値型です。\n作用値型\n集約と作用のトレイト\nOps を実装する型をラップして LazyOps …\n集約も作用もなしの場合に使うトレイト\n作用なしの場合に使うトレイト\nスプレー木\nSized, Debug, Clone をまとめたトレイト\n頂点重み型\n頂点重み型\n指定した範囲の要素すべてに作用します。\n集約値への作用\n頂点重みへの作用\n…\n作用の合成\nOption へ作用の合成\n指定した場所の要素を削除します。\n内部情報をダンプします。\n…\n指定した範囲の要素を畳み込みます。\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n…\n指定した場所に挿入します。\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\n空ならば true を返します。\n要素を順番に返すイテレータを返します。\n要素数を返します。\n空のスプレー木を構築します。\n集約演算\n集約演算\n集約化\n集約化\n…\n指定した範囲の要素を逆順にします。\n指定した場所以降を切り離して返します。") \ No newline at end of file diff --git a/search.desc/suffix_array/suffix_array-desc-0-.js b/search.desc/suffix_array/suffix_array-desc-0-.js deleted file mode 100644 index df06e985..00000000 --- a/search.desc/suffix_array/suffix_array-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("suffix_array", 0, "Suffix Array を計算します。\nLCP 配列を計算します。\nSurrix Array を計算します。") \ No newline at end of file diff --git a/search.desc/suffix_sum/suffix_sum-desc-0-.js b/search.desc/suffix_sum/suffix_sum-desc-0-.js deleted file mode 100644 index 369057f4..00000000 --- a/search.desc/suffix_sum/suffix_sum-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("suffix_sum", 0, "Suffix Sum\nA trait for segment tree operations.\nA structure that stores the suffix sum of a sequence.\nA structure that stores the suffix sum of a 2D sequence.\nThe value type.\nCollects the values to a vector.\nCollects the values to a vector.\nDivides two values: $x \\cdot y^{-1}$.\nReturns $x_l \\cdot x_{l+1} \\cdot \\ldots \\cdot x_{r-1}$.\nReturns $\\left ( x_{i_0, j_0} \\cdot \\dots \\cdot x_{i_0, …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns $x_i$.\nReturns $x_{i,j}$.\nReturns the identity value $e$.\nReturns a reference to the inner values.\nReturns a reference to the inner values.\nCalls U::from(self).\nCalls U::from(self).\nMultiplies two values: $x \\cdot y$.\nConstructs a new instance.\nConstructs a new instance.") \ No newline at end of file diff --git a/search.desc/swag/swag-desc-0-.js b/search.desc/swag/swag-desc-0-.js deleted file mode 100644 index 4469d6d0..00000000 --- a/search.desc/swag/swag-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("swag", 0, "Sliding Window Aggregation (SWAG)\nDequeueSwag\nOperations\nValue type\nReturns two slices, joining that is exactly the all …\nConstructs a new DequeueSwag from a slice.\nCollects the DequeueSwag into a Vec.\nConstructs a new DequeueSwag from a slice.\nFold the DequeueSwag. Returns None if the DequeueSwag is …\nReturns the argument unchanged.\nReturns the element at the index.\nCalls U::from(self).\nReturns whether the DequeueSwag is empty.\nReturns an iterator over the DequeueSwag.\nReturns the length of the DequeueSwag.\nConstructs a new DequeueSwag.\nAssociative operation\nPop an element from the back. Returns None if the …\nPop an element from the front. Returns None if the …\nAppend an element to the back.\nAppend an element to the front.") \ No newline at end of file diff --git a/search.desc/tree_fold/tree_fold-desc-0-.js b/search.desc/tree_fold/tree_fold-desc-0-.js deleted file mode 100644 index 6230bc99..00000000 --- a/search.desc/tree_fold/tree_fold-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("tree_fold", 0, "2-way tree DP\nOperations\nThe return value of Op::two_way_tree_fold() ans …\nA monoid $M$.\n$f(\\phi(T_i^\\blacktriangledown))$\nReturns the argument unchanged.\n$* \\to F$: empty forest\nCalls U::from(self).\n$\\prod_{j \\lessdot i} f(\\phi(T_j^\\blacktriangledown))$\n$F \\times F \\to F$: concatenate two forests\nPerforms 2-way tree DP\nPerforms 2-way tree DP\n$F \\times V \\to T \\to F$: join by a root\n$f(\\phi(T_i^\\triangle))$") \ No newline at end of file diff --git a/search.desc/trial/trial-desc-0-.js b/search.desc/trial/trial-desc-0-.js deleted file mode 100644 index c36152a5..00000000 --- a/search.desc/trial/trial-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("trial", 0, "Execute the trial-division algorithm.\nSee the document of a function divisors_unordered\nSee the document of a function prime_factors\nSee the document of a function prime_factors_rle\nAbstraction of unsigned integers.\nReturns true if and only if self divides n.\nReturns a Vec of the divisors. The divisors is guaranteed …\nTakes an unsigned integer and returns an iterator to yield …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nIncrement self.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns 1.\nTakes an unsigned integer and returns an iterator to yield …\nTakes an unsigned integer and returns an iterator to yield …\nReturns 0.") \ No newline at end of file diff --git a/search.desc/trie/trie-desc-0-.js b/search.desc/trie/trie-desc-0-.js deleted file mode 100644 index 7249185f..00000000 --- a/search.desc/trie/trie-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("trie", 0, "A set and map data structure on trie.\nTries here have the fixed branching number 26.\nA map base on a trie.\nA set base on a trie.\nReturns true if the set contains a value.\nVisits all the values of a values in the trie, in …\nVisits all the pairs of a key of a values in the trie, in …\nVisits all the “existing” nodes corresponding to the …\nVisits all the “existing” nodes corresponding to the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns a reference to the value corresponding to the key.\nReturns a mutable reference to the value corresponding to …\nInserts a value at key if it is None, then returns a …\nInserts a value computed from f at key if it is None, then …\nInserts a key-value pair into the map.\nAdds a value to the set.\nCalls U::from(self).\nCalls U::from(self).\nMakes a new empty TrieMap.\nMakes a new empty TrieMap.\nRemoves a key from the map, returning the stored key and …\nRemoves a value from the set. Returns whether the value was") \ No newline at end of file diff --git a/search.desc/two_sat/two_sat-desc-0-.js b/search.desc/two_sat/two_sat-desc-0-.js deleted file mode 100644 index c87bb937..00000000 --- a/search.desc/two_sat/two_sat-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("two_sat", 0, "2-SAT を解きます。\n2-SAT の本体です。\nReturns the argument unchanged.\n(x == a) -> (y == b) をかつでつなぎます。\nCalls U::from(self).\nn 個の不定元を持つ Always true を作ります。\n充足する割り当てがあれば返し、なければ …") \ No newline at end of file diff --git a/search.desc/uf_checklist/uf_checklist-desc-0-.js b/search.desc/uf_checklist/uf_checklist-desc-0-.js deleted file mode 100644 index 6a8bddc0..00000000 --- a/search.desc/uf_checklist/uf_checklist-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("uf_checklist", 0, "Union-find …\nUfChecklist::range_check が返すイテレータです。\n…\n指定した場所をチェックします。\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\n指定した場所がチェック済みならば true …\n…\n区間 [0, n[ …\n区間 range …") \ No newline at end of file diff --git a/search.desc/union_find/union_find-desc-0-.js b/search.desc/union_find/union_find-desc-0-.js deleted file mode 100644 index 97595f8e..00000000 --- a/search.desc/union_find/union_find-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("union_find", 0, "Union Find です。\n辺の本数\nサイクルがあるとき、true\n…\n頂点重み型\n頂点の個数\n連結成分に辺を1本追加したとき\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n…\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nUnionFind::new() で構築したときのデフォルト値") \ No newline at end of file diff --git a/search.desc/veb/veb-desc-0-.js b/search.desc/veb/veb-desc-0-.js deleted file mode 100644 index d65b3f8c..00000000 --- a/search.desc/veb/veb-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("veb", 0, "A predecessor data structure based on van Emde Boas trees.\nA van Emde Boas tree-based map. The map is implemented as …\nA van Emde Boas tree.\nReturns the elements in the map in ascending order. The …\nReturns the elements in the set in ascending order. The …\nReturns true if the set contains the given element. …\nReturns true if the map contains the given key.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the value corresponding to the key.\nReturns a mutable reference to the value corresponding to …\nInserts an element into the map. Returns the previous …\nInserts an element into the set. Returns true if the …\nCalls U::from(self).\nCalls U::from(self).\nReturns true if the map is empty.\nReturns true if the set is empty. Returns false if the set …\nReturns $|S|$.\nReturns the number of elements in the set.\nReturns the entry at $\\max \\left( S \\right)$.\nReturns the maximum element in the set. Returns None if …\nReturns the key $\\max \\left( S \\right)$.\nReturns the value at $\\max \\left( S \\right)$.\nReturns the entry at $\\min \\left( S \\right)$.\nReturns the minimum element in the set. Returns None if …\nReturns the key $\\min \\left( S \\right)$.\nReturns the value at $\\min \\left( S \\right)$.\nCreates a new van Emde Boas tree-based map with the given …\nCreates a new van Emde Boas tree with the given capacity.\nReturns the entry at $\\max \\left (i^▽ \\right)$.\nReturns $\\min{j \\in S \\mid j \\le i}$.\nReturns the entry at $\\max \\left (i^▲ \\right)$.\nReturns $\\max{j \\in S \\mid j \\leq i}$.\nReturns the key $\\max \\left (i^▲ \\right)$.\nReturns the value at $\\max \\left (i^▲ \\right)$.\nReturns the key $\\max \\left (i^▽ \\right)$.\nReturns the value at $\\max \\left (i^▽ \\right)$.\nReturns the value at $i$.\nRemoves an element from the set. Returns true if the …\nReturns the entry at $\\min \\left (i^△ \\right)$.\nReturns the minimum element greater than given element. …\nReturns the entry at $\\min \\left (i^▲ \\right)$.\nReturns the key $\\min \\left (i^▲ \\right)$.\nReturns the value at $\\min \\left (i^▲ \\right)$.\nReturns the key $\\min \\left (i^△ \\right)$.\nReturns the value at $\\min \\left (i^△ \\right)$.") \ No newline at end of file diff --git a/search.desc/vec_lines/vec_lines-desc-0-.js b/search.desc/vec_lines/vec_lines-desc-0-.js deleted file mode 100644 index 945e647d..00000000 --- a/search.desc/vec_lines/vec_lines-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("vec_lines", 0, "傾き単調な直線の列を Vec で管理します。\n…\n傾き単調減少を意味するマーカー\n傾き単調増加を意味するマーカー\n一次関数 $ax + b$ を、[a, b] …\n符号つき整数\n傾き単調な直線の列を Vec で管理します。\n傾きが単調減少な直線の列を管理します。\n傾きが単調増加な直線の列を管理します。\n特定の x 座標における値を計算します。\n黄金分割探索で最適値を計算します。\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nindex 番目の直線を返します。\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\n係数を返します。\n管理している直線が 0 本のとき true…\n…\n管理している直線の本数を返します。\n傾き単調な直線の列を Vec で管理します。\n後ろに直線を挿入します。") \ No newline at end of file diff --git a/search.desc/wavelet_matrix/wavelet_matrix-desc-0-.js b/search.desc/wavelet_matrix/wavelet_matrix-desc-0-.js deleted file mode 100644 index 0aa74682..00000000 --- a/search.desc/wavelet_matrix/wavelet_matrix-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("wavelet_matrix", 0, "ウェーブレット行列\nSpans のアイテム型です。詳しくは …\nイテレータです 詳しくは WaveletMatrix::spans …\n累積和のできる静的なビットベクター\nウェーブレット行列\ni 番目の要素を返します。\na[i]\nウェーブレット行列内の i 座標\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\n…\n特に高速化の意図がなければ、FromIterator …\nウェーブレット行列内の j 座標の範囲\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\n配列が空であれば true を返します。\na.is_empty()\n配列の長さを返します。\na.len()\nindex により指定された部分列のうち、 value …\nindex により指定された部分列のうち、 value …\nindex により指定された部分列のうち、 value …\nindex により指定された部分列のうち、 value …\nsum(a[..end])\nmin i s.t. target <= sum(a[..i])\n対応する部分を、(depth, index_range, value_range) …\n現在のノードの担当する値の範囲") \ No newline at end of file diff --git a/search.desc/z_algo/z_algo-desc-0-.js b/search.desc/z_algo/z_algo-desc-0-.js deleted file mode 100644 index 2f476b9d..00000000 --- a/search.desc/z_algo/z_algo-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("z_algo", 0, "Z-algorithm") \ No newline at end of file diff --git a/search.desc/zeta/zeta-desc-0-.js b/search.desc/zeta/zeta-desc-0-.js deleted file mode 100644 index 451717c5..00000000 --- a/search.desc/zeta/zeta-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("zeta", 0, "…\n+ でゼータ変換\n(+, -) でメビウス変換\n反転束において (+, -) でメビウス変換\nすべての添字集合に関して (二項演算 f, …\nbit-and でゼータ変換\nbit-or でゼータ変換\nbit-xor でゼータ変換\n…\nmax でゼータ変換\nmin でゼータ変換\n反転束において + でゼータ変換\n反転束において bit-and でメビウス変換\n反転束において bit-or でメビウス変換\n反転束において bit-xor でメビウス変換\n反転束において max でメビウス変換\n反転束において min でメビウス変換\n反転束において、f …\nf を加法とするゼータ変換をします。") \ No newline at end of file diff --git a/segbeats/all.html b/segbeats/all.html index f1b5bcac..b94f3d86 100644 --- a/segbeats/all.html +++ b/segbeats/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file diff --git a/segbeats/fn.open.html b/segbeats/fn.open.html new file mode 100644 index 00000000..6a9d6550 --- /dev/null +++ b/segbeats/fn.open.html @@ -0,0 +1,35 @@ +open in segbeats - Rust
    + + + + + +

    Function segbeats::open

    source ·
    pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize>
    \ No newline at end of file diff --git a/segbeats/index.html b/segbeats/index.html index 510e16c7..632a8dad 100644 --- a/segbeats/index.html +++ b/segbeats/index.html @@ -1,4 +1,4 @@ -segbeats - Rustsegbeats - Rust
    -

    Crate segbeats

    source ·

    Structs§

    Traits§

    \ No newline at end of file +
    \ No newline at end of file diff --git a/segbeats/sidebar-items.js b/segbeats/sidebar-items.js index a598f52c..31641ad3 100644 --- a/segbeats/sidebar-items.js +++ b/segbeats/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":["Segbeats"],"trait":["Elm"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["open"],"struct":["Segbeats"],"trait":["Elm"]}; \ No newline at end of file diff --git a/segbeats/struct.Segbeats.html b/segbeats/struct.Segbeats.html index bbe8c9f9..6be9d918 100644 --- a/segbeats/struct.Segbeats.html +++ b/segbeats/struct.Segbeats.html @@ -1,4 +1,4 @@ -Segbeats in segbeats - RustSegbeats in segbeats - Rust
    -

    Struct segbeats::Segbeats

    source ·
    pub struct Segbeats<T> { /* private fields */ }

    Implementations§

    source§

    impl<T: Elm> Segbeats<T>

    source

    pub fn new(src: &[T]) -> Self

    source

    pub fn change_min(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn change_max(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn query_min(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_max(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_sum(&self, range: impl RangeBounds<usize>) -> T

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Segbeats<T>

    source§

    fn clone(&self) -> Segbeats<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Segbeats<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq> PartialEq for Segbeats<T>

    source§

    fn eq(&self, other: &Segbeats<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for Segbeats<T>

    source§

    impl<T> StructuralPartialEq for Segbeats<T>

    Auto Trait Implementations§

    §

    impl<T> !Freeze for Segbeats<T>

    §

    impl<T> !RefUnwindSafe for Segbeats<T>

    §

    impl<T> Send for Segbeats<T>
    where - T: Send,

    §

    impl<T> !Sync for Segbeats<T>

    §

    impl<T> Unpin for Segbeats<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Segbeats<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct segbeats::Segbeats

    source ·
    pub struct Segbeats<T> { /* private fields */ }

    Implementations§

    source§

    impl<T: Elm> Segbeats<T>

    source

    pub fn new(src: &[T]) -> Self

    source

    pub fn change_min(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn change_max(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn query_min(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_max(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_sum(&self, range: impl RangeBounds<usize>) -> T

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Segbeats<T>

    source§

    fn clone(&self) -> Segbeats<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Segbeats<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq> PartialEq<Segbeats<T>> for Segbeats<T>

    source§

    fn eq(&self, other: &Segbeats<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for Segbeats<T>

    source§

    impl<T> StructuralEq for Segbeats<T>

    source§

    impl<T> StructuralPartialEq for Segbeats<T>

    Auto Trait Implementations§

    §

    impl<T> !RefUnwindSafe for Segbeats<T>

    §

    impl<T> Send for Segbeats<T>where + T: Send,

    §

    impl<T> !Sync for Segbeats<T>

    §

    impl<T> Unpin for Segbeats<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Segbeats<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segbeats/trait.Elm.html b/segbeats/trait.Elm.html index dfc0f978..334a2ec1 100644 --- a/segbeats/trait.Elm.html +++ b/segbeats/trait.Elm.html @@ -1,4 +1,4 @@ -Elm in segbeats - RustElm in segbeats - Rust
    -

    Trait segbeats::Elm

    source ·
    pub trait Elm:
    -    Sized
    -    + Debug
    -    + Copy
    -    + Ord
    -    + Add<Output = Self>
    -    + AddAssign
    -    + Sub<Output = Self>
    -    + SubAssign {
    +

    Trait segbeats::Elm

    source ·
    pub trait Elm: Sized + Debug + Copy + Ord + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign {
         // Required methods
         fn max_value() -> Self;
         fn min_value() -> Self;
         fn zero() -> Self;
    -    fn mul_u32(&self, x: u32) -> Self;
    -}

    Required Methods§

    source

    fn max_value() -> Self

    source

    fn min_value() -> Self

    source

    fn zero() -> Self

    source

    fn mul_u32(&self, x: u32) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Elm for i8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for isize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for usize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    Implementors§

    \ No newline at end of file + fn mul_u32(&self, x: u32) -> Self; +}

    Required Methods§

    source

    fn max_value() -> Self

    source

    fn min_value() -> Self

    source

    fn zero() -> Self

    source

    fn mul_u32(&self, x: u32) -> Self

    Implementations on Foreign Types§

    source§

    impl Elm for i128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for usize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for isize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    Implementors§

    \ No newline at end of file diff --git a/segbeats_task3/all.html b/segbeats_task3/all.html index 8b5e945a..5550b313 100644 --- a/segbeats_task3/all.html +++ b/segbeats_task3/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file diff --git a/segbeats_task3/fn.open.html b/segbeats_task3/fn.open.html new file mode 100644 index 00000000..8e59fbcc --- /dev/null +++ b/segbeats_task3/fn.open.html @@ -0,0 +1,35 @@ +open in segbeats_task3 - Rust
    + + + + + +

    Function segbeats_task3::open

    source ·
    pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize>
    \ No newline at end of file diff --git a/segbeats_task3/index.html b/segbeats_task3/index.html index eb27a00f..7c30290f 100644 --- a/segbeats_task3/index.html +++ b/segbeats_task3/index.html @@ -1,4 +1,4 @@ -segbeats_task3 - Rustsegbeats_task3 - Rust
    -

    Crate segbeats_task3

    source ·

    Structs§

    Traits§

    \ No newline at end of file +
    \ No newline at end of file diff --git a/segbeats_task3/sidebar-items.js b/segbeats_task3/sidebar-items.js index a598f52c..31641ad3 100644 --- a/segbeats_task3/sidebar-items.js +++ b/segbeats_task3/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":["Segbeats"],"trait":["Elm"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["open"],"struct":["Segbeats"],"trait":["Elm"]}; \ No newline at end of file diff --git a/segbeats_task3/struct.Segbeats.html b/segbeats_task3/struct.Segbeats.html index d719f18f..051ba9dd 100644 --- a/segbeats_task3/struct.Segbeats.html +++ b/segbeats_task3/struct.Segbeats.html @@ -1,4 +1,4 @@ -Segbeats in segbeats_task3 - RustSegbeats in segbeats_task3 - Rust
    -

    Struct segbeats_task3::Segbeats

    source ·
    pub struct Segbeats<T> { /* private fields */ }

    Implementations§

    source§

    impl<T: Elm> Segbeats<T>

    source

    pub fn new(src: &[T]) -> Self

    source

    pub fn change_min(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn change_max(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn range_add(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn query_min(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_max(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_sum(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn count_changes(&self, range: impl RangeBounds<usize>) -> u64

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Segbeats<T>

    source§

    fn clone(&self) -> Segbeats<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Elm> Debug for Segbeats<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq> PartialEq for Segbeats<T>

    source§

    fn eq(&self, other: &Segbeats<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for Segbeats<T>

    source§

    impl<T> StructuralPartialEq for Segbeats<T>

    Auto Trait Implementations§

    §

    impl<T> !Freeze for Segbeats<T>

    §

    impl<T> !RefUnwindSafe for Segbeats<T>

    §

    impl<T> Send for Segbeats<T>
    where - T: Send,

    §

    impl<T> !Sync for Segbeats<T>

    §

    impl<T> Unpin for Segbeats<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Segbeats<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub struct Segbeats<T> { /* private fields */ }

    Implementations§

    source§

    impl<T: Elm> Segbeats<T>

    source

    pub fn new(src: &[T]) -> Self

    source

    pub fn change_min(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn change_max(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn range_add(&mut self, range: impl Clone + RangeBounds<usize>, x: T)

    source

    pub fn query_min(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_max(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn query_sum(&self, range: impl RangeBounds<usize>) -> T

    source

    pub fn count_changes(&self, range: impl RangeBounds<usize>) -> u64

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Segbeats<T>

    source§

    fn clone(&self) -> Segbeats<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Elm> Debug for Segbeats<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: PartialEq> PartialEq<Segbeats<T>> for Segbeats<T>

    source§

    fn eq(&self, other: &Segbeats<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq> Eq for Segbeats<T>

    source§

    impl<T> StructuralEq for Segbeats<T>

    source§

    impl<T> StructuralPartialEq for Segbeats<T>

    Auto Trait Implementations§

    §

    impl<T> !RefUnwindSafe for Segbeats<T>

    §

    impl<T> Send for Segbeats<T>where + T: Send,

    §

    impl<T> !Sync for Segbeats<T>

    §

    impl<T> Unpin for Segbeats<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Segbeats<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segbeats_task3/trait.Elm.html b/segbeats_task3/trait.Elm.html index 375cde1f..8bbcfb5a 100644 --- a/segbeats_task3/trait.Elm.html +++ b/segbeats_task3/trait.Elm.html @@ -1,4 +1,4 @@ -Elm in segbeats_task3 - RustElm in segbeats_task3 - Rust
    -

    Trait segbeats_task3::Elm

    source ·
    pub trait Elm:
    -    Sized
    -    + Debug
    -    + Copy
    -    + Ord
    -    + Add<Output = Self>
    -    + AddAssign
    -    + Sub<Output = Self>
    -    + SubAssign {
    +

    Trait segbeats_task3::Elm

    source ·
    pub trait Elm: Sized + Debug + Copy + Ord + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign {
         // Required methods
         fn max_value() -> Self;
         fn min_value() -> Self;
         fn zero() -> Self;
    -    fn mul_u32(&self, x: u32) -> Self;
    -}

    Required Methods§

    source

    fn max_value() -> Self

    source

    fn min_value() -> Self

    source

    fn zero() -> Self

    source

    fn mul_u32(&self, x: u32) -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Elm for i8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for isize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for usize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    Implementors§

    \ No newline at end of file + fn mul_u32(&self, x: u32) -> Self; +}

    Required Methods§

    source

    fn max_value() -> Self

    source

    fn min_value() -> Self

    source

    fn zero() -> Self

    source

    fn mul_u32(&self, x: u32) -> Self

    Implementations on Foreign Types§

    source§

    impl Elm for u8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for isize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i8

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for usize

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i32

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for u64

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i128

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    source§

    impl Elm for i16

    source§

    fn min_value() -> Self

    source§

    fn max_value() -> Self

    source§

    fn zero() -> Self

    source§

    fn mul_u32(&self, x: u32) -> Self

    Implementors§

    \ No newline at end of file diff --git a/segtree/all.html b/segtree/all.html index 5f7da031..e94ae68d 100644 --- a/segtree/all.html +++ b/segtree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/segtree/index.html b/segtree/index.html index 0575c451..5e3a5af7 100644 --- a/segtree/index.html +++ b/segtree/index.html @@ -1,4 +1,4 @@ -segtree - Rustsegtree - Rust
    -

    Crate segtree

    source ·
    Expand description

    Segment tree and its variants.

    -

    §Op trait

    +

    Crate segtree

    source ·
    Expand description

    Segment tree and its variants.

    +

    Op trait

    The multiplication must be associative.

    Furthermore, when this is used for Sparse2dSegtree or Dense2dSegtree, the multiplication must be commutative.

    -

    §Modifier APIs

    +

    Modifier APIs

    While Segtree, SegtreeWithCompression, and Dense2dSegtree have entry API, Sparse2dSegtree does not have it. Instead, it has apply API. You can apply a function $f$ that satisfies $f(x \cdot y) = x \cdot f(y)$ to a single element..

    -

    Structs§

    Traits§

    • A trait for segment tree operations.
    \ No newline at end of file +

    Structs

    Traits

    • A trait for segment tree operations.
    \ No newline at end of file diff --git a/segtree/struct.Dense2dEntry.html b/segtree/struct.Dense2dEntry.html index 072d3ad8..ccc41285 100644 --- a/segtree/struct.Dense2dEntry.html +++ b/segtree/struct.Dense2dEntry.html @@ -1,4 +1,4 @@ -Dense2dEntry in segtree - RustDense2dEntry in segtree - Rust
    -

    Struct segtree::Dense2dEntry

    source ·
    pub struct Dense2dEntry<'a, O: Op> { /* private fields */ }
    Expand description

    The result of Dense2dSegtree::entry.

    -

    Trait Implementations§

    source§

    impl<'a, O: Op> Deref for Dense2dEntry<'a, O>

    source§

    type Target = <O as Op>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl<'a, O: Op> Drop for Dense2dEntry<'a, O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> Freeze for Dense2dEntry<'a, O>

    §

    impl<'a, O> RefUnwindSafe for Dense2dEntry<'a, O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<'a, O> Send for Dense2dEntry<'a, O>
    where - <O as Op>::Value: Send,

    §

    impl<'a, O> Sync for Dense2dEntry<'a, O>
    where - <O as Op>::Value: Sync,

    §

    impl<'a, O> Unpin for Dense2dEntry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Dense2dEntry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct segtree::Dense2dEntry

    source ·
    pub struct Dense2dEntry<'a, O: Op> { /* private fields */ }
    Expand description

    The result of Dense2dSegtree::entry.

    +

    Trait Implementations§

    source§

    impl<'a, O: Op> Deref for Dense2dEntry<'a, O>

    §

    type Target = <O as Op>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl<'a, O: Op> Drop for Dense2dEntry<'a, O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> RefUnwindSafe for Dense2dEntry<'a, O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<'a, O> Send for Dense2dEntry<'a, O>where + <O as Op>::Value: Send,

    §

    impl<'a, O> Sync for Dense2dEntry<'a, O>where + <O as Op>::Value: Sync,

    §

    impl<'a, O> Unpin for Dense2dEntry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Dense2dEntry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/struct.Dense2dSegtree.html b/segtree/struct.Dense2dSegtree.html index bbed2601..aa68e6f9 100644 --- a/segtree/struct.Dense2dSegtree.html +++ b/segtree/struct.Dense2dSegtree.html @@ -1,4 +1,4 @@ -Dense2dSegtree in segtree - RustDense2dSegtree in segtree - Rust
    -

    Struct segtree::Dense2dSegtree

    source ·
    pub struct Dense2dSegtree<O: Op> { /* private fields */ }
    Expand description

    A dense 2D segment tree.

    -

    Implementations§

    source§

    impl<O: Op> Dense2dSegtree<O>

    source

    pub fn new(values: &[Vec<O::Value>]) -> Self
    where - O::Value: Clone,

    Constructs with the specified values.

    -
    source

    pub fn fold( +

    Struct segtree::Dense2dSegtree

    source ·
    pub struct Dense2dSegtree<O: Op> { /* private fields */ }
    Expand description

    A dense 2D segment tree.

    +

    Implementations§

    source§

    impl<O: Op> Dense2dSegtree<O>

    source

    pub fn new(values: &[Vec<O::Value>]) -> Selfwhere + O::Value: Clone,

    Constructs with the specified values.

    +
    source

    pub fn fold( &self, - i: impl RangeBounds<usize>, - j: impl RangeBounds<usize>, + i: impl RangeBounds<usize>, + j: impl RangeBounds<usize> ) -> O::Value

    Fold $\left \lbrace x_{i, j} \mid i \in \text{{range}}_i, j \in \text{{range}}_j \right \rbrace$.

    -
    source

    pub fn entry(&mut self, i: usize, j: usize) -> Dense2dEntry<'_, O>

    Returns the entry of $x_{i, j}$.

    -
    source

    pub fn iter(&self) -> impl Iterator<Item = &[O::Value]>

    Returns an iterator that returns the rows $(x_{i, 0}, x_{i, 1}, \ldots, x_{i, w-1})$.

    -
    source

    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>
    where - O::Value: Clone,

    Collect to a $2$-dimensional vector.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for Dense2dSegtree<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Index<usize> for Dense2dSegtree<O>

    source§

    type Output = [<O as Op>::Value]

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for Dense2dSegtree<O>

    §

    impl<O> RefUnwindSafe for Dense2dSegtree<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for Dense2dSegtree<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for Dense2dSegtree<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for Dense2dSegtree<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for Dense2dSegtree<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn entry(&mut self, i: usize, j: usize) -> Dense2dEntry<'_, O>

    Returns the entry of $x_{i, j}$.

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = &[O::Value]>

    Returns an iterator that returns the rows $(x_{i, 0}, x_{i, 1}, \ldots, x_{i, w-1})$.

    +
    source

    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>where + O::Value: Clone,

    Collect to a $2$-dimensional vector.

    +

    Trait Implementations§

    source§

    impl<O: Op> Debug for Dense2dSegtree<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Index<usize> for Dense2dSegtree<O>

    §

    type Output = [<O as Op>::Value]

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for Dense2dSegtree<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for Dense2dSegtree<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for Dense2dSegtree<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for Dense2dSegtree<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for Dense2dSegtree<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/struct.Entry.html b/segtree/struct.Entry.html index 7529476b..62d9b9e0 100644 --- a/segtree/struct.Entry.html +++ b/segtree/struct.Entry.html @@ -1,4 +1,4 @@ -Entry in segtree - RustEntry in segtree - Rust
    -

    Struct segtree::Entry

    source ·
    pub struct Entry<'a, O: Op> { /* private fields */ }
    Expand description

    The result of Segtree::entry.

    -

    Trait Implementations§

    source§

    impl<'a, O: Op> Debug for Entry<'a, O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> Deref for Entry<'a, O>

    source§

    type Target = <O as Op>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'a, O: Op> DerefMut for Entry<'a, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl<'a, O: Op> Drop for Entry<'a, O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> Freeze for Entry<'a, O>

    §

    impl<'a, O> RefUnwindSafe for Entry<'a, O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<'a, O> Send for Entry<'a, O>
    where - <O as Op>::Value: Send,

    §

    impl<'a, O> Sync for Entry<'a, O>
    where - <O as Op>::Value: Sync,

    §

    impl<'a, O> Unpin for Entry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Entry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct segtree::Entry

    source ·
    pub struct Entry<'a, O: Op> { /* private fields */ }
    Expand description

    The result of Segtree::entry.

    +

    Trait Implementations§

    source§

    impl<'a, O: Op> Debug for Entry<'a, O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> Deref for Entry<'a, O>

    §

    type Target = <O as Op>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'a, O: Op> DerefMut for Entry<'a, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl<'a, O: Op> Drop for Entry<'a, O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> RefUnwindSafe for Entry<'a, O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<'a, O> Send for Entry<'a, O>where + <O as Op>::Value: Send,

    §

    impl<'a, O> Sync for Entry<'a, O>where + <O as Op>::Value: Sync,

    §

    impl<'a, O> Unpin for Entry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Entry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/struct.Segtree.html b/segtree/struct.Segtree.html index 25cd82ae..9b246390 100644 --- a/segtree/struct.Segtree.html +++ b/segtree/struct.Segtree.html @@ -1,4 +1,4 @@ -Segtree in segtree - RustSegtree in segtree - Rust
    -

    Struct segtree::Segtree

    source ·
    pub struct Segtree<O: Op> { /* private fields */ }
    Expand description

    A segment tree. +

    Struct segtree::Segtree

    source ·
    pub struct Segtree<O: Op> { /* private fields */ }
    Expand description

    A segment tree. Use as_slice() to debug.

    -

    Implementations§

    source§

    impl<O: Op> Segtree<O>

    source

    pub fn from_len(len: usize) -> Self
    where - O::Value: Clone,

    Constructs a new segment tree with the specified length.

    -
    source

    pub fn new(elms: &[O::Value]) -> Self
    where - O::Value: Clone,

    Constructs with the specified values.

    -
    source

    pub fn fold<R: RangeBounds<usize>>(&self, range: R) -> O::Value

    Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$.

    -
    source

    pub fn max_right(&self, start: usize, f: impl FnMut(&O::Value) -> bool) -> usize

    Returns the maximum $r$ s.t. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, if $f$ is monotone.

    +

    Implementations§

    source§

    impl<O: Op> Segtree<O>

    source

    pub fn from_len(len: usize) -> Selfwhere + O::Value: Clone,

    Constructs a new segment tree with the specified length.

    +
    source

    pub fn new(elms: &[O::Value]) -> Selfwhere + O::Value: Clone,

    Constructs with the specified values.

    +
    source

    pub fn fold<R: RangeBounds<usize>>(&self, range: R) -> O::Value

    Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$.

    +
    source

    pub fn max_right(&self, start: usize, f: impl FnMut(&O::Value) -> bool) -> usize

    Returns the maximum $r$ s.t. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, if $f$ is monotone.

    More precisely, $r$ satisfies:

    1. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, or $l = r$
    2. $f(x _ l \cdot \dots \cdot x _ { r } )$ is false, or $r = n$
    -
    source

    pub fn min_left(&self, end: usize, f: impl FnMut(&O::Value) -> bool) -> usize

    Returns the minimum $l$ s.t. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, if $f$ is monotone.

    +
    source

    pub fn min_left(&self, end: usize, f: impl FnMut(&O::Value) -> bool) -> usize

    Returns the minimum $l$ s.t. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, if $f$ is monotone.

    More precisely, $r$ satisfies:

    1. $f(x _ l \cdot \dots \cdot x _ { r - 1 })$ is true, or $l = r$
    2. $f(x _ { l - 1 } \cdot \dots \cdot x _ { r - 1 } )$ is false, or $l = 0$
    -
    source

    pub fn entry(&mut self, index: usize) -> Entry<'_, O>

    Returns the entry of $x_i$.

    -
    source

    pub fn iter(&self) -> Iter<'_, O::Value>

    Returns an iterator of $x_0, x_1, \ldots, x_{n-1}$.

    -
    source

    pub fn as_slice(&self) -> &[O::Value]

    Returns a slice of $x_0, x_1, \ldots, x_{n-1}$.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for Segtree<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for Segtree<O>
    where - O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = O::Value>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for Segtree<O>

    source§

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a Segtree<O>

    source§

    type IntoIter = Iter<'a, <O as Op>::Value>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for Segtree<O>

    §

    impl<O> RefUnwindSafe for Segtree<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for Segtree<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for Segtree<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for Segtree<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for Segtree<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn entry(&mut self, index: usize) -> Entry<'_, O>

    Returns the entry of $x_i$.

    +
    source

    pub fn iter(&self) -> Iter<'_, O::Value>

    Returns an iterator of $x_0, x_1, \ldots, x_{n-1}$.

    +
    source

    pub fn as_slice(&self) -> &[O::Value]

    Returns a slice of $x_0, x_1, \ldots, x_{n-1}$.

    +

    Trait Implementations§

    source§

    impl<O: Op> Debug for Segtree<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for Segtree<O>where + O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = O::Value>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for Segtree<O>

    §

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for Segtree<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for Segtree<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for Segtree<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for Segtree<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for Segtree<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/struct.SegtreeWithCompression.html b/segtree/struct.SegtreeWithCompression.html index 92fb7d22..3b74be1c 100644 --- a/segtree/struct.SegtreeWithCompression.html +++ b/segtree/struct.SegtreeWithCompression.html @@ -1,4 +1,4 @@ -SegtreeWithCompression in segtree - RustSegtreeWithCompression in segtree - Rust
    -

    Struct segtree::SegtreeWithCompression

    source ·
    pub struct SegtreeWithCompression<K, O: Op> { /* private fields */ }
    Expand description

    A sparse (compressed) segment tree. +

    pub struct SegtreeWithCompression<K, O: Op> { /* private fields */ }
    Expand description

    A sparse (compressed) segment tree. Use collect_map() to debug.

    -

    Implementations§

    source§

    impl<K: Ord, O: Op> SegtreeWithCompression<K, O>

    source

    pub fn new(kv: &[(K, O::Value)]) -> Self
    where - K: Clone, - O::Value: Clone,

    Constructs with the specified key-value pairs.

    -
    source

    pub fn fold<R: RangeBounds<K>>(&self, range: R) -> O::Value

    Folds $\left \lbrace x_k \mid k \in \text{{range}} \right \rbrace$.

    -
    source

    pub fn entry(&mut self, key: &K) -> Entry<'_, O>

    Returns the entry of $x_k$. +

    Implementations§

    source§

    impl<K: Ord, O: Op> SegtreeWithCompression<K, O>

    source

    pub fn new(kv: &[(K, O::Value)]) -> Selfwhere + K: Clone, + O::Value: Clone,

    Constructs with the specified key-value pairs.

    +
    source

    pub fn fold<R: RangeBounds<K>>(&self, range: R) -> O::Value

    Folds $\left \lbrace x_k \mid k \in \text{{range}} \right \rbrace$.

    +
    source

    pub fn entry(&mut self, key: &K) -> Entry<'_, O>

    Returns the entry of $x_k$. If $k$ is not found, it panics.

    -
    source

    pub fn keys(&self) -> &[K]

    Returns the keys.

    -
    source

    pub fn iter(&self) -> impl Iterator<Item = (&K, &O::Value)>

    Returns an iterator of $(k, x_k)$.

    -
    source

    pub fn collect_map(&self) -> BTreeMap<K, O::Value>
    where - K: Clone, - O::Value: Clone,

    Collects the key-value pairs into a BTreeMap.

    -

    Trait Implementations§

    source§

    impl<K, O: Op> Debug for SegtreeWithCompression<K, O>
    where - K: Debug, - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K, O: Op> FromIterator<(K, <O as Op>::Value)> for SegtreeWithCompression<K, O>
    where - K: Clone + Ord, - O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = (K, O::Value)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<K: Ord, O: Op> Index<K> for SegtreeWithCompression<K, O>

    source§

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, key: K) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<K, O> Freeze for SegtreeWithCompression<K, O>

    §

    impl<K, O> RefUnwindSafe for SegtreeWithCompression<K, O>
    where - K: RefUnwindSafe, - <O as Op>::Value: RefUnwindSafe,

    §

    impl<K, O> Send for SegtreeWithCompression<K, O>
    where - K: Send, - <O as Op>::Value: Send,

    §

    impl<K, O> Sync for SegtreeWithCompression<K, O>
    where - K: Sync, - <O as Op>::Value: Sync,

    §

    impl<K, O> Unpin for SegtreeWithCompression<K, O>
    where - K: Unpin, - <O as Op>::Value: Unpin,

    §

    impl<K, O> UnwindSafe for SegtreeWithCompression<K, O>
    where - K: UnwindSafe, - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn keys(&self) -> &[K]

    Returns the keys.

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = (&K, &O::Value)>

    Returns an iterator of $(k, x_k)$.

    +
    source

    pub fn collect_map(&self) -> BTreeMap<K, O::Value>where + K: Clone, + O::Value: Clone,

    Collects the key-value pairs into a BTreeMap.

    +

    Trait Implementations§

    source§

    impl<K, O: Op> Debug for SegtreeWithCompression<K, O>where + K: Debug, + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K, O: Op> FromIterator<(K, <O as Op>::Value)> for SegtreeWithCompression<K, O>where + K: Clone + Ord, + O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = (K, O::Value)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<K: Ord, O: Op> Index<K> for SegtreeWithCompression<K, O>

    §

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, key: K) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<K, O> RefUnwindSafe for SegtreeWithCompression<K, O>where + K: RefUnwindSafe, + <O as Op>::Value: RefUnwindSafe,

    §

    impl<K, O> Send for SegtreeWithCompression<K, O>where + K: Send, + <O as Op>::Value: Send,

    §

    impl<K, O> Sync for SegtreeWithCompression<K, O>where + K: Sync, + <O as Op>::Value: Sync,

    §

    impl<K, O> Unpin for SegtreeWithCompression<K, O>where + K: Unpin, + <O as Op>::Value: Unpin,

    §

    impl<K, O> UnwindSafe for SegtreeWithCompression<K, O>where + K: UnwindSafe, + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/struct.Sparse2dSegtree.html b/segtree/struct.Sparse2dSegtree.html index b4fd2ade..aabd983b 100644 --- a/segtree/struct.Sparse2dSegtree.html +++ b/segtree/struct.Sparse2dSegtree.html @@ -1,4 +1,4 @@ -Sparse2dSegtree in segtree - RustSparse2dSegtree in segtree - Rust
    -

    Struct segtree::Sparse2dSegtree

    source ·
    pub struct Sparse2dSegtree<K, L, O: Op> { /* private fields */ }
    Expand description

    A segment tree of segment trees (2D segment tree). +

    pub struct Sparse2dSegtree<K, L, O: Op> { /* private fields */ }
    Expand description

    A segment tree of segment trees (2D segment tree). The multiplication must be commutative.

    -

    Implementations§

    source§

    impl<K, L, O: Op> Sparse2dSegtree<K, L, O>
    where - K: Ord + Clone, - L: Ord + Clone, - O::Value: Clone,

    source

    pub fn new(points: &[(K, L, O::Value)]) -> Self

    Constructs with the specified key-value pairs.

    -
    source

    pub fn fold( +

    Implementations§

    source§

    impl<K, L, O: Op> Sparse2dSegtree<K, L, O>where + K: Ord + Clone, + L: Ord + Clone, + O::Value: Clone,

    source

    pub fn new(points: &[(K, L, O::Value)]) -> Self

    Constructs with the specified key-value pairs.

    +
    source

    pub fn fold( &self, - i: impl RangeBounds<K>, - j: impl RangeBounds<L> + Clone, + i: impl RangeBounds<K>, + j: impl RangeBounds<L> + Clone ) -> O::Value

    Folds $\left \lbrace x_{k, l} \mid (k, l) \in \text{{range}} \right \rbrace$.

    -
    source

    pub fn apply(&mut self, k: &K, l: &L, f: impl FnMut(&mut O::Value))

    Apply a function to $x_{k, l}$.

    +
    source

    pub fn apply(&mut self, k: &K, l: &L, f: impl FnMut(&mut O::Value))

    Apply a function to $x_{k, l}$.

    The function $f$ must satisfy $f(x \cdot y) = x \cdot f(y)$.

    -
    source

    pub fn iter(&self) -> impl Iterator<Item = (&K, &L, &O::Value)>

    Returns the iterator of $(k, l, x_{k, l})$.

    -
    source

    pub fn collect_map(&self) -> BTreeMap<(K, L), O::Value>
    where - K: Clone, - L: Clone, - O::Value: Clone,

    Collects the key-value pairs into a BTreeMap.

    -

    Trait Implementations§

    source§

    impl<K, L, O: Op> Debug for Sparse2dSegtree<K, L, O>
    where - K: Debug, - L: Debug, - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K, L, O: Op> FromIterator<(K, L, <O as Op>::Value)> for Sparse2dSegtree<K, L, O>
    where - K: Ord + Clone, - L: Ord + Clone, - O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = (K, L, O::Value)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<K: Ord, L: Ord, O: Op> Index<(K, L)> for Sparse2dSegtree<K, L, O>

    source§

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, (i, j): (K, L)) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<K: Ord, L: Ord, O: Op> Index<K> for Sparse2dSegtree<K, L, O>

    source§

    type Output = SegtreeWithCompression<L, O>

    The returned type after indexing.
    source§

    fn index(&self, i: K) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<K, L, O> Freeze for Sparse2dSegtree<K, L, O>

    §

    impl<K, L, O> RefUnwindSafe for Sparse2dSegtree<K, L, O>
    where - K: RefUnwindSafe, - L: RefUnwindSafe, - <O as Op>::Value: RefUnwindSafe,

    §

    impl<K, L, O> Send for Sparse2dSegtree<K, L, O>
    where - K: Send, - L: Send, - <O as Op>::Value: Send,

    §

    impl<K, L, O> Sync for Sparse2dSegtree<K, L, O>
    where - K: Sync, - L: Sync, - <O as Op>::Value: Sync,

    §

    impl<K, L, O> Unpin for Sparse2dSegtree<K, L, O>
    where - K: Unpin, - L: Unpin, - <O as Op>::Value: Unpin,

    §

    impl<K, L, O> UnwindSafe for Sparse2dSegtree<K, L, O>
    where - K: UnwindSafe, - L: UnwindSafe, - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = (&K, &L, &O::Value)>

    Returns the iterator of $(k, l, x_{k, l})$.

    +
    source

    pub fn collect_map(&self) -> BTreeMap<(K, L), O::Value>where + K: Clone, + L: Clone, + O::Value: Clone,

    Collects the key-value pairs into a BTreeMap.

    +

    Trait Implementations§

    source§

    impl<K, L, O: Op> Debug for Sparse2dSegtree<K, L, O>where + K: Debug, + L: Debug, + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K, L, O: Op> FromIterator<(K, L, <O as Op>::Value)> for Sparse2dSegtree<K, L, O>where + K: Ord + Clone, + L: Ord + Clone, + O::Value: Clone,

    source§

    fn from_iter<I: IntoIterator<Item = (K, L, O::Value)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<K: Ord, L: Ord, O: Op> Index<(K, L)> for Sparse2dSegtree<K, L, O>

    §

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, (i, j): (K, L)) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<K: Ord, L: Ord, O: Op> Index<K> for Sparse2dSegtree<K, L, O>

    §

    type Output = SegtreeWithCompression<L, O>

    The returned type after indexing.
    source§

    fn index(&self, i: K) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<K, L, O> RefUnwindSafe for Sparse2dSegtree<K, L, O>where + K: RefUnwindSafe, + L: RefUnwindSafe, + <O as Op>::Value: RefUnwindSafe,

    §

    impl<K, L, O> Send for Sparse2dSegtree<K, L, O>where + K: Send, + L: Send, + <O as Op>::Value: Send,

    §

    impl<K, L, O> Sync for Sparse2dSegtree<K, L, O>where + K: Sync, + L: Sync, + <O as Op>::Value: Sync,

    §

    impl<K, L, O> Unpin for Sparse2dSegtree<K, L, O>where + K: Unpin, + L: Unpin, + <O as Op>::Value: Unpin,

    §

    impl<K, L, O> UnwindSafe for Sparse2dSegtree<K, L, O>where + K: UnwindSafe, + L: UnwindSafe, + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/segtree/trait.Op.html b/segtree/trait.Op.html index 9a7e3021..ebd24286 100644 --- a/segtree/trait.Op.html +++ b/segtree/trait.Op.html @@ -1,4 +1,4 @@ -Op in segtree - RustOp in segtree - Rust
    -

    Trait segtree::Op

    source ·
    pub trait Op {
    +

    Trait segtree::Op

    source ·
    pub trait Op {
         type Value;
     
         // Required methods
         fn identity() -> Self::Value;
         fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
     }
    Expand description

    A trait for segment tree operations.

    -

    Required Associated Types§

    source

    type Value

    The value type.

    -

    Required Methods§

    source

    fn identity() -> Self::Value

    Returns the identity value $e$.

    -
    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Multiplies two values: $x \cdot y$.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value

    The value type.

    +

    Required Methods§

    source

    fn identity() -> Self::Value

    Returns the identity value $e$.

    +
    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Multiplies two values: $x \cdot y$.

    +

    Implementors§

    \ No newline at end of file diff --git a/settings.html b/settings.html index ecab63f6..38ec7867 100644 --- a/settings.html +++ b/settings.html @@ -1,4 +1,4 @@ -SettingsRustdoc settings
    -

    Rustdoc settings

    Back
    \ No newline at end of file +

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/skew_heap/all.html b/skew_heap/all.html index c4863ba8..18c5ca49 100644 --- a/skew_heap/all.html +++ b/skew_heap/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Functions

    \ No newline at end of file +

    List of all items

    Structs

    Functions

    \ No newline at end of file diff --git a/skew_heap/fn.meld.html b/skew_heap/fn.meld.html index d2c015c0..b20af715 100644 --- a/skew_heap/fn.meld.html +++ b/skew_heap/fn.meld.html @@ -1,4 +1,4 @@ -meld in skew_heap - Rustmeld in skew_heap - Rust
    -

    Function skew_heap::meld

    source ·
    pub fn meld<T: Ord>(a: SkewHeap<T>, b: SkewHeap<T>) -> SkewHeap<T>
    Expand description

    2 つの SkewHeap から、その合併を構築します。

    -

    §計算量

    +

    Function skew_heap::meld

    source ·
    pub fn meld<T: Ord>(a: SkewHeap<T>, b: SkewHeap<T>) -> SkewHeap<T>
    Expand description

    2 つの SkewHeap から、その合併を構築します。

    +

    計算量

    O ( lg ( self.len(), rhs.len() ) )

    ただし SkewHeap::len メソッドはありません。(あの!?)

    \ No newline at end of file diff --git a/skew_heap/index.html b/skew_heap/index.html index 7ab07f43..c3cc91de 100644 --- a/skew_heap/index.html +++ b/skew_heap/index.html @@ -1,4 +1,4 @@ -skew_heap - Rustskew_heap - Rust
    -

    Crate skew_heap

    source ·
    Expand description

    Meld のできるヒープ

    -

    §使い方

    §ヒープ

    +

    Crate skew_heap

    source ·
    Expand description

    Meld のできるヒープ

    +

    使い方

    ヒープ

    use skew_heap::meld;
     use skew_heap::SkewHeap;
     
    @@ -48,7 +48,7 @@ 

    §使い方

    < assert_eq!(heap.pop(), Some(3)); assert_eq!(heap.pop(), Some(2)); assert_eq!(heap.pop(), None);
    -

    §Meld

    +

    Meld

    use skew_heap::meld;
     use skew_heap::SkewHeap;
     
    @@ -63,10 +63,10 @@ 

    §Meld

    let mut heap_b = [1, 3, 5, 7].iter().copied().collect::<SkewHeap<_>>(); heap_a.meld(heap_b); assert_eq!(heap_a.into_sorted_vec(), vec![0, 1, 2, 3, 4, 5, 6, 7]);
    -

    §ありそうでないもの

    +

    ありそうでないもの

    • iter(), into_iter(), into_iter_sorted(), drain(), drain_sorted(): 親ポインタないので面倒です。
    • len(), is_empty(): 長さ保持するの面倒です。
    • peek_mut(): 再挿入面倒です。
    -

    Structs§

    Functions§

    • 2 つの SkewHeap から、その合併を構築します。
    \ No newline at end of file +

    Structs

    Functions

    • 2 つの SkewHeap から、その合併を構築します。
    \ No newline at end of file diff --git a/skew_heap/struct.SkewHeap.html b/skew_heap/struct.SkewHeap.html index 67fdfb91..3fd66a10 100644 --- a/skew_heap/struct.SkewHeap.html +++ b/skew_heap/struct.SkewHeap.html @@ -1,4 +1,4 @@ -SkewHeap in skew_heap - RustSkewHeap in skew_heap - Rust
    -

    Struct skew_heap::SkewHeap

    source ·
    pub struct SkewHeap<T>(/* private fields */);
    Expand description

    Meld のできるヒープ

    -

    Implementations§

    source§

    impl<T: Ord> SkewHeap<T>

    source

    pub fn new() -> Self

    新しく構築します。

    -
    source

    pub fn clear(&mut self)

    中身を殻にします。

    -
    source

    pub fn singleton(value: T) -> Self

    要素一つからなる SkewHeap を構築します。

    -
    source

    pub fn meld(&mut self, rhs: Self)

    2 つの SkewHeap から、その合併を構築します。

    -
    §計算量
    +

    Struct skew_heap::SkewHeap

    source ·
    pub struct SkewHeap<T>(_);
    Expand description

    Meld のできるヒープ

    +

    Implementations§

    source§

    impl<T: Ord> SkewHeap<T>

    source

    pub fn new() -> Self

    新しく構築します。

    +
    source

    pub fn clear(&mut self)

    中身を殻にします。

    +
    source

    pub fn singleton(value: T) -> Self

    要素一つからなる SkewHeap を構築します。

    +
    source

    pub fn meld(&mut self, rhs: Self)

    2 つの SkewHeap から、その合併を構築します。

    +
    計算量

    O ( lg ( self.len(), rhs.len() ) )

    ただし SkewHeap::len メソッドはありません。(あの!?)

    -
    source

    pub fn push(&mut self, value: T)

    要素を一つ、追加します。

    -
    source

    pub fn peek(&self) -> Option<&T>

    含んでいる最大の要素への参照を返します。

    -
    source

    pub fn pop(&mut self) -> Option<T>

    含んでいる最大の要素を取り除き、それを返します。

    -
    source

    pub fn into_sorted_vec(self) -> Vec<T>

    ソート済みの Vec に変換します。

    -

    Trait Implementations§

    source§

    impl<T: Clone> Clone for SkewHeap<T>

    source§

    fn clone(&self) -> SkewHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Ord> Debug for SkewHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Ord> Default for SkewHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A>

    source§

    fn extend<T: IntoIterator<Item = &'a A>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<A: Ord> Extend<A> for SkewHeap<A>

    source§

    fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<A: Ord> FromIterator<A> for SkewHeap<A>

    source§

    fn from_iter<T: IntoIterator<Item = A>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T: Hash> Hash for SkewHeap<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq for SkewHeap<T>

    source§

    fn eq(&self, other: &SkewHeap<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T> StructuralPartialEq for SkewHeap<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for SkewHeap<T>

    §

    impl<T> RefUnwindSafe for SkewHeap<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for SkewHeap<T>
    where - T: Send,

    §

    impl<T> Sync for SkewHeap<T>
    where - T: Sync,

    §

    impl<T> Unpin for SkewHeap<T>

    §

    impl<T> UnwindSafe for SkewHeap<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn push(&mut self, value: T)

    要素を一つ、追加します。

    +
    source

    pub fn peek(&self) -> Option<&T>

    含んでいる最大の要素への参照を返します。

    +
    source

    pub fn pop(&mut self) -> Option<T>

    含んでいる最大の要素を取り除き、それを返します。

    +
    source

    pub fn into_sorted_vec(self) -> Vec<T>

    ソート済みの Vec に変換します。

    +

    Trait Implementations§

    source§

    impl<T: Clone> Clone for SkewHeap<T>

    source§

    fn clone(&self) -> SkewHeap<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug + Ord> Debug for SkewHeap<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Ord> Default for SkewHeap<T>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A>

    source§

    fn extend<T: IntoIterator<Item = &'a A>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<A: Ord> Extend<A> for SkewHeap<A>

    source§

    fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<A: Ord> FromIterator<A> for SkewHeap<A>

    source§

    fn from_iter<T: IntoIterator<Item = A>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<T: Hash> Hash for SkewHeap<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq<SkewHeap<T>> for SkewHeap<T>

    source§

    fn eq(&self, other: &SkewHeap<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T> StructuralPartialEq for SkewHeap<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for SkewHeap<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for SkewHeap<T>where + T: Send,

    §

    impl<T> Sync for SkewHeap<T>where + T: Sync,

    §

    impl<T> Unpin for SkewHeap<T>

    §

    impl<T> UnwindSafe for SkewHeap<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/slicemore/all.html b/slicemore/all.html deleted file mode 100644 index 8e2e0b16..00000000 --- a/slicemore/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -
    \ No newline at end of file diff --git a/slicemore/fn.lower_bound.html b/slicemore/fn.lower_bound.html deleted file mode 100644 index f5160daf..00000000 --- a/slicemore/fn.lower_bound.html +++ /dev/null @@ -1,38 +0,0 @@ -lower_bound in slicemore - Rust - - - - - -

    Function slicemore::lower_bound

    source ·
    pub fn lower_bound<T: Ord>(slice: &[T], x: &T) -> usize
    Expand description

    Find $i$ s.t. $a _ { i - 1 } \lt b \le a _ i$.

    -

    §Examples

    -
    assert_eq!(lower_bound(&[10, 11, 12], &11), 1);
    -
    \ No newline at end of file diff --git a/slicemore/fn.lower_bound_by.html b/slicemore/fn.lower_bound_by.html deleted file mode 100644 index a6d963f2..00000000 --- a/slicemore/fn.lower_bound_by.html +++ /dev/null @@ -1,38 +0,0 @@ -lower_bound_by in slicemore - Rust - - - - - -

    Function slicemore::lower_bound_by

    source ·
    pub fn lower_bound_by<T, F: FnMut(&T) -> Ordering>(slice: &[T], f: F) -> usize
    Expand description

    Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{Less} \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Equal }, \mathtt { Greater } \right \rbrace$.

    -

    §Examples

    -
    assert_eq!(lower_bound_by(&[Less, Equal, Greater], |&x| x), 1);
    -
    \ No newline at end of file diff --git a/slicemore/fn.lower_bound_by_key.html b/slicemore/fn.lower_bound_by_key.html deleted file mode 100644 index 708b2d61..00000000 --- a/slicemore/fn.lower_bound_by_key.html +++ /dev/null @@ -1,42 +0,0 @@ -lower_bound_by_key in slicemore - Rust - - - - - -

    Function slicemore::lower_bound_by_key

    source ·
    pub fn lower_bound_by_key<T, B: Ord, F: FnMut(&T) -> B>(
    -    slice: &[T],
    -    b: &B,
    -    f: F,
    -) -> usize
    Expand description

    Find $i$ s.t. $f ( a _ { i - 1 } ) \lt b \le f ( a _ i )$.

    -

    §Examples

    -
    assert_eq!(lower_bound_by_key(&[9, 10, 11, 12], &5, |&x| x / 2), 1);
    -
    \ No newline at end of file diff --git a/slicemore/fn.partition_point.html b/slicemore/fn.partition_point.html deleted file mode 100644 index f87bb2ba..00000000 --- a/slicemore/fn.partition_point.html +++ /dev/null @@ -1,40 +0,0 @@ -partition_point in slicemore - Rust - - - - - -

    Function slicemore::partition_point

    source ·
    pub fn partition_point<T, F: FnMut(&T) -> bool>(slice: &[T], pred: F) -> usize
    Expand description

    Find $i$ s.t. $f ( a _ { i - 1 } ) \land \neg f ( a _ i )$.

    -

    Espacially, if $a$ is partitioned, it count the true’s from the head.

    -

    The same implementation as in the standard library of Rust 1.52.0.

    -

    §Examples

    -
    assert_eq!(partition_point(&[true, false], |&x| x), 1);
    -
    \ No newline at end of file diff --git a/slicemore/fn.upper_bound.html b/slicemore/fn.upper_bound.html deleted file mode 100644 index 2f91eae2..00000000 --- a/slicemore/fn.upper_bound.html +++ /dev/null @@ -1,38 +0,0 @@ -upper_bound in slicemore - Rust - - - - - -

    Function slicemore::upper_bound

    source ·
    pub fn upper_bound<T: Ord>(slice: &[T], x: &T) -> usize
    Expand description

    Find $i$ s.t. $a _ { i - 1 } \le b \lt a _ i$.

    -

    §Examples

    -
    assert_eq!(upper_bound(&[10, 11, 12], &11), 2);
    -
    \ No newline at end of file diff --git a/slicemore/fn.upper_bound_by.html b/slicemore/fn.upper_bound_by.html deleted file mode 100644 index 315948d0..00000000 --- a/slicemore/fn.upper_bound_by.html +++ /dev/null @@ -1,38 +0,0 @@ -upper_bound_by in slicemore - Rust - - - - - -

    Function slicemore::upper_bound_by

    source ·
    pub fn upper_bound_by<T, F: FnMut(&T) -> Ordering>(slice: &[T], f: F) -> usize
    Expand description

    Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{ Less }, \mathtt { Equal } \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Greater } \right \rbrace$.

    -

    §Examples

    -
    assert_eq!(upper_bound_by(&[Less, Equal, Greater], |&x| x), 2);
    -
    \ No newline at end of file diff --git a/slicemore/fn.upper_bound_by_key.html b/slicemore/fn.upper_bound_by_key.html deleted file mode 100644 index 31c65c1b..00000000 --- a/slicemore/fn.upper_bound_by_key.html +++ /dev/null @@ -1,42 +0,0 @@ -upper_bound_by_key in slicemore - Rust - - - - - -

    Function slicemore::upper_bound_by_key

    source ·
    pub fn upper_bound_by_key<T, B: Ord, F: FnMut(&T) -> B>(
    -    slice: &[T],
    -    b: &B,
    -    f: F,
    -) -> usize
    Expand description

    Find $i$ s.t. $f ( a _ { i - 1 } ) \le b \lt f ( a _ i )$.

    -

    §Examples

    -
    assert_eq!(upper_bound_by_key(&[9, 10, 11, 12], &5, |&x| x / 2), 3);
    -
    \ No newline at end of file diff --git a/slicemore/index.html b/slicemore/index.html deleted file mode 100644 index 8ba55448..00000000 --- a/slicemore/index.html +++ /dev/null @@ -1,36 +0,0 @@ -slicemore - Rust - - - - - -

    Crate slicemore

    source ·
    Expand description

    {lower,upper}_bound and partition_point

    -

    Traits§

    Functions§

    • Find $i$ s.t. $a _ { i - 1 } \lt b \le a _ i$.
    • Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{Less} \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Equal }, \mathtt { Greater } \right \rbrace$.
    • Find $i$ s.t. $f ( a _ { i - 1 } ) \lt b \le f ( a _ i )$.
    • Find $i$ s.t. $f ( a _ { i - 1 } ) \land \neg f ( a _ i )$.
    • Find $i$ s.t. $a _ { i - 1 } \le b \lt a _ i$.
    • Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{ Less }, \mathtt { Equal } \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Greater } \right \rbrace$.
    • Find $i$ s.t. $f ( a _ { i - 1 } ) \le b \lt f ( a _ i )$.
    \ No newline at end of file diff --git a/slicemore/sidebar-items.js b/slicemore/sidebar-items.js deleted file mode 100644 index 5e8e7b31..00000000 --- a/slicemore/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["lower_bound","lower_bound_by","lower_bound_by_key","partition_point","upper_bound","upper_bound_by","upper_bound_by_key"],"trait":["SliceMore"]}; \ No newline at end of file diff --git a/slicemore/trait.SliceMore.html b/slicemore/trait.SliceMore.html deleted file mode 100644 index b09db38f..00000000 --- a/slicemore/trait.SliceMore.html +++ /dev/null @@ -1,66 +0,0 @@ -SliceMore in slicemore - Rust - - - - - -

    Trait slicemore::SliceMore

    source ·
    pub trait SliceMore<T> {
    -    // Required methods
    -    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize;
    -    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize;
    -    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize;
    -    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(
    -        &self,
    -        b: &B,
    -        f: F,
    -    ) -> usize;
    -    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(
    -        &self,
    -        b: &B,
    -        f: F,
    -    ) -> usize;
    -    fn lower_bound(&self, x: &T) -> usize
    -       where T: Ord;
    -    fn upper_bound(&self, x: &T) -> usize
    -       where T: Ord;
    -}
    Expand description

    Method versions of functions.

    -

    Required Methods§

    source

    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize

    source

    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    source

    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    source

    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    source

    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    source

    fn lower_bound(&self, x: &T) -> usize
    where - T: Ord,

    source

    fn upper_bound(&self, x: &T) -> usize
    where - T: Ord,

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<T> SliceMore<T> for [T]

    source§

    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize

    Method version of partition_point().

    -
    source§

    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    Method version of lower_bound_by().

    -
    source§

    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize

    Method version of upper_bound_by().

    -
    source§

    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    Method version of lower_bound_by_key().

    -
    source§

    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize

    Method version of upper_bound_by_key().

    -
    source§

    fn lower_bound(&self, x: &T) -> usize
    where - T: Ord,

    Method version of lower_bound().

    -
    source§

    fn upper_bound(&self, x: &T) -> usize
    where - T: Ord,

    Method version of upper_bound().

    -

    Implementors§

    \ No newline at end of file diff --git a/snippetter/all.html b/snippetter/all.html index b8851da7..dc044876 100644 --- a/snippetter/all.html +++ b/snippetter/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/snippetter/fn.find_project_root_path.html b/snippetter/fn.find_project_root_path.html index e1b0f7b4..2dfdadb6 100644 --- a/snippetter/fn.find_project_root_path.html +++ b/snippetter/fn.find_project_root_path.html @@ -1,4 +1,4 @@ -find_project_root_path in snippetter - Rustfind_project_root_path in snippetter - Rust
    -

    Function snippetter::find_project_root_path

    source ·
    pub(crate) fn find_project_root_path() -> PathBuf
    \ No newline at end of file +
    pub(crate) fn find_project_root_path() -> PathBuf
    \ No newline at end of file diff --git a/snippetter/fn.main.html b/snippetter/fn.main.html index d7ed33d4..6ee695e5 100644 --- a/snippetter/fn.main.html +++ b/snippetter/fn.main.html @@ -1,4 +1,4 @@ -main in snippetter - Rustmain in snippetter - Rust
    -

    Function snippetter::main

    source ·
    pub(crate) fn main()
    \ No newline at end of file +

    Function snippetter::main

    source ·
    pub(crate) fn main()
    \ No newline at end of file diff --git a/snippetter/fn.parse_local_dependencies_from_cargo_toml.html b/snippetter/fn.parse_local_dependencies_from_cargo_toml.html index 034ad541..603a4291 100644 --- a/snippetter/fn.parse_local_dependencies_from_cargo_toml.html +++ b/snippetter/fn.parse_local_dependencies_from_cargo_toml.html @@ -1,4 +1,4 @@ -parse_local_dependencies_from_cargo_toml in snippetter - Rustparse_local_dependencies_from_cargo_toml in snippetter - Rust
    -
    pub(crate) fn parse_local_dependencies_from_cargo_toml(
    -    file_content: &str,
    -) -> Vec<String>
    \ No newline at end of file +
    pub(crate) fn parse_local_dependencies_from_cargo_toml(
    +    file_content: &str
    +) -> Vec<String>
    \ No newline at end of file diff --git a/snippetter/index.html b/snippetter/index.html index ca28fe25..3b65de4c 100644 --- a/snippetter/index.html +++ b/snippetter/index.html @@ -1,4 +1,4 @@ -snippetter - Rustsnippetter - Rust
    -

    Crate snippetter

    source ·

    Structs§

    Statics§

    Functions§

    \ No newline at end of file +
    \ No newline at end of file diff --git a/snippetter/static.CRATE_METADATAS.html b/snippetter/static.CRATE_METADATAS.html index 9ee0528c..338ab551 100644 --- a/snippetter/static.CRATE_METADATAS.html +++ b/snippetter/static.CRATE_METADATAS.html @@ -1,4 +1,4 @@ -CRATE_METADATAS in snippetter - RustCRATE_METADATAS in snippetter - Rust
    -

    Static snippetter::CRATE_METADATAS

    source ·
    pub(crate) static CRATE_METADATAS: OnceCell<HashMap<String, CrateMetadata>>
    \ No newline at end of file +
    pub(crate) static CRATE_METADATAS: OnceCell<HashMap<String, CrateMetadata>>
    \ No newline at end of file diff --git a/snippetter/static.PROJECT_ROOT.html b/snippetter/static.PROJECT_ROOT.html index ecfc50a5..134bca97 100644 --- a/snippetter/static.PROJECT_ROOT.html +++ b/snippetter/static.PROJECT_ROOT.html @@ -1,4 +1,4 @@ -PROJECT_ROOT in snippetter - RustPROJECT_ROOT in snippetter - Rust
    -

    Static snippetter::PROJECT_ROOT

    source ·
    pub(crate) static PROJECT_ROOT: OnceCell<PathBuf>
    \ No newline at end of file +
    pub(crate) static PROJECT_ROOT: OnceCell<PathBuf>
    \ No newline at end of file diff --git a/snippetter/struct.CrateMetadata.html b/snippetter/struct.CrateMetadata.html index 3c631453..eb626dc7 100644 --- a/snippetter/struct.CrateMetadata.html +++ b/snippetter/struct.CrateMetadata.html @@ -1,4 +1,4 @@ -CrateMetadata in snippetter - RustCrateMetadata in snippetter - Rust
    -

    Struct snippetter::CrateMetadata

    source ·
    pub(crate) struct CrateMetadata {
    -    pub(crate) dependencies: Vec<String>,
    -    pub(crate) tags: Vec<String>,
    -}

    Fields§

    §dependencies: Vec<String>§tags: Vec<String>

    Trait Implementations§

    source§

    impl Clone for CrateMetadata

    source§

    fn clone(&self) -> CrateMetadata

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CrateMetadata

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for CrateMetadata

    source§

    fn eq(&self, other: &CrateMetadata) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Serialize for CrateMetadata

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl StructuralPartialEq for CrateMetadata

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub(crate) struct CrateMetadata {
    +    pub(crate) dependencies: Vec<String>,
    +    pub(crate) tags: Vec<String>,
    +}

    Fields§

    §dependencies: Vec<String>§tags: Vec<String>

    Trait Implementations§

    source§

    impl Clone for CrateMetadata

    source§

    fn clone(&self) -> CrateMetadata

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CrateMetadata

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq<CrateMetadata> for CrateMetadata

    source§

    fn eq(&self, other: &CrateMetadata) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for CrateMetadata

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl StructuralPartialEq for CrateMetadata

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
    where - F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> +otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where + F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +otherwise. Read more
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/sort_tree/all.html b/sort_tree/all.html deleted file mode 100644 index 4b28d44e..00000000 --- a/sort_tree/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -
    \ No newline at end of file diff --git a/sort_tree/fn.remove_parent.html b/sort_tree/fn.remove_parent.html deleted file mode 100644 index b16b646f..00000000 --- a/sort_tree/fn.remove_parent.html +++ /dev/null @@ -1,36 +0,0 @@ -remove_parent in sort_tree - Rust - - - - - -

    Function sort_tree::remove_parent

    source ·
    pub fn remove_parent(g: &mut [Vec<usize>], parent: &[usize])
    Expand description

    親を消します

    -
    \ No newline at end of file diff --git a/sort_tree/fn.sort_tree.html b/sort_tree/fn.sort_tree.html deleted file mode 100644 index b8ea2da4..00000000 --- a/sort_tree/fn.sort_tree.html +++ /dev/null @@ -1,36 +0,0 @@ -sort_tree in sort_tree - Rust - - - - - -

    Function sort_tree::sort_tree

    source ·
    pub fn sort_tree(root: usize, g: &[Vec<usize>]) -> [Vec<usize>; 2]
    Expand description

    根付き木をトポロジカルソートします。

    -
    \ No newline at end of file diff --git a/sort_tree/fn.sort_tree_by.html b/sort_tree/fn.sort_tree_by.html deleted file mode 100644 index e8db4738..00000000 --- a/sort_tree/fn.sort_tree_by.html +++ /dev/null @@ -1,40 +0,0 @@ -sort_tree_by in sort_tree - Rust - - - - - -

    Function sort_tree::sort_tree_by

    source ·
    pub fn sort_tree_by<E>(
    -    root: usize,
    -    g: &[Vec<E>],
    -    to: impl Fn(&E) -> usize,
    -) -> [Vec<usize>; 2]
    Expand description

    根付き木をトポロジカルソートします。

    -
    \ No newline at end of file diff --git a/sort_tree/fn.sort_tree_remove_parent.html b/sort_tree/fn.sort_tree_remove_parent.html deleted file mode 100644 index 29378199..00000000 --- a/sort_tree/fn.sort_tree_remove_parent.html +++ /dev/null @@ -1,39 +0,0 @@ -sort_tree_remove_parent in sort_tree - Rust - - - - - -

    Function sort_tree::sort_tree_remove_parent

    source ·
    pub fn sort_tree_remove_parent(
    -    root: usize,
    -    g: &mut [Vec<usize>],
    -) -> [Vec<usize>; 2]
    Expand description

    根付き木をトポロジカルソートして、親を消します。

    -
    \ No newline at end of file diff --git a/sort_tree/index.html b/sort_tree/index.html deleted file mode 100644 index b9eda16d..00000000 --- a/sort_tree/index.html +++ /dev/null @@ -1,36 +0,0 @@ -sort_tree - Rust - - - - - -

    Crate sort_tree

    source ·
    Expand description

    根付き木をトポロジカルソートします。

    -

    Functions§

    \ No newline at end of file diff --git a/sort_tree/sidebar-items.js b/sort_tree/sidebar-items.js deleted file mode 100644 index f4da65b8..00000000 --- a/sort_tree/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"fn":["remove_parent","sort_tree","sort_tree_by","sort_tree_remove_parent"]}; \ No newline at end of file diff --git a/source-files.js b/source-files.js new file mode 100644 index 00000000..aac759f9 --- /dev/null +++ b/source-files.js @@ -0,0 +1,74 @@ +var sourcesIndex = JSON.parse('{\ +"accum":["",[],["lib.rs"]],\ +"avl_tree":["",[],["lib.rs"]],\ +"bfs":["",[],["lib.rs"]],\ +"bfs01":["",[],["lib.rs"]],\ +"binary":["",[],["lib.rs"]],\ +"bitvec":["",[],["lib.rs"]],\ +"bsgs":["",[],["lib.rs"]],\ +"cht":["",[],["lib.rs"]],\ +"cipolla":["",[],["lib.rs"]],\ +"convex_hull":["",[],["lib.rs"]],\ +"dfs":["",[],["lib.rs"]],\ +"dijkstra_radix_heap":["",[],["lib.rs"]],\ +"dinic":["",[],["lib.rs"]],\ +"dual_segtree":["",[],["lib.rs"]],\ +"elim":["",[],["lib.rs"]],\ +"erato":["",[],["converters.rs","int.rs","lib.rs","lpd_sieve.rs","sieve.rs","sieve_base.rs","sieve_kind.rs"]],\ +"euclid":["",[],["crt.rs","ext_gcd.rs","gcd.rs","lib.rs"]],\ +"fp":["",[],["ext_gcd.rs","factorial.rs","fourier.rs","lib.rs"]],\ +"fps":["",[],["lib.rs"]],\ +"gco":["",[],["lib.rs"]],\ +"gss":["",[],["lib.rs"]],\ +"heap_slope_trick":["",[],["lib.rs"]],\ +"heap_tricks":["",[],["lib.rs"]],\ +"hld":["",[],["lib.rs"]],\ +"hopkarp":["",[],["lib.rs"]],\ +"hungarian":["",[],["lib.rs"]],\ +"interval_heap":["",[],["lib.rs"]],\ +"io":["",[],["lib.rs"]],\ +"lagrange":["",[],["lib.rs"]],\ +"lazy_segbeats":["",[],["lib.rs"]],\ +"lazy_segtree":["",[],["lib.rs"]],\ +"lg":["",[],["lib.rs","map.rs","table.rs","vec2.rs","vecs.rs"]],\ +"lin_ineq":["",[],["lib.rs"]],\ +"link_cut_tree":["",[],["base.rs","lib.rs"]],\ +"low_link":["",[],["lib.rs"]],\ +"make_graph":["",[],["lib.rs"]],\ +"manacher":["",[],["lib.rs"]],\ +"mincost_flow":["",[],["lib.rs"]],\ +"monotone_minima":["",[],["lib.rs"]],\ +"naive_poly":["",[],["lib.rs"]],\ +"newton":["",[],["lib.rs"]],\ +"next_permutation":["",[],["lib.rs"]],\ +"numeric_search":["",[],["lib.rs"]],\ +"partially_persistent_union_find":["",[],["lib.rs"]],\ +"radix_heap":["",[],["lib.rs"]],\ +"randtools":["",[],["algo.rs","lib.rs"]],\ +"rational":["",[],["lib.rs"]],\ +"rb":["",[],["balance.rs","lib.rs","map.rs","seq.rs"]],\ +"rbtree":["",[],["lib.rs","nonempty.rs"]],\ +"riff":["",[],["binary_search.rs","bitmask_iterators.rs","change_min_max.rs","lib.rs","numeric_traits.rs","pop_if.rs"]],\ +"scc":["",[],["lib.rs"]],\ +"segbeats":["",[],["lib.rs"]],\ +"segbeats_task3":["",[],["lib.rs"]],\ +"segtree":["",[],["lib.rs"]],\ +"skew_heap":["",[],["lib.rs"]],\ +"snippetter":["",[],["main.rs"]],\ +"sparse_table":["",[],["lib.rs"]],\ +"splay_tree":["",[],["lib.rs","node.rs"]],\ +"suffix_array":["",[],["lib.rs"]],\ +"swag":["",[],["lib.rs"]],\ +"tree_fold":["",[],["lib.rs"]],\ +"trial":["",[],["divisors.rs","lib.rs","prime_factors.rs"]],\ +"trie":["",[],["lib.rs","trie_map.rs","trie_set.rs"]],\ +"two_sat":["",[],["lib.rs"]],\ +"uf_checklist":["",[],["lib.rs"]],\ +"union_find":["",[],["lib.rs"]],\ +"veb":["",[],["lib.rs"]],\ +"vec_lines":["",[],["lib.rs"]],\ +"wavelet_matrix":["",[],["lib.rs"]],\ +"z_algo":["",[],["lib.rs"]],\ +"zeta":["",[],["lib.rs"]]\ +}'); +createSourceSidebar(); diff --git a/sparse_table/all.html b/sparse_table/all.html index f74dd528..79af5e38 100644 --- a/sparse_table/all.html +++ b/sparse_table/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/sparse_table/index.html b/sparse_table/index.html index 88dd9fb5..1e7ba9ea 100644 --- a/sparse_table/index.html +++ b/sparse_table/index.html @@ -1,4 +1,4 @@ -sparse_table - Rustsparse_table - Rust
    -

    Crate sparse_table

    source ·
    Expand description

    §Sparse Table

    +

    Crate sparse_table

    source ·
    Expand description

    Sparse Table

    -

    §Op trait

    +

    Op trait

    Op::mul must be associative and idempotent.

    -

    Structs§

    Traits§

    • A trait for the operation used in sparse tables.
    \ No newline at end of file +

    Structs

    Traits

    • A trait for the operation used in sparse tables.
    \ No newline at end of file diff --git a/sparse_table/struct.SparseTable.html b/sparse_table/struct.SparseTable.html index cdac6910..8da5bea4 100644 --- a/sparse_table/struct.SparseTable.html +++ b/sparse_table/struct.SparseTable.html @@ -1,4 +1,4 @@ -SparseTable in sparse_table - RustSparseTable in sparse_table - Rust
    -

    Struct sparse_table::SparseTable

    source ·
    pub struct SparseTable<O: Op> { /* private fields */ }
    Expand description

    A sparse table for 1-dimensional range queries.

    -

    Implementations§

    source§

    impl<O: Op> SparseTable<O>

    source

    pub fn new(values: Vec<O::Value>) -> Self

    Constructs a sparse table from a vector of values.

    -
    source

    pub fn clone_from_slice(values: &[O::Value]) -> Self
    where - O::Value: Clone,

    Constructs a sparse table from a slice of values.

    -
    source

    pub fn get(&self, index: usize) -> &O::Value

    Returns the value at the given index.

    -
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Value>

    Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$, or None if $l = r$.

    -
    source

    pub fn iter(&self) -> impl Iterator<Item = &O::Value>

    Returns an iterator over the values.

    -
    source

    pub fn as_slice(&self) -> &[O::Value]

    Returns a slice of the values.

    -
    source

    pub fn collect_vec(&self) -> Vec<O::Value>
    where - O::Value: Clone,

    Collects the values into a vector.

    -
    source

    pub fn inner(&self) -> &Vec<Vec<O::Value>>

    Returns the inner table.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for SparseTable<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> From<&'a [<O as Op>::Value]> for SparseTable<O>
    where - O::Value: Clone,

    source§

    fn from(values: &'a [O::Value]) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> From<Vec<<O as Op>::Value>> for SparseTable<O>

    source§

    fn from(values: Vec<O::Value>) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for SparseTable<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for SparseTable<O>

    source§

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for SparseTable<O>

    §

    impl<O> RefUnwindSafe for SparseTable<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SparseTable<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for SparseTable<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SparseTable<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SparseTable<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub struct SparseTable<O: Op> { /* private fields */ }
    Expand description

    A sparse table for 1-dimensional range queries.

    +

    Implementations§

    source§

    impl<O: Op> SparseTable<O>

    source

    pub fn new(values: Vec<O::Value>) -> Self

    Constructs a sparse table from a vector of values.

    +
    source

    pub fn clone_from_slice(values: &[O::Value]) -> Selfwhere + O::Value: Clone,

    Constructs a sparse table from a slice of values.

    +
    source

    pub fn get(&self, index: usize) -> &O::Value

    Returns the value at the given index.

    +
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Value>

    Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$, or None if $l = r$.

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = &O::Value>

    Returns an iterator over the values.

    +
    source

    pub fn as_slice(&self) -> &[O::Value]

    Returns a slice of the values.

    +
    source

    pub fn collect_vec(&self) -> Vec<O::Value>where + O::Value: Clone,

    Collects the values into a vector.

    +
    source

    pub fn inner(&self) -> &Vec<Vec<O::Value>>

    Returns the inner table.

    +

    Trait Implementations§

    source§

    impl<O: Op> Debug for SparseTable<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> From<&'a [<O as Op>::Value]> for SparseTable<O>where + O::Value: Clone,

    source§

    fn from(values: &'a [O::Value]) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> From<Vec<<O as Op>::Value, Global>> for SparseTable<O>

    source§

    fn from(values: Vec<O::Value>) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for SparseTable<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for SparseTable<O>

    §

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for SparseTable<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SparseTable<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for SparseTable<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SparseTable<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SparseTable<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/sparse_table/struct.SparseTable2d.html b/sparse_table/struct.SparseTable2d.html index 17d0fd27..248a034c 100644 --- a/sparse_table/struct.SparseTable2d.html +++ b/sparse_table/struct.SparseTable2d.html @@ -1,4 +1,4 @@ -SparseTable2d in sparse_table - RustSparseTable2d in sparse_table - Rust
    -

    Struct sparse_table::SparseTable2d

    source ·
    pub struct SparseTable2d<O: Op> { /* private fields */ }
    Expand description

    A sparse table for 2-dimensional range queries.

    +
    pub struct SparseTable2d<O: Op> { /* private fields */ }
    Expand description

    A sparse table for 2-dimensional range queries.

    The operation must also be commutative.

    -

    Implementations§

    source§

    impl<O: Op> SparseTable2d<O>

    source

    pub fn new(values: Vec<Vec<O::Value>>) -> Self

    Constructs a sparse table from a vector of values.

    -
    source

    pub fn clone_from_slice(values: &[Vec<O::Value>]) -> Self
    where - O::Value: Clone,

    Constructs a sparse table from a slice of values.

    -
    source

    pub fn fold( +

    Implementations§

    source§

    impl<O: Op> SparseTable2d<O>

    source

    pub fn new(values: Vec<Vec<O::Value>>) -> Self

    Constructs a sparse table from a vector of values.

    +
    source

    pub fn clone_from_slice(values: &[Vec<O::Value>]) -> Selfwhere + O::Value: Clone,

    Constructs a sparse table from a slice of values.

    +
    source

    pub fn fold( &self, - i: impl RangeBounds<usize>, - j: impl RangeBounds<usize>, -) -> Option<O::Value>

    Returns $(x_{i_0, j_0} \cdot \dots \cdot x_{i_1-1, j_0}) \cdot \dots \cdot (x_{i_0, j_1-1} \cdot \dots \cdot x_{i_1-1, j_1-1})$, or None if $i_0 = i_1$ or $j_0 = j_1$.

    -
    source

    pub fn iter(&self) -> impl Iterator<Item = &[O::Value]>

    Returns that yields the row of the table.

    -
    source

    pub fn as_slice(&self) -> &[Vec<O::Value>]

    Returns a slice of the values.

    -
    source

    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>
    where - O::Value: Clone,

    Collects the values into a vector of vectors.

    -
    source

    pub fn inner(&self) -> &Vec<Vec<Vec<Vec<O::Value>>>>

    Returns the inner table.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for SparseTable2d<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> From<&'a [Vec<<O as Op>::Value>]> for SparseTable2d<O>
    where - O::Value: Clone,

    source§

    fn from(values: &'a [Vec<O::Value>]) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> From<Vec<Vec<<O as Op>::Value>>> for SparseTable2d<O>

    source§

    fn from(values: Vec<Vec<O::Value>>) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl<O> Freeze for SparseTable2d<O>

    §

    impl<O> RefUnwindSafe for SparseTable2d<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SparseTable2d<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for SparseTable2d<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SparseTable2d<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SparseTable2d<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + i: impl RangeBounds<usize>, + j: impl RangeBounds<usize> +) -> Option<O::Value>

    Returns $(x_{i_0, j_0} \cdot \dots \cdot x_{i_1-1, j_0}) \cdot \dots \cdot (x_{i_0, j_1-1} \cdot \dots \cdot x_{i_1-1, j_1-1})$, or None if $i_0 = i_1$ or $j_0 = j_1$.

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = &[O::Value]>

    Returns that yields the row of the table.

    +
    source

    pub fn as_slice(&self) -> &[Vec<O::Value>]

    Returns a slice of the values.

    +
    source

    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>where + O::Value: Clone,

    Collects the values into a vector of vectors.

    +
    source

    pub fn inner(&self) -> &Vec<Vec<Vec<Vec<O::Value>>>>

    Returns the inner table.

    +

    Trait Implementations§

    source§

    impl<O: Op> Debug for SparseTable2d<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a, O: Op> From<&'a [Vec<<O as Op>::Value, Global>]> for SparseTable2d<O>where + O::Value: Clone,

    source§

    fn from(values: &'a [Vec<O::Value>]) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> From<Vec<Vec<<O as Op>::Value, Global>, Global>> for SparseTable2d<O>

    source§

    fn from(values: Vec<Vec<O::Value>>) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for SparseTable2d<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SparseTable2d<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for SparseTable2d<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SparseTable2d<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SparseTable2d<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/sparse_table/trait.Op.html b/sparse_table/trait.Op.html index b86106a3..b89da896 100644 --- a/sparse_table/trait.Op.html +++ b/sparse_table/trait.Op.html @@ -1,4 +1,4 @@ -Op in sparse_table - RustOp in sparse_table - Rust
    -

    Trait sparse_table::Op

    source ·
    pub trait Op {
    +

    Trait sparse_table::Op

    source ·
    pub trait Op {
         type Value;
     
         // Required method
         fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
     }
    Expand description

    A trait for the operation used in sparse tables.

    -

    Required Associated Types§

    source

    type Value

    The type of the values.

    -

    Required Methods§

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Multiplies two values: $x \cdot y$.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value

    The type of the values.

    +

    Required Methods§

    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Multiplies two values: $x \cdot y$.

    +

    Implementors§

    \ No newline at end of file diff --git a/splay_tree/all.html b/splay_tree/all.html index 196f0ff2..9ec5f6d8 100644 --- a/splay_tree/all.html +++ b/splay_tree/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/splay_tree/index.html b/splay_tree/index.html index 197c9555..22f40b8e 100644 --- a/splay_tree/index.html +++ b/splay_tree/index.html @@ -1,4 +1,4 @@ -splay_tree - Rustsplay_tree - Rust
    -

    Crate splay_tree

    source ·
    Expand description

    スプレー木です。

    -

    Structs§

    Traits§

    \ No newline at end of file +

    Crate splay_tree

    source ·
    Expand description

    スプレー木です。

    +

    Structs

    Traits

    \ No newline at end of file diff --git a/splay_tree/struct.Entry.html b/splay_tree/struct.Entry.html index 649c3c04..b7db3022 100644 --- a/splay_tree/struct.Entry.html +++ b/splay_tree/struct.Entry.html @@ -1,4 +1,4 @@ -Entry in splay_tree - RustEntry in splay_tree - Rust
    -

    Struct splay_tree::Entry

    source ·
    pub struct Entry<'a, O: LazyOps>(/* private fields */);
    Expand description

    SplayTree::entry の戻り値型です。

    -

    Trait Implementations§

    source§

    impl<O: LazyOps> Deref for Entry<'_, O>

    source§

    type Target = <O as LazyOps>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<O: LazyOps> DerefMut for Entry<'_, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.

    Auto Trait Implementations§

    §

    impl<'a, O> Freeze for Entry<'a, O>

    §

    impl<'a, O> !RefUnwindSafe for Entry<'a, O>

    §

    impl<'a, O> !Send for Entry<'a, O>

    §

    impl<'a, O> !Sync for Entry<'a, O>

    §

    impl<'a, O> Unpin for Entry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Entry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct splay_tree::Entry

    source ·
    pub struct Entry<'a, O: LazyOps>(_);
    Expand description

    SplayTree::entry の戻り値型です。

    +

    Trait Implementations§

    source§

    impl<O: LazyOps> Deref for Entry<'_, O>

    §

    type Target = <O as LazyOps>::Value

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<O: LazyOps> DerefMut for Entry<'_, O>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.

    Auto Trait Implementations§

    §

    impl<'a, O> !RefUnwindSafe for Entry<'a, O>

    §

    impl<'a, O> !Send for Entry<'a, O>

    §

    impl<'a, O> !Sync for Entry<'a, O>

    §

    impl<'a, O> Unpin for Entry<'a, O>

    §

    impl<'a, O> !UnwindSafe for Entry<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/splay_tree/struct.Iter.html b/splay_tree/struct.Iter.html index 1e6fb776..2f7b0e5b 100644 --- a/splay_tree/struct.Iter.html +++ b/splay_tree/struct.Iter.html @@ -1,4 +1,4 @@ -Iter in splay_tree - RustIter in splay_tree - Rust
    -

    Struct splay_tree::Iter

    source ·
    pub struct Iter<'a, O: LazyOps> { /* private fields */ }
    Expand description

    SplayTree::iter, SplayTree::range の戻り値型です。

    -

    Trait Implementations§

    source§

    impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes -elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, -final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, O: LazyOps> Iterator for Iter<'a, O>

    source§

    type Item = &'a <O as LazyOps>::Value

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct splay_tree::Iter

    source ·
    pub struct Iter<'a, O: LazyOps> { /* private fields */ }
    Expand description

    SplayTree::iter, SplayTree::range の戻り値型です。

    +

    Trait Implementations§

    source§

    impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O>

    source§

    fn next_back(&mut self) -> Option<Self::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.37.0 · source§

    fn nth_back(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element from the end of the iterator. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes +elements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single, +final value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    source§

    impl<'a, O: LazyOps> Iterator for Iter<'a, O>

    §

    type Item = &'a <O as LazyOps>::Value

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
    where +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere T: 'a, - Self: Sized + DoubleEndedIterator<Item = &'a mut T>, - P: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, + Self: Sized + DoubleEndedIterator<Item = &'a mut T>, + P: FnMut(&T) -> bool,
    🔬This is a nightly-only experimental API. (iter_partition_in_place)
    Reorders the elements of this iterator in-place according to the given predicate, such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +Returns the number of true elements found. Read more

    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>
    where - Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn rev(self) -> Rev<Self>where + Self: Sized + DoubleEndedIterator,

    Reverses an iterator’s direction. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> Freeze for Iter<'a, O>

    §

    impl<'a, O> !RefUnwindSafe for Iter<'a, O>

    §

    impl<'a, O> !Send for Iter<'a, O>

    §

    impl<'a, O> !Sync for Iter<'a, O>

    §

    impl<'a, O> Unpin for Iter<'a, O>

    §

    impl<'a, O> !UnwindSafe for Iter<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a, O> !RefUnwindSafe for Iter<'a, O>

    §

    impl<'a, O> !Send for Iter<'a, O>

    §

    impl<'a, O> !Sync for Iter<'a, O>

    §

    impl<'a, O> Unpin for Iter<'a, O>

    §

    impl<'a, O> !UnwindSafe for Iter<'a, O>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/splay_tree/struct.NoLazy.html b/splay_tree/struct.NoLazy.html index 038b3463..275dec1f 100644 --- a/splay_tree/struct.NoLazy.html +++ b/splay_tree/struct.NoLazy.html @@ -1,4 +1,4 @@ -NoLazy in splay_tree - RustNoLazy in splay_tree - Rust
    -

    Struct splay_tree::NoLazy

    source ·
    pub struct NoLazy<O>(/* private fields */);
    Expand description

    Ops を実装する型をラップして LazyOps を実装する型

    -

    Trait Implementations§

    source§

    impl<O: Ops> LazyOps for NoLazy<O>

    source§

    type Acc = <O as Ops>::Acc

    集約値型
    source§

    type Lazy = ()

    作用値型
    source§

    type Value = <O as Ops>::Value

    頂点重み型
    source§

    fn proj(value: &Self::Value) -> Self::Acc

    集約化
    source§

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算
    source§

    fn act_value((): &Self::Lazy, _value: &mut Self::Value)

    頂点重みへの作用
    source§

    fn act_acc((): &Self::Lazy, _acc: &mut Self::Acc)

    集約値への作用
    source§

    fn compose((): &Self::Lazy, (): &mut Self::Lazy)

    作用の合成
    source§

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    Auto Trait Implementations§

    §

    impl<O> Freeze for NoLazy<O>

    §

    impl<O> RefUnwindSafe for NoLazy<O>

    §

    impl<O> Send for NoLazy<O>

    §

    impl<O> Sync for NoLazy<O>

    §

    impl<O> Unpin for NoLazy<O>

    §

    impl<O> UnwindSafe for NoLazy<O>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct splay_tree::NoLazy

    source ·
    pub struct NoLazy<O>(_);
    Expand description

    Ops を実装する型をラップして LazyOps を実装する型

    +

    Trait Implementations§

    source§

    impl<O: Ops> LazyOps for NoLazy<O>

    §

    type Acc = <O as Ops>::Acc

    集約値型
    §

    type Lazy = ()

    作用値型
    §

    type Value = <O as Ops>::Value

    頂点重み型
    source§

    fn proj(value: &Self::Value) -> Self::Acc

    集約化
    source§

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算
    source§

    fn act_value((): &Self::Lazy, _value: &mut Self::Value)

    頂点重みへの作用
    source§

    fn act_acc((): &Self::Lazy, _acc: &mut Self::Acc)

    集約値への作用
    source§

    fn compose((): &Self::Lazy, (): &mut Self::Lazy)

    作用の合成
    source§

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for NoLazy<O>

    §

    impl<O> Send for NoLazy<O>

    §

    impl<O> Sync for NoLazy<O>

    §

    impl<O> Unpin for NoLazy<O>

    §

    impl<O> UnwindSafe for NoLazy<O>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/splay_tree/struct.Nop.html b/splay_tree/struct.Nop.html index f0ba780b..bf948e19 100644 --- a/splay_tree/struct.Nop.html +++ b/splay_tree/struct.Nop.html @@ -1,4 +1,4 @@ -Nop in splay_tree - RustNop in splay_tree - Rust
    -

    Struct splay_tree::Nop

    source ·
    pub struct Nop<T: Value>(/* private fields */);
    Expand description

    集約も作用もなしの場合に使うトレイト

    -

    Trait Implementations§

    source§

    impl<T: Value> LazyOps for Nop<T>

    source§

    type Acc = ()

    集約値型
    source§

    type Lazy = ()

    作用値型
    source§

    type Value = T

    頂点重み型
    source§

    fn proj(_value: &Self::Value) -> Self::Acc

    集約化
    source§

    fn op((): &Self::Acc, (): &Self::Acc) -> Self::Acc

    集約演算
    source§

    fn act_value((): &Self::Lazy, _value: &mut Self::Value)

    頂点重みへの作用
    source§

    fn act_acc((): &Self::Lazy, (): &mut Self::Acc)

    集約値への作用
    source§

    fn compose((): &Self::Lazy, (): &mut Self::Lazy)

    作用の合成
    source§

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    Auto Trait Implementations§

    §

    impl<T> Freeze for Nop<T>

    §

    impl<T> RefUnwindSafe for Nop<T>

    §

    impl<T> Send for Nop<T>

    §

    impl<T> Sync for Nop<T>

    §

    impl<T> Unpin for Nop<T>

    §

    impl<T> UnwindSafe for Nop<T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct splay_tree::Nop

    source ·
    pub struct Nop<T: Value>(_);
    Expand description

    集約も作用もなしの場合に使うトレイト

    +

    Trait Implementations§

    source§

    impl<T: Value> LazyOps for Nop<T>

    §

    type Acc = ()

    集約値型
    §

    type Lazy = ()

    作用値型
    §

    type Value = T

    頂点重み型
    source§

    fn proj(_value: &Self::Value) -> Self::Acc

    集約化
    source§

    fn op((): &Self::Acc, (): &Self::Acc) -> Self::Acc

    集約演算
    source§

    fn act_value((): &Self::Lazy, _value: &mut Self::Value)

    頂点重みへの作用
    source§

    fn act_acc((): &Self::Lazy, (): &mut Self::Acc)

    集約値への作用
    source§

    fn compose((): &Self::Lazy, (): &mut Self::Lazy)

    作用の合成
    source§

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Nop<T>

    §

    impl<T> Send for Nop<T>

    §

    impl<T> Sync for Nop<T>

    §

    impl<T> Unpin for Nop<T>

    §

    impl<T> UnwindSafe for Nop<T>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/splay_tree/struct.SplayTree.html b/splay_tree/struct.SplayTree.html index 91f7a1bf..1149de5f 100644 --- a/splay_tree/struct.SplayTree.html +++ b/splay_tree/struct.SplayTree.html @@ -1,4 +1,4 @@ -SplayTree in splay_tree - RustSplayTree in splay_tree - Rust
    -

    Struct splay_tree::SplayTree

    source ·
    pub struct SplayTree<O: LazyOps>(/* private fields */);
    Expand description

    スプレー木

    -

    Implementations§

    source§

    impl<O: LazyOps> SplayTree<O>

    source

    pub fn new() -> Self

    空のスプレー木を構築します。

    -
    §Examples
    +

    Struct splay_tree::SplayTree

    source ·
    pub struct SplayTree<O: LazyOps>(_);
    Expand description

    スプレー木

    +

    Implementations§

    source§

    impl<O: LazyOps> SplayTree<O>

    source

    pub fn new() -> Self

    空のスプレー木を構築します。

    +
    Examples
    let splay = SplayTree::<Nop<()>>::new();
     assert!(splay.is_empty());
    -
    source

    pub fn is_empty(&self) -> bool

    空ならば true を返します。

    -
    §Examples
    +
    source

    pub fn is_empty(&self) -> bool

    空ならば true を返します。

    +
    Examples
    let splay = SplayTree::<Nop<()>>::new();
     assert!(splay.is_empty());
    -
    source

    pub fn len(&self) -> usize

    要素数を返します。

    -
    §Examples
    +
    source

    pub fn len(&self) -> usize

    要素数を返します。

    +
    Examples
    
     // 0 要素
     let splay = SplayTree::<Nop<()>>::new();
    @@ -51,12 +51,12 @@ 
    §Examples
    // 3 要素 let splay = repeat(()).take(3).collect::<SplayTree<Nop<()>>>(); assert_eq!(splay.len(), 3);
    -
    source

    pub fn insert(&mut self, at: usize, value: O::Value)

    指定した場所に挿入します。

    -
    §Panics
    +
    source

    pub fn insert(&mut self, at: usize, value: O::Value)

    指定した場所に挿入します。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    let mut splay = vec![10, 11, 12]
         .into_iter()
         .collect::<SplayTree<Nop<i32>>>();
    @@ -66,12 +66,12 @@ 
    §Examples
    assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![ 10, 20, 11, 12 ]);
    -
    source

    pub fn delete(&mut self, at: usize) -> O::Value

    指定した場所の要素を削除します。

    -
    §Panics
    +
    source

    pub fn delete(&mut self, at: usize) -> O::Value

    指定した場所の要素を削除します。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    let mut splay = vec![10, 11, 12]
         .into_iter()
         .collect::<SplayTree<Nop<i32>>>();
    @@ -79,12 +79,12 @@ 
    §Examples
    splay.delete(1); assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![10, 12]);
    -
    source

    pub fn reverse(&mut self, range: impl RangeBounds<usize>)

    指定した範囲の要素を逆順にします。

    -
    §Panics
    +
    source

    pub fn reverse(&mut self, range: impl RangeBounds<usize>)

    指定した範囲の要素を逆順にします。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    let mut splay = (10..15).collect::<SplayTree<Nop<i32>>>();
     assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![
         10, 11, 12, 13, 14
    @@ -94,12 +94,12 @@ 
    §Examples
    assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![ 10, 13, 12, 11, 14 ]);
    -
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Acc>

    指定した範囲の要素を畳み込みます。

    -
    §Panics
    +
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> Option<O::Acc>

    指定した範囲の要素を畳み込みます。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    enum Sum {}
     impl Ops for Sum {
         type Acc = i32;
    @@ -116,12 +116,12 @@ 
    §Examples
    let splay = (10..15).collect::<SplayTree<NoLazy<Sum>>>(); assert_eq!(splay.fold(2..), Some(12 + 13 + 14)); assert_eq!(splay.fold(2..2), None);
    -
    source

    pub fn act(&mut self, range: impl RangeBounds<usize>, lazy: O::Lazy)

    指定した範囲の要素すべてに作用します。

    -
    §Panics
    +
    source

    pub fn act(&mut self, range: impl RangeBounds<usize>, lazy: O::Lazy)

    指定した範囲の要素すべてに作用します。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    enum Update {}
     impl LazyOps for Update {
         type Acc = ();
    @@ -148,33 +148,33 @@ 
    §Examples
    assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![ 10, 11, 20, 20, 14 ]);
    -
    source

    pub fn get(&self, i: usize) -> Option<&O::Value>

    指定した場所の要素への参照を返します。範囲外のときには None を返します。

    -
    §Examples
    +
    source

    pub fn get(&self, i: usize) -> Option<&O::Value>

    指定した場所の要素への参照を返します。範囲外のときには None を返します。

    +
    Examples
    let splay = vec![10, 11, 12]
         .into_iter()
         .collect::<SplayTree<Nop<i32>>>();
     assert_eq!(splay.get(0), Some(&10));
     assert_eq!(splay.get(5), None);
    -
    source

    pub fn entry(&mut self, i: usize) -> Option<Entry<'_, O>>

    指定した場所の要素への可変ハンドラを返します。範囲外のときには None を返します。

    -
    §Examples
    +
    source

    pub fn entry(&mut self, i: usize) -> Option<Entry<'_, O>>

    指定した場所の要素への可変ハンドラを返します。範囲外のときには None を返します。

    +
    Examples
    let mut splay = vec![10, 11, 12]
         .into_iter()
         .collect::<SplayTree<Nop<i32>>>();
     *splay.entry(0).unwrap() += 10;
     assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![20, 11, 12]);
    -
    source

    pub fn split_off(&mut self, at: usize) -> Self

    指定した場所以降を切り離して返します。

    -
    §Panics
    +
    source

    pub fn split_off(&mut self, at: usize) -> Self

    指定した場所以降を切り離して返します。

    +
    Panics
    • 範囲外
    -
    §Examples
    +
    Examples
    let mut splay = (10..15).into_iter().collect::<SplayTree<Nop<i32>>>();
     let other = splay.split_off(3);
     
     assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![10, 11, 12]);
     assert_eq!(other.iter().copied().collect::<Vec<_>>(), vec![13, 14]);
    -
    source

    pub fn append(&mut self, right: &Self)

    受け取ったスプレー木の値をすべて後ろにつなげます。

    -
    §Examples
    +
    source

    pub fn append(&mut self, right: &Self)

    受け取ったスプレー木の値をすべて後ろにつなげます。

    +
    Examples
    let mut splay = (10..13).into_iter().collect::<SplayTree<Nop<i32>>>();
     let mut other = (20..23).into_iter().collect::<SplayTree<Nop<i32>>>();
     splay.append(&mut other);
    @@ -182,8 +182,8 @@ 
    §Examplesassert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![ 10, 11, 12, 20, 21, 22 ]);
    -
    source

    pub fn iter(&self) -> Iter<'_, O>

    要素を順番に返すイテレータを返します。

    -
    §Examples
    +
    source

    pub fn iter(&self) -> Iter<'_, O>

    要素を順番に返すイテレータを返します。

    +
    Examples
    let splay = (10..13).into_iter().collect::<SplayTree<Nop<i32>>>();
     let mut iter = splay.iter();
     
    @@ -191,8 +191,8 @@ 
    §Examplesassert_eq!(iter.next_back(), Some(&12)); assert_eq!(iter.next(), Some(&11)); assert_eq!(iter.next_back(), None);
    -
    source

    pub fn range(&self, range: impl RangeBounds<usize>) -> Iter<'_, O>

    指定した範囲の要素を順番に返すイテレータを返します。

    -
    §Examples
    +
    source

    pub fn range(&self, range: impl RangeBounds<usize>) -> Iter<'_, O>

    指定した範囲の要素を順番に返すイテレータを返します。

    +
    Examples
    let splay = (0..20).into_iter().collect::<SplayTree<Nop<i32>>>();
     let mut iter = splay.range(10..13);
     
    @@ -200,35 +200,34 @@ 
    §Examplesassert_eq!(iter.next_back(), Some(&12)); assert_eq!(iter.next(), Some(&11)); assert_eq!(iter.next_back(), None);
    -
    source

    pub fn dump(&self)

    内部情報をダンプします。

    -

    Trait Implementations§

    source§

    impl<O: LazyOps> Clone for SplayTree<O>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<O: LazyOps> Debug for SplayTree<O>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: LazyOps> Default for SplayTree<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: LazyOps> Drop for SplayTree<O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<O: LazyOps> FromIterator<<O as LazyOps>::Value> for SplayTree<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: LazyOps> Hash for SplayTree<O>
    where - O::Value: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<O: LazyOps> Index<usize> for SplayTree<O>

    source§

    type Output = <O as LazyOps>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O>

    source§

    type IntoIter = Iter<'a, O>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a <O as LazyOps>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<O: LazyOps> Ord for SplayTree<O>
    where - O::Value: Ord,

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl<O: LazyOps> PartialEq for SplayTree<O>
    where - O::Value: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<O: LazyOps> PartialOrd for SplayTree<O>
    where - O::Value: PartialOrd,

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the -<= operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > -operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
    source§

    impl<O: LazyOps> Eq for SplayTree<O>
    where - O::Value: Eq,

    Auto Trait Implementations§

    §

    impl<O> !Freeze for SplayTree<O>

    §

    impl<O> !RefUnwindSafe for SplayTree<O>

    §

    impl<O> !Send for SplayTree<O>

    §

    impl<O> !Sync for SplayTree<O>

    §

    impl<O> Unpin for SplayTree<O>

    §

    impl<O> UnwindSafe for SplayTree<O>
    where - <O as LazyOps>::Value: RefUnwindSafe, - <O as LazyOps>::Acc: RefUnwindSafe, - <O as LazyOps>::Lazy: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn dump(&self)

    内部情報をダンプします。

    +

    Trait Implementations§

    source§

    impl<O: LazyOps> Clone for SplayTree<O>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<O: LazyOps> Debug for SplayTree<O>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: LazyOps> Default for SplayTree<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: LazyOps> Drop for SplayTree<O>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<O: LazyOps> FromIterator<<O as LazyOps>::Value> for SplayTree<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: LazyOps> Hash for SplayTree<O>where + O::Value: Hash,

    source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<O: LazyOps> Index<usize> for SplayTree<O>

    §

    type Output = <O as LazyOps>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O>

    §

    type IntoIter = Iter<'a, O>

    Which kind of iterator are we turning this into?
    §

    type Item = &'a <O as LazyOps>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<O: LazyOps> Ord for SplayTree<O>where + O::Value: Ord,

    source§

    fn cmp(&self, other: &Self) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere + Self: Sized + PartialOrd<Self>,

    Restrict a value to a certain interval. Read more
    source§

    impl<O: LazyOps> PartialEq<SplayTree<O>> for SplayTree<O>where + O::Value: PartialEq,

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<O: LazyOps> PartialOrd<SplayTree<O>> for SplayTree<O>where + O::Value: PartialOrd,

    source§

    fn partial_cmp(&self, other: &Self) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl<O: LazyOps> Eq for SplayTree<O>where + O::Value: Eq,

    Auto Trait Implementations§

    §

    impl<O> !RefUnwindSafe for SplayTree<O>

    §

    impl<O> !Send for SplayTree<O>

    §

    impl<O> !Sync for SplayTree<O>

    §

    impl<O> Unpin for SplayTree<O>

    §

    impl<O> UnwindSafe for SplayTree<O>where + <O as LazyOps>::Acc: RefUnwindSafe, + <O as LazyOps>::Lazy: RefUnwindSafe, + <O as LazyOps>::Value: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> Value for T
    where - T: Debug + Clone,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> Value for Twhere + T: Debug + Clone,

    \ No newline at end of file diff --git a/splay_tree/trait.LazyOps.html b/splay_tree/trait.LazyOps.html index 50ce72e3..b11372fa 100644 --- a/splay_tree/trait.LazyOps.html +++ b/splay_tree/trait.LazyOps.html @@ -1,4 +1,4 @@ -LazyOps in splay_tree - RustLazyOps in splay_tree - Rust
    -

    Trait splay_tree::LazyOps

    source ·
    pub trait LazyOps {
    +

    Trait splay_tree::LazyOps

    source ·
    pub trait LazyOps {
         type Value: Value;
         type Acc: Value;
         type Lazy: Value;
    @@ -45,15 +45,15 @@
         fn compose(upper: &Self::Lazy, lower: &mut Self::Lazy);
     
         // Provided method
    -    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>) { ... }
    +    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>) { ... }
     }
    Expand description

    集約と作用のトレイト

    -

    Required Associated Types§

    source

    type Value: Value

    頂点重み型

    -
    source

    type Acc: Value

    集約値型

    -
    source

    type Lazy: Value

    作用値型

    -

    Required Methods§

    source

    fn proj(value: &Self::Value) -> Self::Acc

    集約化

    -
    source

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算

    -
    source

    fn act_value(lazy: &Self::Lazy, value: &mut Self::Value)

    頂点重みへの作用

    -
    source

    fn act_acc(lazy: &Self::Lazy, acc: &mut Self::Acc)

    集約値への作用

    -
    source

    fn compose(upper: &Self::Lazy, lower: &mut Self::Lazy)

    作用の合成

    -

    Provided Methods§

    source

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<O: Ops> LazyOps for NoLazy<O>

    source§

    type Acc = <O as Ops>::Acc

    source§

    type Lazy = ()

    source§

    type Value = <O as Ops>::Value

    source§

    impl<T: Value> LazyOps for Nop<T>

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value: Value

    頂点重み型

    +
    source

    type Acc: Value

    集約値型

    +
    source

    type Lazy: Value

    作用値型

    +

    Required Methods§

    source

    fn proj(value: &Self::Value) -> Self::Acc

    集約化

    +
    source

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算

    +
    source

    fn act_value(lazy: &Self::Lazy, value: &mut Self::Value)

    頂点重みへの作用

    +
    source

    fn act_acc(lazy: &Self::Lazy, acc: &mut Self::Acc)

    集約値への作用

    +
    source

    fn compose(upper: &Self::Lazy, lower: &mut Self::Lazy)

    作用の合成

    +

    Provided Methods§

    source

    fn compose_to_option(upper: &Self::Lazy, lower: &mut Option<Self::Lazy>)

    Option へ作用の合成

    +

    Implementors§

    source§

    impl<O: Ops> LazyOps for NoLazy<O>

    §

    type Acc = <O as Ops>::Acc

    §

    type Lazy = ()

    §

    type Value = <O as Ops>::Value

    source§

    impl<T: Value> LazyOps for Nop<T>

    §

    type Acc = ()

    §

    type Lazy = ()

    §

    type Value = T

    \ No newline at end of file diff --git a/splay_tree/trait.Ops.html b/splay_tree/trait.Ops.html index 70624df8..9c31a708 100644 --- a/splay_tree/trait.Ops.html +++ b/splay_tree/trait.Ops.html @@ -1,4 +1,4 @@ -Ops in splay_tree - RustOps in splay_tree - Rust
    -

    Trait splay_tree::Ops

    source ·
    pub trait Ops {
    +

    Trait splay_tree::Ops

    source ·
    pub trait Ops {
         type Value: Value;
         type Acc: Value;
     
    @@ -40,8 +40,8 @@
         fn proj(value: &Self::Value) -> Self::Acc;
         fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc;
     }
    Expand description

    作用なしの場合に使うトレイト

    -

    Required Associated Types§

    source

    type Value: Value

    頂点重み型

    -
    source

    type Acc: Value

    集約値型

    -

    Required Methods§

    source

    fn proj(value: &Self::Value) -> Self::Acc

    集約化

    -
    source

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value: Value

    頂点重み型

    +
    source

    type Acc: Value

    集約値型

    +

    Required Methods§

    source

    fn proj(value: &Self::Value) -> Self::Acc

    集約化

    +
    source

    fn op(lhs: &Self::Acc, rhs: &Self::Acc) -> Self::Acc

    集約演算

    +

    Implementors§

    \ No newline at end of file diff --git a/splay_tree/trait.Value.html b/splay_tree/trait.Value.html index 1e35d6a6..9c56b568 100644 --- a/splay_tree/trait.Value.html +++ b/splay_tree/trait.Value.html @@ -1,4 +1,4 @@ -Value in splay_tree - RustValue in splay_tree - Rust
    -

    Trait splay_tree::Value

    source ·
    pub trait Value:
    -    Sized
    -    + Debug
    -    + Clone { }
    Expand description

    Sized, Debug, Clone をまとめたトレイト

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + Debug + Clone> Value for T

    \ No newline at end of file +

    Trait splay_tree::Value

    source ·
    pub trait Value: Sized + Debug + Clone { }
    Expand description

    Sized, Debug, Clone をまとめたトレイト

    +

    Implementors§

    source§

    impl<T: Sized + Debug + Clone> Value for T

    \ No newline at end of file diff --git a/src-files.js b/src-files.js deleted file mode 100644 index 4a3514f7..00000000 --- a/src-files.js +++ /dev/null @@ -1,3 +0,0 @@ -var srcIndex = new Map(JSON.parse('[["accum",["",[],["lib.rs"]]],["advance",["",[],["lib.rs"]]],["avl_tree",["",[],["lib.rs"]]],["bfs",["",[],["lib.rs"]]],["bfs01",["",[],["lib.rs"]]],["binary",["",[],["lib.rs"]]],["bitutils",["",[],["combinations.rs","lib.rs","subsets.rs"]]],["bitvec",["",[],["lib.rs"]]],["bsgs",["",[],["lib.rs"]]],["cht",["",[],["lib.rs"]]],["cipolla",["",[],["lib.rs"]]],["cmpmore",["",[],["lib.rs"]]],["convex_hull",["",[],["lib.rs"]]],["dfs",["",[],["lib.rs"]]],["dijkstra_radix_heap",["",[],["lib.rs"]]],["dinic",["",[],["lib.rs"]]],["dual_segtree",["",[],["lib.rs"]]],["elim",["",[],["lib.rs"]]],["erato",["",[],["converters.rs","int.rs","lib.rs","lpd_sieve.rs","sieve.rs","sieve_base.rs","sieve_kind.rs"]]],["euclid",["",[],["crt.rs","ext_gcd.rs","gcd.rs","lib.rs"]]],["fp",["",[],["ext_gcd.rs","factorial.rs","fourier.rs","lib.rs"]]],["fps",["",[],["lib.rs"]]],["gco",["",[],["lib.rs"]]],["gridnei",["",[],["lib.rs"]]],["gss",["",[],["lib.rs"]]],["heap_slope_trick",["",[],["lib.rs"]]],["heap_tricks",["",[],["lib.rs"]]],["hld",["",[],["lib.rs"]]],["hopkarp",["",[],["lib.rs"]]],["hungarian",["",[],["lib.rs"]]],["interval_heap",["",[],["lib.rs"]]],["io",["",[],["lib.rs"]]],["lagrange",["",[],["lib.rs"]]],["lazy_segbeats",["",[],["lib.rs"]]],["lazy_segtree",["",[],["lib.rs"]]],["lg",["",[],["lib.rs","map.rs","table.rs","vec2.rs","vecs.rs"]]],["lin_ineq",["",[],["lib.rs"]]],["link_cut_tree",["",[],["base.rs","lib.rs"]]],["low_link",["",[],["lib.rs"]]],["make_graph",["",[],["lib.rs"]]],["manacher",["",[],["lib.rs"]]],["mincost_flow",["",[],["lib.rs"]]],["monotone_minima",["",[],["lib.rs"]]],["naive_poly",["",[],["lib.rs"]]],["newton",["",[],["lib.rs"]]],["next_permutation",["",[],["lib.rs"]]],["numeric_search",["",[],["lib.rs"]]],["open",["",[],["lib.rs"]]],["partially_persistent_union_find",["",[],["lib.rs"]]],["radix_heap",["",[],["lib.rs"]]],["randtools",["",[],["algo.rs","lib.rs"]]],["rational",["",[],["lib.rs"]]],["rb",["",[],["balance.rs","lib.rs","map.rs","seq.rs"]]],["rbtree",["",[],["lib.rs","nonempty.rs"]]],["scc",["",[],["lib.rs"]]],["segbeats",["",[],["lib.rs"]]],["segbeats_task3",["",[],["lib.rs"]]],["segtree",["",[],["lib.rs"]]],["skew_heap",["",[],["lib.rs"]]],["slicemore",["",[],["lib.rs"]]],["snippetter",["",[],["main.rs"]]],["sort_tree",["",[],["lib.rs"]]],["sparse_table",["",[],["lib.rs"]]],["splay_tree",["",[],["lib.rs","node.rs"]]],["suffix_array",["",[],["lib.rs"]]],["suffix_sum",["",[],["lib.rs"]]],["swag",["",[],["lib.rs"]]],["tree_fold",["",[],["lib.rs"]]],["trial",["",[],["divisors.rs","lib.rs","prime_factors.rs"]]],["trie",["",[],["lib.rs","trie_map.rs","trie_set.rs"]]],["two_sat",["",[],["lib.rs"]]],["uf_checklist",["",[],["lib.rs"]]],["union_find",["",[],["lib.rs"]]],["veb",["",[],["lib.rs"]]],["vec_lines",["",[],["lib.rs"]]],["wavelet_matrix",["",[],["lib.rs"]]],["z_algo",["",[],["lib.rs"]]],["zeta",["",[],["lib.rs"]]]]')); -createSrcSidebar(); -//{"start":36,"fragment_lengths":[28,31,32,27,29,30,63,30,28,27,31,31,35,27,43,29,36,28,112,61,67,27,27,31,27,40,35,27,31,33,37,26,32,37,36,66,32,47,32,34,32,36,39,34,30,40,38,28,55,34,43,32,57,44,27,32,38,31,33,33,35,33,36,44,36,34,28,33,62,56,31,36,34,27,33,38,30,28]} \ No newline at end of file diff --git a/src/accum/lib.rs.html b/src/accum/lib.rs.html index a84c4eb8..a7bcf5d4 100644 --- a/src/accum/lib.rs.html +++ b/src/accum/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -362,19 +362,19 @@
     }
     
     #[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
    -pub struct Skipped<'a, T, F, I> {
    -    a: &'a [T],
    +pub struct Skipped<'a, T, F, I> {
    +    a: &'a [T],
         left: T,
         right: Vec<T>,
         f: F,
         identity: I,
     }
    -impl<'a, T, F, I> Skipped<'a, T, F, I>
    +impl<'a, T, F, I> Skipped<'a, T, F, I>
     where
         F: FnMut(&T, &T) -> T,
         I: FnMut() -> T,
     {
    -    fn new(a: &'a [T], mut f: F, mut identity: I) -> Self {
    +    fn new(a: &'a [T], mut f: F, mut identity: I) -> Self {
             let right = if a.is_empty() {
                 Vec::new()
             } else {
    @@ -394,7 +394,7 @@
             }
         }
     }
    -impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>
    +impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>
     where
         F: FnMut(&T, &T) -> T,
         I: FnMut() -> T,
    @@ -488,7 +488,7 @@
         #[test]
         fn test_skipped() {
             let a = (0..4)
    -            .map(|i| ((b'a' + i) as char).to_string())
    +            .map(|i| ((b'a' + i) as char).to_string())
                 .collect::<Vec<_>>();
             let skipped = skipped(
                 &a,
    @@ -496,21 +496,21 @@
                 String::new,
             )
             .collect::<Vec<_>>();
    -        assert_eq!(skipped[0].as_str(), "bcd");
    -        assert_eq!(skipped[1].as_str(), "acd");
    -        assert_eq!(skipped[2].as_str(), "abd");
    -        assert_eq!(skipped[3].as_str(), "abc");
    +        assert_eq!(skipped[0].as_str(), "bcd");
    +        assert_eq!(skipped[1].as_str(), "acd");
    +        assert_eq!(skipped[2].as_str(), "abd");
    +        assert_eq!(skipped[3].as_str(), "abc");
         }
         #[test]
         fn test_skipped_min() {
             let a = vec![4, 2, 6, 1];
    -        let skipped = skipped_min(&a, i32::MAX);
    +        let skipped = skipped_min(&a, std::i32::MAX);
             assert_eq!(skipped, vec![1, 1, 1, 2]);
         }
         #[test]
         fn test_skipped_max() {
             let a = vec![4, 2, 6, 1];
    -        let skipped = skipped_max(&a, i32::MIN);
    +        let skipped = skipped_max(&a, std::i32::MIN);
             assert_eq!(skipped, vec![6, 6, 4, 6]);
         }
     }
    diff --git a/src/advance/lib.rs.html b/src/advance/lib.rs.html
    deleted file mode 100644
    index ae9e73c1..00000000
    --- a/src/advance/lib.rs.html
    +++ /dev/null
    @@ -1,267 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -
    //! しゃくとり法ユーティルです。
    -//!
    -//! # Contents
    -//!
    -//! * 添字を進める関数: [`advance_until`]
    -//! * それプラス通った要素を訪問する版: [`advance_visit_until`]
    -
    -/// `checker` が `true` になるか配列をはみ出すまで添字を進めます。
    -///
    -/// # 効果
    -///
    -/// `checker(i)` が `true` になるか `a.len() == i` となるまで、`i` をインクリメントし続けます。
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use advance::advance_until;
    -///
    -/// let a = [0, 1, 3, 6, 10, 15];
    -///
    -/// let mut i = 0;
    -/// advance_until(&mut i, &a, |&x| 10 <= x);
    -///
    -/// assert_eq!(i, 4); // 添字が 4 まで進みます。
    -/// ```
    -pub fn advance_until<T>(i: &mut usize, a: &[T], checker: impl FnMut(&T) -> bool) {
    -    *i = a[*i..].iter().position(checker).map_or(a.len(), |d| *i + d);
    -}
    -
    -/// [`advance_until`] を呼んだあと、進んだ箇所すべてを訪問します。
    -///
    -/// # 効果
    -///
    -/// 次の 2 つが順に起こります。
    -///
    -/// 1. [`advance_until`] が呼ばれます。
    -/// 2. 変化する前の `i` を `orig_i` とするとき、`orig_i <= j < i` なる各 `j` に対して、`visitor(j,
    -///    &a[j])` を呼びます。
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use advance::advance_visit_until;
    -///
    -/// let a = [0, 1, 3, 6, 10, 15];
    -///
    -/// let mut i = 0;
    -/// let mut visited = Vec::new();
    -/// advance_visit_until(&mut i, &a, |&x| 10 <= x, |i, &x| visited.push((i, x)));
    -///
    -/// assert_eq!(i, 4);   // 添字が 4 まで進みます。
    -/// assert_eq!(visited, vec![(0, 0), (1, 1), (2, 3), (3, 6)]);  // 添字 0, 1, 2, 3 を訪問します。
    -/// ```
    -pub fn advance_visit_until<T>(
    -    i: &mut usize,
    -    a: &[T],
    -    checker: impl FnMut(&T) -> bool,
    -    mut visitor: impl FnMut(usize, &T),
    -) {
    -    let orig_i = *i;
    -    advance_until(i, a, checker);
    -    a[orig_i..*i]
    -        .iter()
    -        .enumerate()
    -        .for_each(|(d, x)| visitor(orig_i + d, x));
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    use super::advance_visit_until;
    -    use itertools::Itertools;
    -
    -    #[test]
    -    fn test_advance_visit_until() {
    -        let a = (0..6).map(Element).collect_vec();
    -
    -        let mut i = 0;
    -        let mut advance = |end: usize| -> (Vec<Element>, Vec<(usize, Element)>) {
    -            let mut checked = Vec::new();
    -            let mut visited = Vec::new();
    -            advance_visit_until(
    -                &mut i,
    -                &a,
    -                |&x| {
    -                    checked.push(x);
    -                    x == Element(end)
    -                },
    -                |i, &x| visited.push((i, x)),
    -            );
    -            (checked, visited)
    -        };
    -
    -        let (checked, visited) = advance(2);
    -        assert_eq!(checked, vec![Element(0), Element(1), Element(2)]);
    -        assert_eq!(visited, vec![(0, Element(0)), (1, Element(1))]);
    -
    -        let (checked, visited) = advance(2);
    -        assert_eq!(checked, vec![Element(2)]);
    -        assert_eq!(visited, Vec::<(usize, Element)>::new());
    -
    -        let (checked, visited) = advance(3);
    -        assert_eq!(checked, vec![Element(2), Element(3)]);
    -        assert_eq!(visited, vec![(2, Element(2))]);
    -
    -        let (checked, visited) = advance(6);
    -        assert_eq!(checked, vec![Element(3), Element(4), Element(5)]);
    -        assert_eq!(visited, vec![
    -            (3, Element(3)),
    -            (4, Element(4)),
    -            (5, Element(5))
    -        ]);
    -    }
    -
    -    #[derive(Clone, Debug, Default, Hash, PartialEq, Copy)]
    -    struct Element(usize);
    -}
    -
    \ No newline at end of file diff --git a/src/avl_tree/lib.rs.html b/src/avl_tree/lib.rs.html index 9efebfd2..6adfd0cf 100644 --- a/src/avl_tree/lib.rs.html +++ b/src/avl_tree/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1520,13 +1520,13 @@
         /// ```
         /// # use avl_tree::AvlTree;
         /// let mut avl = AvlTree::new();
    -    /// avl.push_back('a');
    -    /// avl.push_back('b');
    -    /// avl.push_back('c');
    -    /// assert_eq!(avl, ['a', 'b', 'c'][..]);
    +    /// avl.push_back('a');
    +    /// avl.push_back('b');
    +    /// avl.push_back('c');
    +    /// assert_eq!(avl, ['a', 'b', 'c'][..]);
         ///
    -    /// avl.insert(1, 'd');
    -    /// assert_eq!(avl, ['a', 'd', 'b', 'c'][..]);
    +    /// avl.insert(1, 'd');
    +    /// assert_eq!(avl, ['a', 'd', 'b', 'c'][..]);
         /// ```
         pub fn insert(&mut self, index: usize, value: T) {
             assert!(index <= self.len());
    @@ -1779,7 +1779,7 @@
         /// let c: Vec<&i32> = buf.iter().collect();
         /// assert_eq!(&c[..], b);
         /// ```
    -    pub fn iter(&self) -> Iter<'_, T> {
    +    pub fn iter(&self) -> Iter<'_, T> {
             Iter {
                 stack: successors(self.root.as_deref(), |current| current.left.as_deref()).collect(),
                 rstack: successors(self.root.as_deref(), |current| current.right.as_deref()).collect(),
    @@ -1817,7 +1817,7 @@
         }
     }
     impl<T: Debug> Debug for AvlTree<T> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list().entries(self).finish()
         }
     }
    @@ -1842,9 +1842,9 @@
             IntoIter { stack }
         }
     }
    -impl<'a, T> IntoIterator for &'a AvlTree<T> {
    -    type IntoIter = Iter<'a, T>;
    -    type Item = &'a T;
    +impl<'a, T> IntoIterator for &'a AvlTree<T> {
    +    type IntoIter = Iter<'a, T>;
    +    type Item = &'a T;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
    @@ -1884,12 +1884,12 @@
     }
     
     /// [`AvlTree`] の要素を前から順にすべて走査するイテレータです。
    -pub struct Iter<'a, T> {
    -    stack: Vec<&'a Node<T>>,
    -    rstack: Vec<&'a Node<T>>,
    +pub struct Iter<'a, T> {
    +    stack: Vec<&'a Node<T>>,
    +    rstack: Vec<&'a Node<T>>,
     }
    -impl<'a, T> Iterator for Iter<'a, T> {
    -    type Item = &'a T;
    +impl<'a, T> Iterator for Iter<'a, T> {
    +    type Item = &'a T;
     
         fn next(&mut self) -> Option<Self::Item> {
             let current = self.stack.pop()?;
    @@ -1904,7 +1904,7 @@
             Some(&current.value)
         }
     }
    -impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
    +impl<'a, T> DoubleEndedIterator for Iter<'a, T> {
         fn next_back(&mut self) -> Option<Self::Item> {
             let current = self.rstack.pop()?;
             self.rstack
    @@ -2348,8 +2348,8 @@
             for n in 0..=10 {
                 let result = (0..n).collect::<AvlTree<_>>();
                 let expected = (0..n).collect::<Vec<_>>();
    -            let result = format!("{:?}", &result);
    -            let expected = format!("{:?}", &expected);
    +            let result = format!("{:?}", &result);
    +            let expected = format!("{:?}", &expected);
                 assert_eq!(result, expected);
             }
         }
    diff --git a/src/bfs/lib.rs.html b/src/bfs/lib.rs.html
    index b6bb4ba4..374456c0 100644
    --- a/src/bfs/lib.rs.html
    +++ b/src/bfs/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -280,12 +280,12 @@
     
     /// 一点からの距離配列を作ります。
     pub fn calc_dist(start: usize, g: &[Vec<usize>]) -> Vec<u32> {
    -    let mut dist = vec![u32::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
         dist[start] = 0;
         let mut queue = VecDeque::from(vec![start]);
         while let Some(x) = queue.pop_front() {
             for &y in &g[x] {
    -            if dist[y] == u32::MAX {
    +            if dist[y] == std::u32::MAX {
                     dist[y] = dist[x] + 1;
                     queue.push_back(y);
                 }
    @@ -296,14 +296,14 @@
     
     /// 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
     pub fn calc_dist_restore(start: usize, g: &[Vec<usize>]) -> (Vec<u32>, Vec<usize>) {
    -    let mut dist = vec![u32::MAX; g.len()];
    -    let mut prv = vec![usize::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
    +    let mut prv = vec![std::usize::MAX; g.len()];
         dist[start] = 0;
         prv[start] = start;
         let mut queue = VecDeque::from(vec![start]);
         while let Some(x) = queue.pop_front() {
             for &y in &g[x] {
    -            if dist[y] == u32::MAX {
    +            if dist[y] == std::u32::MAX {
                     dist[y] = dist[x] + 1;
                     prv[y] = x;
                     queue.push_back(y);
    @@ -316,7 +316,7 @@
     /// start から end が到達可能ならば最短経路の頂点列を返し、不能ならば `None` を返します。
     pub fn find_path(start: usize, end: usize, g: &[Vec<usize>]) -> Option<Vec<usize>> {
         let (dist, prv) = calc_dist_restore(start, g);
    -    if dist[end] == u32::MAX {
    +    if dist[end] == std::u32::MAX {
             None
         } else {
             let mut res = vec![end];
    @@ -349,7 +349,7 @@
             for test_id in 0..100 {
                 let n = rng.sample(LogUniform(2..3000));
                 let m = rng.sample(LogUniform(n - 1..(n * (n - 1) / 2 + 1).min(3000)));
    -            println!("Test {}, n = {}, m = {}", test_id, n, m);
    +            println!("Test {}, n = {}, m = {}", test_id, n, m);
                 let g = rng.sample(SimpleGraph(n, m));
                 let start = rng.gen_range(0..n);
                 let end = rng.gen_range(0..n);
    @@ -371,7 +371,7 @@
                 if let Some(path) = path {
                     validate_path(&dist, &path, start, end);
                 } else {
    -                assert_eq!(dist[end], u32::MAX);
    +                assert_eq!(dist[end], std::u32::MAX);
                 }
             }
         }
    @@ -390,7 +390,7 @@
         fn validate_prv(dist: &[u32], prv: &[usize], start: usize) {
             assert_eq!(prv[start], start);
             (0..dist.len())
    -            .filter(|&i| i != start && prv[i] != usize::MAX)
    +            .filter(|&i| i != start && prv[i] != std::usize::MAX)
                 .for_each(|i| assert_eq!(dist[prv[i]] + 1, dist[i]))
         }
     
    @@ -408,7 +408,7 @@
             let mut rng = StdRng::seed_from_u64(42);
             for test_id in 0..100 {
                 let n = rng.sample(LogUniform(2..20));
    -            println!("Test {}, n = {}", test_id, n);
    +            println!("Test {}, n = {}", test_id, n);
                 let g = rng.sample(Tree(n));
     
                 // 直径
    @@ -432,7 +432,7 @@
     
         fn brute_tree_diameter(g: &[Vec<usize>]) -> ([usize; 2], u32) {
             let n = g.len();
    -        let mut dist = vec![vec![u32::MAX; n]; n];
    +        let mut dist = vec![vec![std::u32::MAX; n]; n];
             (0..n).for_each(|i| dist[i][i] = 0);
             g.iter()
                 .enumerate()
    @@ -449,7 +449,7 @@
                     }
                 }
             }
    -        assert!(dist.iter().flatten().all(|&x| x != u32::MAX));
    +        assert!(dist.iter().flatten().all(|&x| x != std::u32::MAX));
             dist.iter()
                 .enumerate()
                 .flat_map(|(i, v)| v.iter().copied().enumerate().map(move |(j, x)| (i, j, x)))
    diff --git a/src/bfs01/lib.rs.html b/src/bfs01/lib.rs.html
    index 6e6a184f..8881ebe3 100644
    --- a/src/bfs01/lib.rs.html
    +++ b/src/bfs01/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -176,7 +176,7 @@
     
     /// 一点からの距離配列を作ります。
     pub fn calc_dist(s: usize, g: &[Vec<(usize, Weight)>]) -> Vec<u32> {
    -    let mut dist = vec![u32::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
         dist[s] = 0;
         let mut queue = VecDeque::from(vec![s]);
         while let Some(x) = queue.pop_front() {
    @@ -200,8 +200,8 @@
     
     /// 一点からの距離配列と、前者配列を作ります。始点の前者は自分自身です。
     pub fn calc_dist_restore(s: usize, g: &[Vec<(usize, Weight)>]) -> (Vec<u32>, Vec<usize>) {
    -    let mut dist = vec![u32::MAX; g.len()];
    -    let mut prv = vec![usize::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
    +    let mut prv = vec![std::usize::MAX; g.len()];
         prv[s] = s;
         dist[s] = 0;
         let mut queue = VecDeque::from(vec![s]);
    @@ -237,7 +237,7 @@
             for test_id in 0..100 {
                 let n = rng.sample(LogUniform(2..3000));
                 let m = rng.sample(LogUniform(n - 1..(n * (n - 1) / 2 + 1).min(3000)));
    -            println!("Test {}, n = {}, m = {}", test_id, n, m);
    +            println!("Test {}, n = {}, m = {}", test_id, n, m);
                 // 重みなしの木を生成して……
                 let g = rng.sample(SimpleDigraph(n, m));
                 // 重みをつけます。
    @@ -292,8 +292,8 @@
         fn validate_dist_prv(dist: &[u32], prv: &[usize], s: usize) {
             assert_eq!(prv[s], s);
             prv.iter().copied().enumerate().for_each(|(x, p)| {
    -            if p == usize::MAX {
    -                assert_eq!(dist[x], u32::MAX);
    +            if p == std::usize::MAX {
    +                assert_eq!(dist[x], std::u32::MAX);
                 } else {
                     assert!(dist[p] == dist[x] || dist[p] + 1 == dist[x])
                 }
    diff --git a/src/binary/lib.rs.html b/src/binary/lib.rs.html
    index c5caf617..ea1cff68 100644
    --- a/src/binary/lib.rs.html
    +++ b/src/binary/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -296,7 +296,7 @@
         ans
     }
     
    -macro_rules! impl_pow {
    +macro_rules! impl_pow {
         ($($T:ty),* $(,)?) => {$(
             impl Pow for $T {
                 fn is_nonzero(&self) -> bool {
    @@ -315,7 +315,7 @@
         )*}
     }
     
    -impl_pow! {
    +impl_pow! {
         u8, u16, u32, u64, u128, usize,
     }
     
    @@ -328,30 +328,30 @@
             s.chars().chain(t.chars()).collect()
         }
     
    -    #[test_case(0 => "x".to_owned())]
    -    #[test_case(1 => "abx".to_owned())]
    -    #[test_case(2 => "ababx".to_owned())]
    -    #[test_case(3 => "abababx".to_owned())]
    -    #[test_case(4 => "ababababx".to_owned())]
    -    #[test_case(5 => "abababababx".to_owned())]
    +    #[test_case(0 => "x".to_owned())]
    +    #[test_case(1 => "abx".to_owned())]
    +    #[test_case(2 => "ababx".to_owned())]
    +    #[test_case(3 => "abababx".to_owned())]
    +    #[test_case(4 => "ababababx".to_owned())]
    +    #[test_case(5 => "abababababx".to_owned())]
         fn test_operator_binary(n: u32) -> String {
             operator_binary(
    -            "ab".to_owned(),
    +            "ab".to_owned(),
                 n,
    -            "x".to_string(),
    +            "x".to_string(),
                 |a| cat(a, a),
                 |a, x| cat(a, &x),
             )
         }
     
         #[test_case(0 => String::new())]
    -    #[test_case(1 => "ab".to_owned())]
    -    #[test_case(2 => "abab".to_owned())]
    -    #[test_case(3 => "ababab".to_owned())]
    -    #[test_case(4 => "abababab".to_owned())]
    -    #[test_case(5 => "ababababab".to_owned())]
    +    #[test_case(1 => "ab".to_owned())]
    +    #[test_case(2 => "abab".to_owned())]
    +    #[test_case(3 => "ababab".to_owned())]
    +    #[test_case(4 => "abababab".to_owned())]
    +    #[test_case(5 => "ababababab".to_owned())]
         fn test_value_binary(n: u32) -> String {
    -        value_binary("ab".to_owned(), n, String::new(), |a, b| cat(a, b))
    +        value_binary("ab".to_owned(), n, String::new(), |a, b| cat(a, b))
         }
     }
     
    \ No newline at end of file diff --git a/src/bitutils/combinations.rs.html b/src/bitutils/combinations.rs.html deleted file mode 100644 index fc747417..00000000 --- a/src/bitutils/combinations.rs.html +++ /dev/null @@ -1,165 +0,0 @@ -combinations.rs - source - - - - - -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -
    use super::Unsigned;
    -
    -/// Returns an iterator over k-subsets of `(T::one() << n) - T::one()`.
    -///
    -/// # Examples
    -///
    -/// Basic usage:
    -/// ```
    -/// use bitutils::combinations;
    -///
    -/// assert_eq!(combinations::<u32>(3, 2).collect::<Vec<_>>(), vec![3, 5, 6],);
    -/// ```
    -pub fn combinations<T: Unsigned>(n: u32, k: u32) -> Combinations<T> {
    -    assert!(k < T::bit_length() && k < T::bit_length());
    -    Combinations {
    -        n,
    -        bs: (T::one() << k) - T::one(),
    -    }
    -}
    -
    -/// [See the document of `combinations`](combinations)
    -#[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
    -pub struct Combinations<T> {
    -    n: u32,
    -    bs: T,
    -}
    -impl<T: Unsigned> Iterator for Combinations<T> {
    -    type Item = T;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        if (T::one() << self.n) <= self.bs {
    -            return None;
    -        }
    -        let res = Some(self.bs);
    -        self.bs = if self.bs == T::zero() {
    -            T::one() << self.n
    -        } else {
    -            let x = self.bs & self.bs.wrapping_neg();
    -            let y = self.bs + x;
    -            (((self.bs & !y) / x) >> 1) | y
    -        };
    -        res
    -    }
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    use super::combinations;
    -    use itertools::Itertools;
    -    use test_case::test_case;
    -
    -    #[test_case(0, 0 => vec![0])]
    -    #[test_case(1, 0 => vec![0])]
    -    #[test_case(1, 1 => vec![1])]
    -    #[test_case(2, 0 => vec![0])]
    -    #[test_case(2, 1 => vec![1, 2])]
    -    #[test_case(2, 2 => vec![3])]
    -    #[test_case(3, 0 => vec![0])]
    -    #[test_case(3, 1 => vec![1, 2, 4])]
    -    #[test_case(3, 2 => vec![3, 5, 6])]
    -    #[test_case(3, 3 => vec![7])]
    -    fn test_combinations(n: u32, k: u32) -> Vec<u32> {
    -        combinations(n, k).collect_vec()
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/bitutils/subsets.rs.html b/src/bitutils/subsets.rs.html deleted file mode 100644 index 3882c78b..00000000 --- a/src/bitutils/subsets.rs.html +++ /dev/null @@ -1,177 +0,0 @@ -subsets.rs - source - - - - - -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -
    use super::Unsigned;
    -
    -/// Returns an iterator over subsets of `bs`.
    -///
    -/// # Examples
    -///
    -/// Basic usage:
    -/// ```
    -/// use bitutils::subsets;
    -///
    -/// assert_eq!(subsets(10u32).collect::<Vec<_>>(), vec![0, 2, 8, 10],);
    -/// ```
    -pub fn subsets<T: Unsigned>(bs: T) -> Subsets<T> {
    -    Subsets {
    -        bs,
    -        full: bs,
    -        finished: false,
    -    }
    -}
    -
    -/// [See the document of `subsets`](subsets)
    -#[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
    -pub struct Subsets<T> {
    -    bs: T,
    -    full: T,
    -    finished: bool,
    -}
    -impl<T: Unsigned> Iterator for Subsets<T> {
    -    type Item = T;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        if self.finished {
    -            return None;
    -        }
    -        let res = Some(self.bs ^ self.full);
    -        if self.bs == T::zero() {
    -            self.finished = true;
    -        } else {
    -            self.bs -= T::one();
    -            self.bs &= self.full;
    -        }
    -        res
    -    }
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    use super::subsets;
    -    use itertools::Itertools;
    -    use test_case::test_case;
    -
    -    #[test_case(0 => vec![0])]
    -    #[test_case(1 => vec![0, 1])]
    -    #[test_case(2 => vec![0, 2])]
    -    #[test_case(3 => vec![0, 1, 2, 3])]
    -    #[test_case(4 => vec![0, 4])]
    -    #[test_case(5 => vec![0, 1, 4, 5])]
    -    #[test_case(6 => vec![0, 2, 4, 6])]
    -    #[test_case(7 => vec![0, 1, 2, 3, 4, 5, 6, 7])]
    -    #[test_case(8 => vec![0, 8])]
    -    #[test_case(9 => vec![0, 1, 8, 9])]
    -    #[test_case(10 => vec![0, 2, 8, 10])]
    -    #[test_case(11 => vec![0, 1, 2, 3, 8, 9, 10, 11])]
    -    #[test_case(12 => vec![0, 4, 8, 12])]
    -    #[test_case(13 => vec![0, 1, 4, 5, 8, 9, 12, 13])]
    -    #[test_case(14 => vec![0, 2, 4, 6, 8, 10, 12, 14])]
    -    #[test_case(15 => vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])]
    -    fn test_subsets(bs: u32) -> Vec<u32> {
    -        subsets(bs).collect_vec()
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/bitvec/lib.rs.html b/src/bitvec/lib.rs.html index 9d1e1e75..e73e0ab6 100644 --- a/src/bitvec/lib.rs.html +++ b/src/bitvec/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -570,40 +570,40 @@
     ///
     /// ```
     /// # use bitvec::BitVec;
    -/// let mut bv = BitVec::from_01str("0010010010");
    +/// let mut bv = BitVec::from_01str("0010010010");
     ///
     /// // 左シフト
     /// // NOTE: スライスや文字列でいうところの右に移動する感じになります。
     /// bv <<= 2;
    -/// assert_eq!(&bv, &BitVec::from_01str("0000100100"));
    +/// assert_eq!(&bv, &BitVec::from_01str("0000100100"));
     /// bv <<= 10;
    -/// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
    +/// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
     ///
     /// // 右シフト
     /// // NOTE: スライスや文字列でいうところの左に移動する感じになります。
    -/// bv = BitVec::from_01str("0010010010");
    +/// bv = BitVec::from_01str("0010010010");
     /// bv >>= 2;
    -/// assert_eq!(&bv, &BitVec::from_01str("1001001000"));
    +/// assert_eq!(&bv, &BitVec::from_01str("1001001000"));
     /// bv >>= 10;
    -/// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
    +/// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
     ///
     /// // OR 演算
     /// // NOTE: 複合代入しかありません。右辺は参照です。
    -/// bv = BitVec::from_01str("0000011111");
    -/// bv |= &BitVec::from_01str("0101010101");
    -/// assert_eq!(&bv, &BitVec::from_01str("0101011111"));
    +/// bv = BitVec::from_01str("0000011111");
    +/// bv |= &BitVec::from_01str("0101010101");
    +/// assert_eq!(&bv, &BitVec::from_01str("0101011111"));
     ///
     /// // AND 演算
     /// // NOTE: 複合代入しかありません。右辺は参照です。
    -/// bv = BitVec::from_01str("0000011111");
    -/// bv &= &BitVec::from_01str("0101010101");
    -/// assert_eq!(&bv, &BitVec::from_01str("0000010101"));
    +/// bv = BitVec::from_01str("0000011111");
    +/// bv &= &BitVec::from_01str("0101010101");
    +/// assert_eq!(&bv, &BitVec::from_01str("0000010101"));
     ///
     /// // XOR 演算
     /// // NOTE: 複合代入しかありません。右辺は参照です。
    -/// bv = BitVec::from_01str("0000011111");
    -/// bv ^= &BitVec::from_01str("0101010101");
    -/// assert_eq!(&bv, &BitVec::from_01str("0101001010"));
    +/// bv = BitVec::from_01str("0000011111");
    +/// bv ^= &BitVec::from_01str("0101010101");
    +/// assert_eq!(&bv, &BitVec::from_01str("0101001010"));
     /// ```
     #[derive(Clone, Hash, PartialEq, Eq)]
     pub struct BitVec {
    @@ -618,24 +618,24 @@
         /// ```
         /// # use bitvec::BitVec;
         /// let mut bv = BitVec::new(10);
    -    /// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
    +    /// assert_eq!(&bv, &BitVec::from_01str("0000000000"));
         /// ```
         pub fn new(len: usize) -> Self {
             Self::from_raw(vec![0; div_ceil(len, 64)], len)
         }
     
    -    /// "01" 文字列から構築します。
    +    /// "01" 文字列から構築します。
         ///
         /// # Panics
         ///
    -    /// '0', '1' 以外の文字があるときです。
    +    /// '0', '1' 以外の文字があるときです。
         ///
         ///
         /// # Example
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// assert_eq!(bv.test(0), false);
         /// assert_eq!(bv.test(1), true);
         /// assert_eq!(bv.test(2), false);
    @@ -643,9 +643,9 @@
         pub fn from_01str(s: &str) -> Self {
             s.chars()
                 .map(|c| match c {
    -                '0' => false,
    -                '1' => true,
    -                _ => panic!("{}", s),
    +                '0' => false,
    +                '1' => true,
    +                _ => panic!("{}", s),
                 })
                 .collect()
         }
    @@ -669,7 +669,7 @@
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// assert_eq!(bv.len(), 3);
         /// ```
         pub fn len(&self) -> usize {
    @@ -682,10 +682,10 @@
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// bv.push(false);
         /// bv.push(true);
    -    /// assert_eq!(&bv, &BitVec::from_01str("01001"));
    +    /// assert_eq!(&bv, &BitVec::from_01str("01001"));
         /// ```
         pub fn push(&mut self, x: bool) {
             let i = self.len;
    @@ -703,7 +703,7 @@
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// assert_eq!(bv.test(0), false);
         /// assert_eq!(bv.test(1), true);
         /// assert_eq!(bv.test(2), false);
    @@ -721,9 +721,9 @@
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// bv.set(2);
    -    /// assert_eq!(&bv, &BitVec::from_01str("011"));
    +    /// assert_eq!(&bv, &BitVec::from_01str("011"));
         /// ```
         pub fn set(&mut self, i: usize) {
             debug_assert!(i < self.len);
    @@ -738,9 +738,9 @@
         ///
         /// ```
         /// # use bitvec::BitVec;
    -    /// let mut bv = BitVec::from_01str("010");
    +    /// let mut bv = BitVec::from_01str("010");
         /// bv.unset(1);
    -    /// assert_eq!(&bv, &BitVec::from_01str("000"));
    +    /// assert_eq!(&bv, &BitVec::from_01str("000"));
         /// ```
         pub fn unset(&mut self, i: usize) {
             debug_assert!(i < self.len);
    @@ -753,7 +753,7 @@
         }
     
         /// ビットを順に [`bool`] を返すイテレータを作ります。
    -    pub fn iter(&self) -> Iter<'_> {
    +    pub fn iter(&self) -> Iter<'_> {
             Iter { bv: self, i: 0 }
         }
     
    @@ -763,11 +763,11 @@
     }
     
     /// ビットを順に [`bool`] を返すイテレータです。
    -pub struct Iter<'a> {
    -    bv: &'a BitVec,
    +pub struct Iter<'a> {
    +    bv: &'a BitVec,
         i: usize,
     }
    -impl<'a> Iterator for Iter<'a> {
    +impl<'a> Iterator for Iter<'a> {
         type Item = bool;
     
         fn next(&mut self) -> Option<bool> {
    @@ -809,22 +809,22 @@
             Self::from_raw(vec, len)
         }
     }
    -impl<'a> IntoIterator for &'a BitVec {
    -    type IntoIter = Iter<'a>;
    +impl<'a> IntoIterator for &'a BitVec {
    +    type IntoIter = Iter<'a>;
         type Item = bool;
     
    -    fn into_iter(self) -> Iter<'a> {
    +    fn into_iter(self) -> Iter<'a> {
             self.iter()
         }
     }
     impl Debug for BitVec {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        write!(f, "{}", self)
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        write!(f, "{}", self.to_string())
         }
     }
    -impl std::fmt::Display for BitVec {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        write!(f, "{}", self.format('1', '0'))
    +impl ToString for BitVec {
    +    fn to_string(&self) -> String {
    +        self.format('1', '0')
         }
     }
     
    @@ -856,7 +856,7 @@
         }
     }
     
    -macro_rules! impl_shifts {
    +macro_rules! impl_shifts {
         ($($t: ty,)*) => {$(
             impl ShlAssign<$t> for BitVec {
                 fn shl_assign(&mut self, other: $t) {
    @@ -899,7 +899,7 @@
             }
         )*}
     }
    -impl_shifts! {
    +impl_shifts! {
         u8, u16, u32, u64, u128, usize,
         i8, i16, i32, i64, i128, isize,
     }
    @@ -920,27 +920,27 @@
         use rand::SeedableRng;
         use std::iter::repeat_with;
     
    -    macro_rules! assert_eq_bs {
    +    macro_rules! assert_eq_bs {
             ($bv:expr, $slice:expr) => {
                 let bv: &BitVec = $bv;
                 let slice: &[bool] = $slice;
    -            assert_eq!(bv.len(), slice.len(), "different size",);
    +            assert_eq!(bv.len(), slice.len(), "different size",);
                 for i in 0..bv.len() {
                     assert_eq!(
                         bv.test(i),
                         slice[i],
    -                    "{} th bit differs;\n bv = {:?},\n slice = {}",
    +                    "{} th bit differs;\n bv = {:?},\n slice = {}",
                         i,
                         &bv,
                         slice
                             .iter()
    -                        .map(|&b| if b { '1' } else { '0' })
    +                        .map(|&b| if b { '1' } else { '0' })
                             .collect::<String>(),
                     );
                 }
                 let r = bv.len() % 64;
                 if r != 0 {
    -                assert_eq!(bv.vec.last().unwrap() >> r, 0, "nonzero");
    +                assert_eq!(bv.vec.last().unwrap() >> r, 0, "nonzero");
                 }
             };
         }
    diff --git a/src/bsgs/lib.rs.html b/src/bsgs/lib.rs.html
    index 3ee6cb2d..eea98370 100644
    --- a/src/bsgs/lib.rs.html
    +++ b/src/bsgs/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -270,7 +270,6 @@
     236
     237
     238
    -239
     
    //! Baby-step giant-step により、巡回群上の離散対数をします。
     //!
     //! # 使い方
    @@ -309,7 +308,7 @@
     //! * ちなみに位数の上界は、探索の打ち切りに用いています。
     //! * 群の演算は、モジュラス等が動的に与えられる可能性を考えて、型ではなくオブジェクトにしました。
     //! * たいてい ℤ / n ℤ
    -//!   の乗法群にしか使わない気がするのですが、それようのユーティルがうまく作れず……
    +//! の乗法群にしか使わない気がするのですが、それようのユーティルがうまく作れず……
     use std::collections::HashMap;
     use std::fmt::Debug;
     use std::fmt::Formatter;
    @@ -397,14 +396,13 @@
         }
     }
     
    -#[allow(clippy::missing_fields_in_debug)]
    -impl<T: Debug, Mul> Debug for Bsgs<T, Mul> {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
    -        f.debug_struct("Bsgs")
    -            .field("generator", &self.generator)
    -            .field("ord_upper_bound", &self.ord_upper_bound)
    -            .field("sqrt", &self.sqrt)
    -            .field("giant_step_inverse", &self.giant_step_inverse)
    +impl<T: Debug, Mul> Debug for Bsgs<T, Mul> {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
    +        f.debug_struct("Bsgs")
    +            .field("generator", &self.generator)
    +            .field("ord_upper_bound", &self.ord_upper_bound)
    +            .field("sqrt", &self.sqrt)
    +            .field("giant_step_inverse", &self.giant_step_inverse)
                 .finish()
         }
     }
    diff --git a/src/cht/lib.rs.html b/src/cht/lib.rs.html
    index 997b3c5c..e7ea68f6 100644
    --- a/src/cht/lib.rs.html
    +++ b/src/cht/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -636,8 +636,6 @@
     602
     603
     604
    -605
    -606
     
    //! CHT です。
     //!
     //! # TODO
    @@ -648,7 +646,7 @@
     //! - [`VecCht`] のカーソル管理もう少し上手にできないですかね
     //!
     //!
    -//! # WON'T DO
    +//! # WON'T DO
     //!
     //! - 凸探索付き平衡二分木を自作して、直線の式だけ管理すれば良いようにする
     //!   - 理由: 大変そう
    @@ -696,6 +694,8 @@
     use std::borrow::Borrow;
     use std::collections::BTreeSet;
     use std::fmt::Debug;
    +use std::i64::MAX;
    +use std::i64::MIN;
     use std::marker::PhantomData;
     use std::ops::Add;
     use std::ops::Mul;
    @@ -750,7 +750,7 @@
         }
     
         pub fn eval(&mut self, x: i64) -> i64 {
    -        assert!(!self.vec.is_empty(), "cannot eval an empty cht");
    +        assert!(!self.vec.is_empty(), "cannot eval an empty cht");
             while self
                 .vec
                 .get(self.current)
    @@ -771,7 +771,7 @@
             } else {
                 assert_eq!(
                     self.coeff_at_two, second,
    -                "added a expression with different `second` from the before.",
    +                "added a expression with different `second` from the before.",
                 )
             }
     
    @@ -789,7 +789,7 @@
     
             while let Some(seg) = self.vec.pop() {
                 let Min(x) = seg.min;
    -            if x == i64::MIN || line.eval(x) < seg.line.eval(x) {
    +            if x == MIN || line.eval(x) < seg.line.eval(x) {
                     self.vec.push(seg);
                     break;
                 }
    @@ -808,11 +808,11 @@
                     }
                 }
             }
    -        let min = Min(self.vec.last().map_or(i64::MIN, |seg| seg.max.0));
    +        let min = Min(self.vec.last().map_or(MIN, |seg| seg.max.0));
             self.vec.push(Segment {
                 line,
                 min,
    -            max: Max(i64::MAX),
    +            max: Max(MAX),
             });
         }
     }
    @@ -838,7 +838,7 @@
         }
     
         pub fn eval(&self, x: i64) -> i64 {
    -        assert!(!self.set.is_empty(), "cannot eval an empty cht");
    +        assert!(!self.set.is_empty(), "cannot eval an empty cht");
             C::negate_if_concave(self.set.range(Max(x)..).next().unwrap().line.eval(x))
                 + self.coeff_at_two * x * x
         }
    @@ -850,7 +850,7 @@
             } else {
                 assert_eq!(
                     self.coeff_at_two, second,
    -                "added a expression with different `second` from the before.",
    +                "added a expression with different `second` from the before.",
                 )
             }
     
    @@ -859,8 +859,8 @@
             let line = Line { p, q };
             if let Some(seg) = self.set.range(p..).next() {
                 let Min(x) = seg.min;
    -            if x == i64::MIN && seg.line.p == p && seg.line.q <= q
    -                || x != i64::MIN && line.eval(x) <= seg.line.eval(x)
    +            if x == MIN && seg.line.p == p && seg.line.q <= q
    +                || x != MIN && line.eval(x) <= seg.line.eval(x)
                 {
                     return;
                 }
    @@ -870,14 +870,14 @@
     
             while let Some(&seg) = self.set.range(..p).next_back() {
                 let Min(x) = seg.min;
    -            if x == i64::MIN || line.eval(x) < seg.line.eval(x) {
    +            if x == MIN || line.eval(x) < seg.line.eval(x) {
                     break;
                 }
                 self.set.remove(&seg);
             }
             while let Some(&seg) = self.set.range(p..).next() {
                 let Max(x) = seg.max;
    -            if x == i64::MAX || line.eval(x) < seg.line.eval(x) {
    +            if x == MAX || line.eval(x) < seg.line.eval(x) {
                     break;
                 }
                 self.set.remove(&seg);
    @@ -912,12 +912,8 @@
                     }
                 };
             }
    -        let min = Min(self
    -            .set
    -            .range(..p)
    -            .next_back()
    -            .map_or(i64::MIN, |seg| seg.max.0));
    -        let max = Max(self.set.range(p..).next().map_or(i64::MAX, |seg| seg.min.0));
    +        let min = Min(self.set.range(..p).next_back().map_or(MIN, |seg| seg.max.0));
    +        let max = Max(self.set.range(p..).next().map_or(MAX, |seg| seg.min.0));
             if min.0 < max.0 {
                 self.set.insert(Segment { line, min, max });
             }
    @@ -1102,7 +1098,7 @@
             let mut input_max;
             let mut cht;
             let mut brute;
    -        macro_rules! insert {
    +        macro_rules! insert {
                 ($q:expr) => {
                     let q: Quadratic = $q;
     
    @@ -1111,21 +1107,21 @@
                     let x_range = -test_max..=test_max;
     
                     // mutate
    -                eprintln!("insert: {:?}", q);
    +                eprintln!("insert: {:?}", q);
                     cht.add(q);
                     brute.push(q);
     
                     // eval
                     let result = cht.multieval(x_range.clone());
                     let expected = multieval(&brute, x_range.clone());
    -                assert_eq!(result, expected, "eval");
    +                assert_eq!(result, expected, "eval");
                 };
             }
     
             let mut rng = StdRng::seed_from_u64(42);
             for &im in &[0, 1, 3, 3, 5, 5, 10, 10, 100, 100] {
                 input_max = im;
    -            eprintln!("Initialize");
    +            eprintln!("Initialize");
                 cht = BTreeCht::<Convex>::new();
                 brute = Vec::new();
                 let second = rng.gen_range(-input_max..=input_max);
    @@ -1151,7 +1147,7 @@
             let mut input_max;
             let mut cht;
             let mut brute;
    -        macro_rules! insert {
    +        macro_rules! insert {
                 ($q:expr) => {
                     let q: Quadratic = $q;
     
    @@ -1160,21 +1156,21 @@
                     let x_range = -test_max..=test_max;
     
                     // mutate
    -                eprintln!("insert: {:?}", q);
    +                eprintln!("insert: {:?}", q);
                     cht.add(q);
                     brute.push(q);
     
                     // eval
                     let result = cht.multieval(x_range.clone());
                     let expected = multieval(&brute, x_range.clone());
    -                assert_eq!(result, expected, "eval");
    +                assert_eq!(result, expected, "eval");
                 };
             }
     
             let mut rng = StdRng::seed_from_u64(42);
             for &im in &[0, 1, 3, 3, 5, 5, 10, 10, 100, 100] {
                 input_max = im;
    -            eprintln!("Initialize");
    +            eprintln!("Initialize");
                 cht = BTreeCht::<Concave>::new();
                 brute = Vec::new();
                 let second = rng.gen_range(-input_max..=input_max);
    @@ -1200,7 +1196,7 @@
             let mut input_max;
             let mut cht;
             let mut brute;
    -        macro_rules! insert {
    +        macro_rules! insert {
                 ($q:expr) => {
                     let q: Quadratic = $q;
     
    @@ -1215,14 +1211,14 @@
                     // eval
                     let result = cht.multieval(x_range.clone());
                     let expected = multieval(&brute, x_range.clone());
    -                assert_eq!(result, expected, "eval");
    +                assert_eq!(result, expected, "eval");
                 };
             }
     
             let mut rng = StdRng::seed_from_u64(42);
             for &im in &[0, 1, 3, 3, 5, 5, 10, 10, 100, 100] {
                 input_max = im;
    -            eprintln!("Initialize");
    +            eprintln!("Initialize");
                 cht = VecCht::<Convex>::new();
                 brute = Vec::new();
                 let second = rng.gen_range(-input_max..=input_max);
    diff --git a/src/cipolla/lib.rs.html b/src/cipolla/lib.rs.html
    index e619c2a1..14f64af1 100644
    --- a/src/cipolla/lib.rs.html
    +++ b/src/cipolla/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -214,7 +214,7 @@
         const TWO: Self;
     }
     
    -macro_rules! impl_unsigned {
    +macro_rules! impl_unsigned {
         ($($T:ty),+) => {$(
             impl Unsigned for $T {
                 const ZERO: Self = 0;
    @@ -223,7 +223,7 @@
             }
         )+}
     }
    -impl_unsigned! {u8, u16, u32, u64, u128, usize}
    +impl_unsigned! {u8, u16, u32, u64, u128, usize}
     
     #[cfg(test)]
     mod tests {
    diff --git a/src/cmpmore/lib.rs.html b/src/cmpmore/lib.rs.html
    deleted file mode 100644
    index 5fe4714a..00000000
    --- a/src/cmpmore/lib.rs.html
    +++ /dev/null
    @@ -1,243 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -
    //! Utility `change_{min,max}`.
    -
    -/// If `lhs` is larger than `rhs`, override `lhs` by `rhs`.
    -///
    -/// # Examples
    -///
    -/// ```
    -/// # use cmpmore::change_min;
    -/// let mut x: i32 = 3;
    -/// change_min(&mut x, 2);
    -/// assert_eq!(x, 2);
    -/// ```
    -pub fn change_min<T: PartialOrd>(lhs: &mut T, rhs: T) {
    -    if *lhs > rhs {
    -        *lhs = rhs;
    -    }
    -}
    -
    -/// If `lhs` is smaller than `rhs`, override `lhs` by `rhs`.
    -///
    -/// # Examples
    -///
    -/// ```
    -/// # use cmpmore::change_max;
    -/// let mut x: i32 = 3;
    -/// change_max(&mut x, 4);
    -/// assert_eq!(x, 4);
    -/// ```
    -pub fn change_max<T: PartialOrd>(lhs: &mut T, rhs: T) {
    -    if *lhs < rhs {
    -        *lhs = rhs;
    -    }
    -}
    -
    -/// Macro version of [`change_min()`]. This is useful to avoid borrow checkers.
    -///
    -/// # Examples
    -///
    -/// ```
    -/// # use cmpmore::change_min;
    -/// let mut a = [3, 2];
    -/// change_min!(&mut a[0], a[1]);
    -/// assert_eq!(a, [2, 2]);
    -/// ```
    -#[macro_export]
    -macro_rules! change_min {
    -    ($lhs:expr, $rhs:expr) => {
    -        let rhs = $rhs;
    -        let lhs = $lhs;
    -        $crate::change_min(lhs, rhs);
    -    };
    -}
    -
    -/// Macro version of [`change_max()`]. This is useful to avoid borrow checkers.
    -///
    -/// # Examples
    -///
    -/// ```
    -/// # use cmpmore::change_max;
    -/// let mut a = [3, 4];
    -/// change_max!(&mut a[0], a[1]);
    -/// assert_eq!(a, [4, 4]);
    -/// ```
    -#[macro_export]
    -macro_rules! change_max {
    -    ($lhs:expr, $rhs:expr) => {
    -        let rhs = $rhs;
    -        let lhs = $lhs;
    -        $crate::change_max(lhs, rhs);
    -    };
    -}
    -
    -/// Provide method versions of [`change_min()`], [`change_max()`]
    -pub trait CmpMore: PartialOrd + Sized {
    -    /// If `self` is larger than `rhs`, override `self` by `rhs`.
    -    ///
    -    /// # Examples
    -    ///
    -    /// ```
    -    /// # use cmpmore::CmpMore;
    -    /// let mut x: i32 = 3;
    -    /// x.change_min(2);
    -    /// assert_eq!(x, 2);
    -    /// ```
    -    fn change_min(&mut self, rhs: Self) {
    -        change_min(self, rhs)
    -    }
    -
    -    /// If `self` is smaller than `rhs`, override `self` by `rhs`.
    -    ///
    -    /// # Examples
    -    ///
    -    /// ```
    -    /// # use cmpmore::CmpMore;
    -    /// let mut x: i32 = 3;
    -    /// x.change_max(4);
    -    /// assert_eq!(x, 4);
    -    /// ```
    -    fn change_max(&mut self, rhs: Self) {
    -        change_max(self, rhs)
    -    }
    -}
    -
    -impl<T: PartialOrd + Sized> CmpMore for T {}
    -
    \ No newline at end of file diff --git a/src/convex_hull/lib.rs.html b/src/convex_hull/lib.rs.html index 62bc2314..9646add4 100644 --- a/src/convex_hull/lib.rs.html +++ b/src/convex_hull/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -310,8 +310,8 @@
         } else {
             let n = a.len();
             let mut d = 0;
    -        let mut ans_i = usize::MAX;
    -        let mut ans_j = usize::MAX;
    +        let mut ans_i = std::usize::MAX;
    +        let mut ans_j = std::usize::MAX;
             let min_position = (0..n).min_by_key(|&i| a[i][0]).unwrap();
             let max_position = (0..n).max_by_key(|&i| a[i][0]).unwrap();
             let start_i = min_position.min(max_position);
    @@ -377,7 +377,7 @@
                 .take(n)
                 .collect::<Vec<_>>();
     
    -            println!("Point group size: {:?}", a.len());
    +            println!("Point group size: {:?}", a.len());
                 let result = convex_hull(&a);
     
                 assert!(is_convex(&result));
    @@ -420,8 +420,8 @@
                 .take(n)
                 .collect::<Vec<_>>();
     
    -            println!("Point group: {:?}", &a);
    -            println!("Point group size: {:?}", a.len());
    +            println!("Point group: {:?}", &a);
    +            println!("Point group size: {:?}", a.len());
                 let (d, [p, q]) = caliper(&a);
                 assert_eq!(d, sqmag(p, q));
                 assert_eq!(d, brute(&a));
    diff --git a/src/dfs/lib.rs.html b/src/dfs/lib.rs.html
    index 8e7bf049..c08d526f 100644
    --- a/src/dfs/lib.rs.html
    +++ b/src/dfs/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -107,7 +107,7 @@
             for test_id in 0..100 {
                 let n = rng.sample(LogUniform(2..3000));
                 let m = rng.sample(LogUniform(n - 1..(n * (n - 1) / 2 + 1).min(3000)));
    -            println!("Test {}, n = {}, m = {}", test_id, n, m);
    +            println!("Test {}, n = {}, m = {}", test_id, n, m);
                 let g = rng.sample(SimpleGraph(n, m));
                 let s = rng.gen_range(0..n);
     
    diff --git a/src/dijkstra_radix_heap/lib.rs.html b/src/dijkstra_radix_heap/lib.rs.html
    index 44ce3981..b2ef65f9 100644
    --- a/src/dijkstra_radix_heap/lib.rs.html
    +++ b/src/dijkstra_radix_heap/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -152,7 +152,7 @@
     #[deprecated]
     /// 一点からの距離配列を作ります。
     pub fn calc_dist(s: usize, g: &[Vec<(usize, u32)>]) -> Vec<u32> {
    -    let mut dist = vec![u32::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
         dist[s] = 0;
         let mut heap = radix_heap::RadixHeap::new();
         heap.push(0, s);
    @@ -172,8 +172,8 @@
     
     /// 一点からの距離配列を作ります。
     pub fn calc_dist_restore(s: usize, g: &[Vec<(usize, u32)>]) -> (Vec<u32>, Vec<usize>) {
    -    let mut dist = vec![u32::MAX; g.len()];
    -    let mut prv = vec![usize::MAX; g.len()];
    +    let mut dist = vec![std::u32::MAX; g.len()];
    +    let mut prv = vec![std::usize::MAX; g.len()];
         prv[s] = s;
         dist[s] = 0;
         let mut heap = radix_heap::RadixHeap::new();
    @@ -206,7 +206,7 @@
             for test_id in 0..100 {
                 let n = rng.sample(LogUniform(2..1000));
                 let m = rng.sample(LogUniform(n - 1..(n * (n - 1) / 2 + 1).min(1000)));
    -            println!("Test {}, n = {}, m = {}", test_id, n, m);
    +            println!("Test {}, n = {}, m = {}", test_id, n, m);
                 // 重みなしの木を生成して……
                 let g = rng.sample(SimpleDigraph(n, m));
                 // 重みをつけます。
    @@ -251,8 +251,8 @@
             prv.iter().copied().enumerate().for_each(|(x, p)| {
                 let expected = if x == p {
                     0
    -            } else if p == usize::MAX {
    -                u32::MAX
    +            } else if p == std::usize::MAX {
    +                std::u32::MAX
                 } else {
                     dist[p] + edges.get(&(p, x)).unwrap()
                 };
    diff --git a/src/dinic/lib.rs.html b/src/dinic/lib.rs.html
    index 3a960608..b62563d3 100644
    --- a/src/dinic/lib.rs.html
    +++ b/src/dinic/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1300,7 +1300,7 @@
         fn infinity() -> Self;
     }
     
    -/// A struct to execute Dinic's algorithm.
    +/// A struct to execute Dinic's algorithm.
     ///
     /// [See the module level documentation.](self)
     #[derive(Clone, PartialEq)]
    @@ -1362,15 +1362,15 @@
         pub fn add_edge(&mut self, from: usize, to: usize, cap: T) -> EdgeKey {
             assert!(
                 from < self.res.len() || to < self.res.len(),
    -            "`Dinic::add_edge` is called with from = {}, to = {}, but the number of verticies is \
    -             {}",
    +            "`Dinic::add_edge` is called with from = {}, to = {}, but the number of verticies is \
    +             {}",
                 from,
                 to,
                 self.res.len()
             );
             assert!(
                 T::zero() <= cap,
    -            "`Dinic::add_edge` is called with a negative `cap`"
    +            "`Dinic::add_edge` is called with a negative `cap`"
             );
             let size_from = self.res[from].len();
             let size_to = if from == to { self.res[to].len() + 1 } else { self.res[to].len() };
    @@ -1425,7 +1425,7 @@
         pub fn flow(&mut self, s: usize, t: usize) -> T {
             assert!(
                 s < self.res.len() && t < self.res.len(),
    -            "`Dinic::flow` is called with `s` = {}, `t` = {}, while the number of vertices is {}",
    +            "`Dinic::flow` is called with `s` = {}, `t` = {}, while the number of vertices is {}",
                 s,
                 t,
                 self.res.len()
    @@ -1466,8 +1466,8 @@
         pub fn flow_with_limit(&mut self, s: usize, t: usize, flow_with_limit: T) -> T {
             assert!(
                 s < self.res.len() && t < self.res.len(),
    -            "`Dinic::flow_with_limit` is called with `s` = {}, `t` = {}, while the number of \
    -             vertices is {}",
    +            "`Dinic::flow_with_limit` is called with `s` = {}, `t` = {}, while the number of \
    +             vertices is {}",
                 s,
                 t,
                 self.res.len()
    @@ -1537,7 +1537,7 @@
             let EdgeKey(edge_key) = edge_key;
             assert!(
                 edge_key < self.pos.len(),
    -            "Called `Dinic::get_edge` with `edge_key` = {:?}, but the length of `Dinic::pos` is {}",
    +            "Called `Dinic::get_edge` with `edge_key` = {:?}, but the length of `Dinic::pos` is {}",
                 edge_key,
                 self.pos.len()
             );
    @@ -1734,7 +1734,7 @@
         /// let flow = dinic.flow(0, 5);
         /// assert_eq!(flow, 2);
         ///
    -    /// # // Actually, the "parallel" ones are the matching edges.
    +    /// # // Actually, the "parallel" ones are the matching edges.
         /// # assert_eq!(dinic.get_edge(edge_2).flow, 1);
         /// # assert_eq!(dinic.get_edge(edge_3).flow, 0);
         /// # assert_eq!(dinic.get_edge(edge_4).flow, 0);
    @@ -1746,7 +1746,7 @@
         /// and diminish the capacity of this matching edge to `0`, so that the maching is of size `1`
         /// and the `dinic` is also a feasible flow of value `1`.
         ///
    -    /// Now call [`Dinic::flow`] again with the same source and the same sink. So new matching will be of size `2` shaping like "X". So [`Dinic::flow`] will return the delta `1 = 2 - 1` of the flow.
    +    /// Now call [`Dinic::flow`] again with the same source and the same sink. So new matching will be of size `2` shaping like "X". So [`Dinic::flow`] will return the delta `1 = 2 - 1` of the flow.
         ///
         /// ```
         /// # use dinic::Dinic;
    @@ -1764,7 +1764,7 @@
         /// # let flow = dinic.flow(0, 5);
         /// # assert_eq!(flow, 2);
         /// #
    -    /// # // Actually, the "parallel" ones are the matching edges.
    +    /// # // Actually, the "parallel" ones are the matching edges.
         /// # assert_eq!(dinic.get_edge(edge_2).flow, 1);
         /// # assert_eq!(dinic.get_edge(edge_3).flow, 0);
         /// # assert_eq!(dinic.get_edge(edge_4).flow, 0);
    @@ -1789,13 +1789,13 @@
             let EdgeKey(edge_key) = edge_key;
             assert!(
                 edge_key < self.pos.len(),
    -            "Called `Dinic::get_edge` with `edge_key` = {:?}, but the length of `Dinic::pos` is {}",
    +            "Called `Dinic::get_edge` with `edge_key` = {:?}, but the length of `Dinic::pos` is {}",
                 edge_key,
                 self.pos.len()
             );
             assert!(
                 T::zero() <= new_flow && new_flow <= new_cap,
    -            "Called `Dinic::change_edge` by new_flow = {:?}, new_cap = {:?}",
    +            "Called `Dinic::change_edge` by new_flow = {:?}, new_cap = {:?}",
                 new_flow,
                 new_cap
             );
    @@ -1808,8 +1808,8 @@
         }
     }
     impl<T: Value> Debug for Dinic<T> {
    -    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
    -        write!(w, "{:?}", self.get_network())
    +    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
    +        write!(w, "{:?}", self.get_network())
         }
     }
     
    @@ -1826,7 +1826,7 @@
         pub flow: T,
     }
     impl<T: Debug> Debug for Edge<T> {
    -    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
             let Self {
                 from,
                 to,
    @@ -1836,7 +1836,7 @@
             write!(
                 w,
                 // \x1b[1m: bold, \1b[m: cancel
    -            "{}->{}(\x1b[01m{:?}\x1b[m/\x1b[01m{:?}\x1b[m)",
    +            "{}->{}(\x1b[01m{:?}\x1b[m/\x1b[01m{:?}\x1b[m)",
                 from, to, flow, cap,
             )
         }
    @@ -1860,12 +1860,12 @@
     
         loop {
             // calculate labels
    -        let mut label = vec![u32::MAX; res.len()];
    +        let mut label = vec![std::u32::MAX; res.len()];
             label[s] = 0;
             let mut queue = VecDeque::from(vec![s]);
             while let Some(from) = queue.pop_front() {
                 for &__ResidualEdge { to, cap, .. } in &res[from] {
    -                if cap == T::zero() || label[to] != u32::MAX {
    +                if cap == T::zero() || label[to] != std::u32::MAX {
                         continue;
                     }
                     label[to] = label[from] + 1;
    @@ -1873,7 +1873,7 @@
                 }
             }
     
    -        if label[t] == u32::MAX {
    +        if label[t] == std::u32::MAX {
                 // saturated
                 return flow;
             }
    @@ -1883,10 +1883,10 @@
             cur[t] = res[t].len();
     
             // find augmenting paths
    -        'PRIMAL_STEP: loop {
    +        'PRIMAL_STEP: loop {
                 let mut path = Vec::<(usize, usize)>::new();
                 // depth-first search
    -            'FIND_AUGUMENTING_PATH: loop {
    +            'FIND_AUGUMENTING_PATH: loop {
                     let from = path.last().map_or(s, |&(x, i)| res[x][i].to);
                     loop {
                         if let Some(&__ResidualEdge { to, cap, .. }) = res[from].get(cur[from]) {
    @@ -1897,9 +1897,9 @@
                                 break;
                             }
                         } else if from == s {
    -                        break 'PRIMAL_STEP;
    +                        break 'PRIMAL_STEP;
                         } else if from == t {
    -                        break 'FIND_AUGUMENTING_PATH;
    +                        break 'FIND_AUGUMENTING_PATH;
                         } else {
                             path.pop().unwrap();
                             let from = path.last().map_or(s, |&(x, i)| res[x][i].to);
    @@ -1929,20 +1929,20 @@
         }
     }
     
    -macro_rules! impl_value {
    +macro_rules! impl_value {
         ($($T:ident),* $(,)?) => {$(
             impl Value for $T {
                 fn zero() -> Self {
                     0
                 }
                 fn infinity() -> Self {
    -                $T::MAX
    +                std::$T::MAX
                 }
             }
         )*}
     }
     
    -impl_value! {
    +impl_value! {
         u8, u16, u32, u64, u128, usize,
         i8, i16, i32, i64, i128, isize,
     }
    @@ -1975,11 +1975,11 @@
         ////////////////////////////////////////////////////////////////////////////////
     
         #[allow(clippy::unused_unit)]
    -    #[test_case(2, 1, 10; "trivially small graph")]
    -    #[test_case(5, 8, 1000; "small sparse graph")]
    -    #[test_case(10, 8, 100; "very sparse graph")]
    -    #[test_case(10, 20, 100; "sparse graph")]
    -    #[test_case(10, 80, 50; "dense graph")]
    +    #[test_case(2, 1, 10; "trivially small graph")]
    +    #[test_case(5, 8, 1000; "small sparse graph")]
    +    #[test_case(10, 8, 100; "very sparse graph")]
    +    #[test_case(10, 20, 100; "sparse graph")]
    +    #[test_case(10, 80, 50; "dense graph")]
         fn test_max_flow_min_cut(n: usize, m: usize, iter: usize) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..iter {
    @@ -1998,8 +1998,8 @@
         }
     
         #[allow(clippy::unused_unit)]
    -    #[test_case(10; "small hack")]
    -    #[test_case(100; "large hack")]
    +    #[test_case(10; "small hack")]
    +    #[test_case(100; "large hack")]
         fn test_hack(n: usize) {
             let (s, t, network) = generate_hack(n);
             test_max_flow_min_cut_impl(n, s, t, &network);
    @@ -2026,10 +2026,10 @@
             let min_cut = dinic.min_cut(s);
     
             // print
    -        println!("Validating dinic..");
    -        println!("flow = {}", flow);
    -        println!("min_cut = {:?}", min_cut);
    -        println!("s = {}, t = {}", s, t);
    +        println!("Validating dinic..");
    +        println!("flow = {}", flow);
    +        println!("min_cut = {:?}", min_cut);
    +        println!("s = {}, t = {}", s, t);
             println!();
     
             // cut is feasible
    @@ -2089,13 +2089,13 @@
         }
     
         ////////////////////////////////////////////////////////////////////////////////
    -    // Kőnig's theorem test
    +    // Kőnig's theorem test
         ////////////////////////////////////////////////////////////////////////////////
     
         #[allow(clippy::unused_unit)]
    -    #[test_case(3, 5, 10, 10; "small graph")]
    -    #[test_case(5, 8, 10, 10; "medium graph")]
    -    #[test_case(10, 20, 10, 10; "large graph")]
    +    #[test_case(3, 5, 10, 10; "small graph")]
    +    #[test_case(5, 8, 10, 10; "medium graph")]
    +    #[test_case(10, 20, 10, 10; "large graph")]
         fn test_konig(n: usize, m: usize, iter: usize, change_edge_count: usize) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..iter {
    @@ -2113,7 +2113,7 @@
                     .map(|(from, to, cap)| dinic.add_edge(from, to, cap))
                     .collect::<Vec<_>>();
                 let mut cnt = dinic.flow(s, t);
    -            println!("Initial flow = {}", cnt);
    +            println!("Initial flow = {}", cnt);
                 validate_konig(n, cnt, &dinic, &edge_keys);
     
                 for _ in 0..change_edge_count {
    @@ -2126,7 +2126,7 @@
                         ..
                     } = dinic.get_edge(edge_key);
                     if cap == 1 {
    -                    println!("Forbid ({}, {})", from, to);
    +                    println!("Forbid ({}, {})", from, to);
                         // Forbid this match.
                         dinic.change_edge(edge_key, 0, 0);
                         if flow == 1 {
    @@ -2135,7 +2135,7 @@
                             cnt -= 1;
                         }
                     } else if cap == 0 {
    -                    println!("Remove the ban of ({}, {})", from, to);
    +                    println!("Remove the ban of ({}, {})", from, to);
                         // Remove the ban of this edge.
                         dinic.change_edge(edge_key, 1, 0);
                     }
    @@ -2148,14 +2148,14 @@
         fn validate_konig(n: usize, cnt: u32, dinic: &Dinic<u32>, edge_keys: &[EdgeKey]) {
             let s = 2 * n;
     
    -        println!("dinic: {:?}", &dinic);
    -        println!("dinic:");
    +        println!("dinic: {:?}", &dinic);
    +        println!("dinic:");
             dinic
                 .get_network()
                 .iter()
                 .enumerate()
    -            .for_each(|(i, v)| println!("{} {:?}", i, &v));
    -        println!("n = {}, cnt = {}", n, cnt);
    +            .for_each(|(i, v)| println!("{} {:?}", i, &v));
    +        println!("n = {}, cnt = {}", n, cnt);
             let edges = edge_keys
                 .iter()
                 .map(|&edge_key| dinic.get_edge(edge_key))
    @@ -2164,7 +2164,7 @@
                 })
                 .map(|Edge { from, to, .. }| (from, to))
                 .collect::<Vec<_>>();
    -        println!("edges = {:?}", &edges);
    +        println!("edges = {:?}", &edges);
     
             // matching is feasible
             let matching = edge_keys
    @@ -2175,7 +2175,7 @@
                 })
                 .map(|edge| [edge.from, edge.to])
                 .collect::<Vec<_>>();
    -        println!("matching = {} ({:?})", matching.len(), &matching);
    +        println!("matching = {} ({:?})", matching.len(), &matching);
             assert_eq!(matching.len() as u32, cnt);
             let mut ckd = vec![false; 2 * n];
             matching.iter().flatten().for_each(|&x| {
    @@ -2189,7 +2189,7 @@
             max_stable_set[n..].iter_mut().for_each(|x| *x = !*x);
             let max_stable_set_size = max_stable_set.iter().filter(|&&b| b).count();
             println!(
    -            "max_stable_set = {} ({:?})",
    +            "max_stable_set = {} ({:?})",
                 max_stable_set_size, &max_stable_set
             );
             for &(from, to) in &edges {
    diff --git a/src/dual_segtree/lib.rs.html b/src/dual_segtree/lib.rs.html
    index 5c2194ad..d2c2516e 100644
    --- a/src/dual_segtree/lib.rs.html
    +++ b/src/dual_segtree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -564,7 +564,7 @@
     }
     // フォーマット
     impl<O: Ops> Debug for DualSegtree<O> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             self.silent_collect().fmt(f)
         }
     }
    @@ -592,24 +592,24 @@
     
     fn dual_segtree_index_out_of_range_fail(index: usize, len: usize) -> ! {
         panic!(
    -        "index {} out of range for dual segtree of length {}",
    +        "index {} out of range for dual segtree of length {}",
             index, len
         );
     }
     fn dual_segtree_end_index_len_fail(index: usize, len: usize) -> ! {
         panic!(
    -        "range end index {} out of range for dual segtree of length {}",
    +        "range end index {} out of range for dual segtree of length {}",
             index, len
         );
     }
     fn dual_segtree_index_order_fail(start: usize, end: usize) -> ! {
    -    panic!("dual segtree index starts at {} but ends at {}", start, end);
    +    panic!("dual segtree index starts at {} but ends at {}", start, end);
     }
     fn slice_start_index_overflow_fail() -> ! {
    -    panic!("attempted to index slice from after maximum usize");
    +    panic!("attempted to index slice from after maximum usize");
     }
     fn slice_end_index_overflow_fail() -> ! {
    -    panic!("attempted to index slice up to maximum usize");
    +    panic!("attempted to index slice up to maximum usize");
     }
     
     ////////////////////////////////////////////////////////////////////////////////
    @@ -680,7 +680,7 @@
                 }
             }
             let mut rng = StdRng::seed_from_u64(42);
    -        let new_value = |rng: &mut StdRng| rng.gen_range('a'..='z').to_string();
    +        let new_value = |rng: &mut StdRng| rng.gen_range('a'..='z').to_string();
             for _ in 0..200 {
                 let n = rng.gen_range(1..=50);
                 let vec = repeat_with(|| new_value(&mut rng))
    diff --git a/src/elim/lib.rs.html b/src/elim/lib.rs.html
    index 3f122cf8..1ddc3968 100644
    --- a/src/elim/lib.rs.html
    +++ b/src/elim/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/erato/converters.rs.html b/src/erato/converters.rs.html
    index a9d746b7..fb7589d5 100644
    --- a/src/erato/converters.rs.html
    +++ b/src/erato/converters.rs.html
    @@ -1,4 +1,4 @@
    -converters.rs - sourceconverters.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -168,8 +168,8 @@
             }
         }
     }
    -impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByTrialDivision<'a, T> {}
    -impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByLookup<'a, T> {}
    +impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByTrialDivision<'a, T> {}
    +impl<'a, T: Int> PrimeFactors<T> for PrimeFactorsByLookup<'a, T> {}
     
     /// An iterator returned by [`PrimeFactors::unique`]
     pub struct Unique<T: Int, P: PrimeFactors<T>> {
    diff --git a/src/erato/int.rs.html b/src/erato/int.rs.html
    index 9bff3589..f8fb2825 100644
    --- a/src/erato/int.rs.html
    +++ b/src/erato/int.rs.html
    @@ -1,4 +1,4 @@
    -int.rs - sourceint.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -137,7 +137,7 @@
         fn from_usize(src: usize) -> Self;
     }
     
    -macro_rules! impl_int {
    +macro_rules! impl_int {
         ($($t:ty),* $(,)?) => {$(
             impl Int for $t {
                 fn zero() -> Self {
    @@ -158,7 +158,7 @@
             }
         )*}
     }
    -impl_int! {
    +impl_int! {
         usize, u8, u16, u32, u64, u128,
         isize, i8, i16, i32, i64, i128,
     }
    diff --git a/src/erato/lib.rs.html b/src/erato/lib.rs.html
    index 3ed49dfe..b0a657e6 100644
    --- a/src/erato/lib.rs.html
    +++ b/src/erato/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -124,7 +124,7 @@
     //! # Difference between [`Sieve`] and [`LpdSieve`]
     //!
     //! [`Sieve`] is an ordinary sieve of eratosthenes, which is constructed in O ( n lg lg n ) time,
    -//! while [`LpdSieve`] is a table of "least prime divisors'.
    +//! while [`LpdSieve`] is a table of "least prime divisors'.
     //!
     //! Least prime divisors will accelerate prime factorization, but it takes O ( n lg n ) time to
     //! construct it. Furthermore, it requires a sieve to constructed to the length n + 1, while the
    diff --git a/src/erato/lpd_sieve.rs.html b/src/erato/lpd_sieve.rs.html
    index 5d2288bc..e0cb8164 100644
    --- a/src/erato/lpd_sieve.rs.html
    +++ b/src/erato/lpd_sieve.rs.html
    @@ -1,4 +1,4 @@
    -lpd_sieve.rs - sourcelpd_sieve.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -275,6 +275,7 @@
     241
     242
     243
    +244
     
    use super::sieve_base::PrimeFactorsByLookup;
     use super::sieve_base::PrimeNumbers;
     use super::sieve_kind;
    @@ -288,7 +289,8 @@
     /// The complexity of algorithms are like this, but it takes extra time to grow itself implicitly.
     ///
     /// - Construction: O ( n lg n )
    -/// - Prime factorization: O ( ω( n ) ), where ω( n ) is the number of prime divisors, with multiple divisors counted repeatedly.
    +/// - Prime factorization: O ( ω( n ) ), where ω( n ) is the number of prime divisors, with
    +/// multiple divisors counted repeatedly.
     #[derive(Default, Debug, Clone, PartialEq)]
     pub struct LpdSieve {
         base: SieveBase<sieve_kind::Usize>,
    diff --git a/src/erato/sieve.rs.html b/src/erato/sieve.rs.html
    index 64ec5eb3..51cad410 100644
    --- a/src/erato/sieve.rs.html
    +++ b/src/erato/sieve.rs.html
    @@ -1,4 +1,4 @@
    -sieve.rs - sourcesieve.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -256,6 +256,7 @@
     222
     223
     224
    +225
     
    use super::sieve_base::PrimeFactorsByTrialDivision;
     use super::sieve_base::PrimeNumbers;
     use super::sieve_kind;
    @@ -269,7 +270,8 @@
     /// The complexity of algorithms are like this, but it takes extra time to grow itself implicitly.
     ///
     /// - Construction: Θ ( n / lg lg n )
    -/// - Prime factorization: Θ ( π ( √n ) ), where π ( n ) is the number of prime numbers less than n.
    +/// - Prime factorization: Θ ( π ( √n ) ), where π ( n ) is the number of prime numbers less than
    +/// n.
     #[derive(Default, Debug, Clone, PartialEq)]
     pub struct Sieve {
         base: SieveBase<sieve_kind::Boolean>,
    diff --git a/src/erato/sieve_base.rs.html b/src/erato/sieve_base.rs.html
    index 3498a9c5..e44cc309 100644
    --- a/src/erato/sieve_base.rs.html
    +++ b/src/erato/sieve_base.rs.html
    @@ -1,4 +1,4 @@
    -sieve_base.rs - sourcesieve_base.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -311,19 +311,19 @@
     }
     
     /// An iterator to generate all the prime numbers, constructed by [`crate::Sieve::prime_numbers`].
    -pub struct PrimeNumbers<'a, S: SieveKind, T: Int> {
    -    sieve: &'a mut SieveBase<S>,
    +pub struct PrimeNumbers<'a, S: SieveKind, T: Int> {
    +    sieve: &'a mut SieveBase<S>,
         index: usize,
         _marker: PhantomData<T>,
     }
     
     /// See the document of [`crate::Sieve::prime_factors`]
    -pub struct PrimeFactorsByTrialDivision<'a, T: Int> {
    -    prime_numbers: PrimeNumbers<'a, sieve_kind::Boolean, T>,
    +pub struct PrimeFactorsByTrialDivision<'a, T: Int> {
    +    prime_numbers: PrimeNumbers<'a, sieve_kind::Boolean, T>,
         p: T,
         n: T,
     }
    -impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T> {
    +impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T> {
         type Item = T;
     
         fn next(&mut self) -> Option<Self::Item> {
    @@ -338,7 +338,7 @@
             Some(p)
         }
     }
    -impl<T: Int> PrimeFactorsByTrialDivision<'_, T> {
    +impl<T: Int> PrimeFactorsByTrialDivision<'_, T> {
         pub fn unique(self) -> Unique<T, Self> {
             PrimeFactors::unique(self)
         }
    @@ -347,7 +347,7 @@
             PrimeFactors::rle(self)
         }
     }
    -impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T> {
    +impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T> {
         type Item = T;
     
         fn next(&mut self) -> Option<Self::Item> {
    @@ -373,8 +373,8 @@
     }
     
     /// See the document of [`crate::LpdSieve::prime_factors`]
    -pub struct PrimeFactorsByLookup<'a, T: Int> {
    -    sieve: &'a mut SieveBase<sieve_kind::Usize>,
    +pub struct PrimeFactorsByLookup<'a, T: Int> {
    +    sieve: &'a mut SieveBase<sieve_kind::Usize>,
         n: T,
     }
     impl SieveBase<sieve_kind::Usize> {
    @@ -391,7 +391,7 @@
             T::from_usize(self.sieve[n])
         }
     }
    -impl<T: Int> PrimeFactorsByLookup<'_, T> {
    +impl<T: Int> PrimeFactorsByLookup<'_, T> {
         /// Forward [`crate::PrimeFactors::unique`].
         pub fn unique(self) -> Unique<T, Self> {
             PrimeFactors::unique(self)
    @@ -402,7 +402,7 @@
             PrimeFactors::rle(self)
         }
     }
    -impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T> {
    +impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T> {
         type Item = T;
     
         fn next(&mut self) -> Option<Self::Item> {
    diff --git a/src/erato/sieve_kind.rs.html b/src/erato/sieve_kind.rs.html
    index b1f3a21c..ac424851 100644
    --- a/src/erato/sieve_kind.rs.html
    +++ b/src/erato/sieve_kind.rs.html
    @@ -1,4 +1,4 @@
    -sieve_kind.rs - sourcesieve_kind.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -197,15 +197,15 @@
     }
     
     fn construct_lpd_table(n: usize) -> Vec<usize> {
    -    let mut lpd = vec![usize::MAX; n];
    +    let mut lpd = vec![std::usize::MAX; n];
         for p in 2..n {
    -        if lpd[p] != usize::MAX {
    +        if lpd[p] != std::usize::MAX {
                 continue;
             }
             lpd[p] = p;
             let mut i = p * p;
             while i < n {
    -            if lpd[i] == usize::MAX {
    +            if lpd[i] == std::usize::MAX {
                     lpd[i] = p;
                 }
                 i += p;
    @@ -231,11 +231,11 @@
         }
     
         #[test_case(0 => Vec::<usize>::new())]
    -    #[test_case(1 => vec![usize::MAX])]
    -    #[test_case(2 => vec![usize::MAX, usize::MAX])]
    -    #[test_case(3 => vec![usize::MAX, usize::MAX, 2])]
    -    #[test_case(4 => vec![usize::MAX, usize::MAX, 2, 3])]
    -    #[test_case(5 => vec![usize::MAX, usize::MAX, 2, 3, 2])]
    +    #[test_case(1 => vec![std::usize::MAX])]
    +    #[test_case(2 => vec![std::usize::MAX, std::usize::MAX])]
    +    #[test_case(3 => vec![std::usize::MAX, std::usize::MAX, 2])]
    +    #[test_case(4 => vec![std::usize::MAX, std::usize::MAX, 2, 3])]
    +    #[test_case(5 => vec![std::usize::MAX, std::usize::MAX, 2, 3, 2])]
         fn test_construct_lpd_table(n: usize) -> Vec<usize> {
             construct_lpd_table(n)
         }
    diff --git a/src/euclid/crt.rs.html b/src/euclid/crt.rs.html
    index b517cf7a..7eafb102 100644
    --- a/src/euclid/crt.rs.html
    +++ b/src/euclid/crt.rs.html
    @@ -1,4 +1,4 @@
    -crt.rs - sourcecrt.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/euclid/ext_gcd.rs.html b/src/euclid/ext_gcd.rs.html
    index 1b212ff5..4d1461d6 100644
    --- a/src/euclid/ext_gcd.rs.html
    +++ b/src/euclid/ext_gcd.rs.html
    @@ -1,4 +1,4 @@
    -ext_gcd.rs - sourceext_gcd.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/euclid/gcd.rs.html b/src/euclid/gcd.rs.html
    index 5f30b9e2..4efa826e 100644
    --- a/src/euclid/gcd.rs.html
    +++ b/src/euclid/gcd.rs.html
    @@ -1,4 +1,4 @@
    -gcd.rs - sourcegcd.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/euclid/lib.rs.html b/src/euclid/lib.rs.html
    index c92914d4..12c894f4 100644
    --- a/src/euclid/lib.rs.html
    +++ b/src/euclid/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -206,7 +206,7 @@
     /// Abstraction of signed integers.
     pub trait Signed: Int + Neg<Output = Self> {}
     
    -macro_rules! impl_unsigned {
    +macro_rules! impl_unsigned {
         ($($t:ty),* $(,)?) => {$(
             impl Int for $t {
                 fn zero() -> Self {
    @@ -231,10 +231,10 @@
             impl Unsigned for $t {}
         )*}
     }
    -impl_unsigned! {
    +impl_unsigned! {
         usize, u8, u16, u32, u64, u128,
     }
    -macro_rules! impl_signed {
    +macro_rules! impl_signed {
         ($($t:ty),* $(,)?) => {$(
             impl Int for $t {
                 fn zero() -> Self {
    @@ -259,7 +259,7 @@
             impl Signed for $t {}
         )*}
     }
    -impl_signed! {
    +impl_signed! {
         isize, i8, i16, i32, i64, i128,
     }
     
    \ No newline at end of file diff --git a/src/fp/ext_gcd.rs.html b/src/fp/ext_gcd.rs.html index 6b63f8a4..668aadab 100644 --- a/src/fp/ext_gcd.rs.html +++ b/src/fp/ext_gcd.rs.html @@ -1,4 +1,4 @@ -ext_gcd.rs - sourceext_gcd.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -123,7 +123,7 @@
                     continue;
                 }
                 let c = mod_inv_signed(a, m);
    -            assert_eq!(a * c % m, 1, "a = {a}, c = {c}, ");
    +            assert_eq!(a * c % m, 1, "a = {a}, c = {c}, ");
                 assert!((0..m).contains(&c));
             }
         }
    diff --git a/src/fp/factorial.rs.html b/src/fp/factorial.rs.html
    index a345e031..bc8e5aeb 100644
    --- a/src/fp/factorial.rs.html
    +++ b/src/fp/factorial.rs.html
    @@ -1,4 +1,4 @@
    -factorial.rs - sourcefactorial.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/fp/fourier.rs.html b/src/fp/fourier.rs.html
    index 2f2ee34c..f2d2f8c4 100644
    --- a/src/fp/fourier.rs.html
    +++ b/src/fp/fourier.rs.html
    @@ -1,4 +1,4 @@
    -fourier.rs - sourcefourier.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/fp/lib.rs.html b/src/fp/lib.rs.html
    index efa4b69f..8b989082 100644
    --- a/src/fp/lib.rs.html
    +++ b/src/fp/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -514,8 +514,6 @@
     480
     481
     482
    -483
    -484
     
    //! A library for modular arithmetic.
     //! # Examples
     //! ```
    @@ -584,7 +582,7 @@
     /// assert_eq!(a.value(), 42);
     /// ```
     #[macro_export]
    -macro_rules! fp {
    +macro_rules! fp {
         ($value:expr) => {
             $crate::Fp::from($value)
         };
    @@ -717,7 +715,7 @@
         }
     }
     impl<const P: u64> std::fmt::Debug for Fp<P> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             pub fn berlekamp_massey_fp(a: i64, p: i64) -> [i64; 2] {
                 let mut u0 = 0_i64;
                 let mut v0 = 1_i64;
    @@ -737,7 +735,7 @@
                 [w0, u0]
             }
             if self.value == 0 {
    -            return write!(f, "0");
    +            return write!(f, "0");
             }
             let [mut num, mut den] = berlekamp_massey_fp(self.value as i64, P as i64);
             if den < 0 {
    @@ -745,23 +743,22 @@
                 den = -den;
             }
             if den == 1 {
    -            write!(f, "{}", num)
    +            write!(f, "{}", num)
             } else {
    -            write!(f, "{}/{}", num, den)
    +            write!(f, "{}/{}", num, den)
             }
         }
     }
     impl<const P: u64> std::fmt::Display for Fp<P> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        write!(f, "{}", self.value())
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        write!(f, "{}", self.value())
         }
     }
    -macro_rules! impl_from_signed {
    +macro_rules! impl_from_signed {
         ($($t:ty),*) => {
             $(
                 impl<const P: u64> From<$t> for Fp<P> {
    -                #[allow(clippy::cast_lossless)]
    -                fn from(x: $t) -> Self {
    +                fn from(x: $t) -> Self {
                         if x < 0 {
                             -Self::new((P as i64 - x as i64) as u64)
                         } else {
    @@ -773,12 +770,11 @@
         };
     }
     impl_from_signed!(i8, i16, i32, i64, i128, isize);
    -macro_rules! impl_from_unsigned {
    +macro_rules! impl_from_unsigned {
         ($($t:ty),*) => {
             $(
                 impl<const P: u64> From<$t> for Fp<P> {
    -                #[allow(clippy::cast_lossless)]
    -                fn from(x: $t) -> Self { Self::new(x as u64) }
    +                fn from(x: $t) -> Self { Self::new(x as u64) }
                 }
             )*
         };
    @@ -811,7 +807,7 @@
             *self *= rhs.inv()
         }
     }
    -macro_rules! fp_forward_ops {
    +macro_rules! fp_forward_ops {
         ($(
             $trait:ident,
             $trait_assign:ident,
    @@ -850,7 +846,7 @@
             }
         )*};
     }
    -fp_forward_ops! {
    +fp_forward_ops! {
         Add, AddAssign, add, add_assign,
         Sub, SubAssign, sub, sub_assign,
         Mul, MulAssign, mul, mul_assign,
    @@ -871,8 +867,8 @@
             iter.fold(Self::new(0), |acc, x| acc + x)
         }
     }
    -impl<'a, const P: u64> Sum<&'a Self> for Fp<P> {
    -    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
    +impl<'a, const P: u64> Sum<&'a Self> for Fp<P> {
    +    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
             iter.copied().sum()
         }
     }
    @@ -881,8 +877,8 @@
             iter.fold(Self::new(1), |acc, x| acc * x)
         }
     }
    -impl<'a, const P: u64> Product<&'a Self> for Fp<P> {
    -    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
    +impl<'a, const P: u64> Product<&'a Self> for Fp<P> {
    +    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
             iter.copied().product()
         }
     }
    diff --git a/src/fps/lib.rs.html b/src/fps/lib.rs.html
    index 9107dc4f..aa8cabb1 100644
    --- a/src/fps/lib.rs.html
    +++ b/src/fps/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -757,7 +757,7 @@
     //! \end{aligned}
     //! $$
     //!
    -//! If each step in Newton's method is performed in $a\mathcal{M}(d)$ time (where $d$ is the resulting precision of each iteration),
    +//! If each step in Newton's method is performed in $a\mathcal{M}(d)$ time (where $d$ is the resulting precision of each iteration),
     //! then the total complexity is $2a\mathcal{M}(d) + O(d)$.
     //!
     //! We omit $O(d)$ terms when it is not important.
    @@ -794,7 +794,7 @@
     /// assert_eq!(f, vec![fp!(1), fp!(2), fp!(3)]);
     /// ```
     #[macro_export]
    -macro_rules! fps {
    +macro_rules! fps {
         () => (
             vec![]
         );
    @@ -830,7 +830,7 @@
         assert_ne!(
             f.first(),
             Some(&Fp::new(0)),
    -        "The constant term must be nonzero."
    +        "The constant term must be nonzero."
         );
         let mut g = vec![f[0].inv()];
         while g.len() < precision {
    @@ -883,7 +883,7 @@
         (): PrimitiveRoot<P>,
     {
         let f = f.as_ref();
    -    assert_eq!(f.first(), Some(&Fp::new(1)), "The constant term must be 1.");
    +    assert_eq!(f.first(), Some(&Fp::new(1)), "The constant term must be 1.");
         let mut g = vec![f[0].inv()];
         let inv2 = Fp::new(2).inv();
         while g.len() < precision {
    @@ -996,10 +996,10 @@
         (): PrimitiveRoot<P>,
     {
         let f = f.as_ref();
    -    assert_eq!(f.first(), Some(&Fp::new(1)), "The constant term must be 1.");
    +    assert_eq!(f.first(), Some(&Fp::new(1)), "The constant term must be 1.");
         assert!(
             precision <= P as usize,
    -        "The precision must be less than P."
    +        "The precision must be less than P."
         );
         if precision == 0 {
             return Vec::new();
    @@ -1030,7 +1030,7 @@
         assert_eq!(
             f.first().copied().unwrap_or(Fp::new(0)),
             Fp::new(0),
    -        "The constant term must be zero."
    +        "The constant term must be zero."
         );
         assert!(precision <= P as usize,);
         let mut g = vec![Fp::new(1)];
    @@ -1102,7 +1102,7 @@
         let f = f.as_ref();
         assert!(
             precision <= P as usize,
    -        "The precision must be less than P."
    +        "The precision must be less than P."
         );
         let leading_zeros = f.iter().take_while(|&&f| f == Fp::new(0)).count();
         let (Some(&head), Some(precision)) = (
    diff --git a/src/gco/lib.rs.html b/src/gco/lib.rs.html
    index 29b339e3..2806a549 100644
    --- a/src/gco/lib.rs.html
    +++ b/src/gco/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -372,7 +372,7 @@
     //! - Use two methods [`unary`](`Gco::unary), [`binary`](Gco::binary) to add terms.
     //! - The cost must has a type [`i64`].
     //! - The result has a type [`bool`]. ($0$ is `false`, $1$ is `true`)
    -//! - We cannot automatically "filp" variables.
    +//! - We cannot automatically "filp" variables.
     //!
     //! This example code shows that a function
     //!
    @@ -461,7 +461,7 @@
         pub fn binary(&mut self, ij: [usize; 2], cost: [[i64; 2]; 2]) {
             assert!(
                 is_submodular(cost),
    -            "The cost should be submodular. cost = {:?}",
    +            "The cost should be submodular. cost = {:?}",
                 cost
             );
             self.binary.push(Binary { ij, cost });
    diff --git a/src/gridnei/lib.rs.html b/src/gridnei/lib.rs.html
    deleted file mode 100644
    index e7aac2d6..00000000
    --- a/src/gridnei/lib.rs.html
    +++ /dev/null
    @@ -1,581 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -
    //! グリッドの様々な隣接セルを取得するライブラリです。
    -//!
    -//! # 隣接4マス
    -//!
    -//! 問題例: [AtCoder 典型 90 問 072 - Loop Railway Plan(★4)](https://atcoder.jp/contests/typical90/tasks/typical90_bt)
    -//!
    -//! 隣接4マスの取得だけ、専用の関数を用意しています。
    -//!
    -//! ```
    -//! use gridnei::grid4;
    -//! use gridnei::grid4encode;
    -//!
    -//! let result = grid4(1, 0, 3, 10).collect::<Vec<_>>();
    -//! let expected = vec![(0, 0), (1, 1), (2, 0)];
    -//! assert_eq!(result, expected);
    -//!
    -//! let result = grid4encode(10, 3, 10).collect::<Vec<_>>();
    -//! let expected = vec![0, 11, 20];
    -//! assert_eq!(result, expected);
    -//! ```
    -//!
    -//! # アレンジ
    -//!
    -//! 8マス以下ならこのように作れます。
    -//!
    -//! ```
    -//! use gridnei::Encode;
    -//! use gridnei::Grid8;
    -//!
    -//! fn knight(i: isize, j: isize) -> [(isize, isize); 8] {
    -//!     [
    -//!         (i - 1, j - 2),
    -//!         (i + 1, j - 2),
    -//!         (i - 2, j - 1),
    -//!         (i + 2, j - 1),
    -//!         (i - 2, j + 1),
    -//!         (i + 2, j + 1),
    -//!         (i - 1, j + 2),
    -//!         (i + 1, j + 2),
    -//!     ]
    -//! }
    -//!
    -//! // x.x........
    -//! // ...x.......
    -//! // .o.........
    -//! // ...x.......
    -//! let result = Grid8::from_fn(2, 1, 4, 10, knight).collect::<Vec<_>>();
    -//! let expected = vec![(0, 0), (0, 2), (1, 3), (3, 3)];
    -//! assert_eq!(&result, &expected);
    -//!
    -//! let result = Encode::<Grid8>::from_fn(21, 4, 10, knight).collect::<Vec<_>>();
    -//! let expected = vec![0, 2, 13, 33];
    -//! assert_eq!(&result, &expected);
    -//! ```
    -
    -/// 新しい `Grid*` を定義して、[`GridIterator`] を実装します。
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use gridnei::grid_iter;
    -/// grid_iter! { 17, Grid17 }
    -///
    -/// let _ = Grid17::from_fn(10, 3, 20, 8, |i, j| {
    -///     [
    -///         (i, j),
    -///         (i, j + 1),
    -///         (i, j + 2),
    -///         (i, j + 3),
    -///         (i, j + 4),
    -///         (i, j + 5),
    -///         (i, j + 6),
    -///         (i, j + 7),
    -///         (i, j + 8),
    -///         (i, j + 9),
    -///         (i, j + 10),
    -///         (i, j + 11),
    -///         (i, j + 12),
    -///         (i, j + 13),
    -///         (i, j + 14),
    -///         (i, j + 15),
    -///         (i, j + 15),
    -///     ]
    -/// })
    -/// .collect::<Vec<_>>();
    -/// ```
    -#[macro_export]
    -macro_rules! grid_iter {
    -    ($len:expr, $iter:ident $(,)?) => {
    -        pub struct $iter {
    -            data: [(isize, isize); $len],
    -            alive: std::ops::Range<usize>,
    -            h: isize,
    -            w: isize,
    -        }
    -        impl $iter {
    -            pub fn new(data: [(isize, isize); $len], h: usize, w: usize) -> Self {
    -                Self {
    -                    data,
    -                    alive: 0..$len,
    -                    h: h as isize,
    -                    w: w as isize,
    -                }
    -            }
    -
    -            pub fn from_fn(
    -                i: usize,
    -                j: usize,
    -                h: usize,
    -                w: usize,
    -                mut f: impl FnMut(isize, isize) -> [(isize, isize); $len],
    -            ) -> Self {
    -                Self::new(f(i as isize, j as isize), h, w)
    -            }
    -
    -            pub fn encode(self) -> $crate::Encode<Self> {
    -                $crate::Encode::new(self)
    -            }
    -        }
    -        impl Iterator for $iter {
    -            type Item = (usize, usize);
    -
    -            fn next(&mut self) -> Option<Self::Item> {
    -                for t in &mut self.alive {
    -                    let &(i, j) = unsafe { self.data.get_unchecked(t) };
    -                    if (0..self.h).contains(&i) && (0..self.w).contains(&j) {
    -                        return Some((i as usize, j as usize));
    -                    }
    -                }
    -                None
    -            }
    -
    -            fn size_hint(&self) -> (usize, Option<usize>) {
    -                (0, Some($len))
    -            }
    -        }
    -        impl DoubleEndedIterator for $iter {
    -            fn next_back(&mut self) -> Option<Self::Item> {
    -                for t in (&mut self.alive).rev() {
    -                    let &(i, j) = unsafe { self.data.get_unchecked(t) };
    -                    if (0..self.h).contains(&i) && (0..self.w).contains(&j) {
    -                        return Some((i as usize, j as usize));
    -                    }
    -                }
    -                None
    -            }
    -        }
    -        impl $crate::GridIterator for $iter {
    -            type Array = [(isize, isize); $len];
    -
    -            const LEN: usize = $len;
    -
    -            fn w(&self) -> usize {
    -                self.w as usize
    -            }
    -
    -            fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    -            where
    -                F: FnMut(isize, isize) -> Self::Array,
    -            {
    -                Self::from_fn(i, j, h, w, f)
    -            }
    -        }
    -    };
    -}
    -grid_iter! { 0, Grid0 }
    -grid_iter! { 1, Grid1 }
    -grid_iter! { 2, Grid2 }
    -grid_iter! { 3, Grid3 }
    -grid_iter! { 4, Grid4 }
    -grid_iter! { 5, Grid5 }
    -grid_iter! { 6, Grid6 }
    -grid_iter! { 7, Grid7 }
    -grid_iter! { 8, Grid8 }
    -
    -/// [`grid_iter!`] を通じで定義した型に自動的に実装されます。
    -pub trait GridIterator: DoubleEndedIterator<Item = (usize, usize)> {
    -    const LEN: usize;
    -    type Array;
    -    fn w(&self) -> usize;
    -    fn from_fn<F>(i: usize, j: usize, h: usize, w: usize, f: F) -> Self
    -    where
    -        F: FnMut(isize, isize) -> Self::Array;
    -}
    -/// 座標をエンコードした形で返すイテレータです。
    -///
    -/// # 構築する方法
    -///
    -/// - [`Encode::from_fn`] メソッド
    -/// - [`grid4encode`] 関数
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use gridnei::Encode;
    -/// use gridnei::Grid2;
    -///
    -/// let result =
    -///     Encode::<Grid2>::from_fn(42, 1, 100, |i, j| [(i, j - 1), (i, j + 1)]).collect::<Vec<_>>();
    -/// let expected = vec![41, 43];
    -/// assert_eq!(&result, &expected);
    -/// ```
    -pub struct Encode<I>(I);
    -impl<I: GridIterator> Encode<I> {
    -    pub fn new(i: I) -> Self {
    -        Self(i)
    -    }
    -
    -    pub fn from_fn<F>(x: usize, h: usize, w: usize, f: F) -> Self
    -    where
    -        F: FnMut(isize, isize) -> I::Array,
    -    {
    -        Self(I::from_fn(x / w, x % w, h, w, f))
    -    }
    -}
    -impl<I: GridIterator> Iterator for Encode<I> {
    -    type Item = usize;
    -
    -    fn next(&mut self) -> Option<Self::Item> {
    -        self.0.next().map(move |(i, j)| i * self.0.w() + j)
    -    }
    -
    -    fn size_hint(&self) -> (usize, Option<usize>) {
    -        (0, Some(I::LEN))
    -    }
    -}
    -impl<I: GridIterator> DoubleEndedIterator for Encode<I> {
    -    fn next_back(&mut self) -> Option<Self::Item> {
    -        self.0.next_back().map(|(i, j)| i * self.0.w() + j)
    -    }
    -}
    -/// 隣接4マスをエンコードして返すイテレータを構築します。
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use gridnei::grid4encode;
    -///
    -/// let result = grid4encode(21, 4, 10).collect::<Vec<_>>();
    -/// let expected = vec![11, 20, 22, 31];
    -/// assert_eq!(&result, &expected);
    -/// ```
    -pub fn grid4encode(x: usize, h: usize, w: usize) -> Encode<Grid4> {
    -    assert!(x < h * w);
    -    let (i, j) = (x / w, x % w);
    -    Encode(grid4(i, j, h, w))
    -}
    -/// 隣接4マスを返すイテレータを構築します。
    -///
    -/// # Examples
    -///
    -/// ```
    -/// use gridnei::grid4;
    -///
    -/// let result = grid4(2, 1, 4, 10).collect::<Vec<_>>();
    -/// let expected = vec![(1, 1), (2, 0), (2, 2), (3, 1)];
    -/// assert_eq!(&result, &expected);
    -/// ```
    -pub fn grid4(i: usize, j: usize, h: usize, w: usize) -> Grid4 {
    -    assert!(i < h && j < w);
    -    Grid4::from_fn(i, j, h, w, |i, j| {
    -        [(i - 1, j), (i, j - 1), (i, j + 1), (i + 1, j)]
    -    })
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    #[test]
    -    fn it_works() {
    -        let result = 2 + 2;
    -        assert_eq!(result, 4);
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/gss/lib.rs.html b/src/gss/lib.rs.html index 6976aba4..73354a6b 100644 --- a/src/gss/lib.rs.html +++ b/src/gss/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -485,10 +485,6 @@
     451
     452
     453
    -454
    -455
    -456
    -457
     
    //! 黄金分割探索をします。
     //!
     //! 次の 2 つの関数のお好きな方をどうぞです。
    @@ -648,7 +644,7 @@
         fn f64_as(x: f64) -> Self;
     }
     
    -macro_rules! impl_int {
    +macro_rules! impl_int {
         ($(($Unsigned:ty, $Signed:ty),)*) => {$(
             impl Int for $Unsigned {
                 fn midpoint_sorted(self, upper: Self) -> Self {
    @@ -657,12 +653,10 @@
                 fn one() -> Self {
                     1
                 }
    -            #[allow(clippy::cast_lossless)]
    -            fn as_f64(self) -> f64 {
    +            fn as_f64(self) -> f64 {
                     self as f64
                 }
    -            #[allow(clippy::cast_lossless)]
    -            fn f64_as(x: f64) -> Self {
    +            fn f64_as(x: f64) -> Self {
                     x as $Unsigned
                 }
             }
    @@ -673,12 +667,10 @@
                 fn one() -> Self {
                     1
                 }
    -            #[allow(clippy::cast_lossless)]
    -            fn as_f64(self) -> f64 {
    +            fn as_f64(self) -> f64 {
                     self as f64
                 }
    -            #[allow(clippy::cast_lossless)]
    -            fn f64_as(x: f64) -> Self {
    +            fn f64_as(x: f64) -> Self {
                     x as $Signed
                 }
             }
    @@ -695,7 +687,7 @@
         )*};
     }
     
    -impl_int! {
    +impl_int! {
         (u8, i8),
         (u16, i16),
         (u32, i32),
    @@ -728,7 +720,7 @@
         fn is_finite(self) -> bool;
     }
     
    -macro_rules! impl_float {
    +macro_rules! impl_float {
         ($($T:ty),*) => {$(
             impl Float for $T {
                 #[allow(clippy::excessive_precision)]
    @@ -757,7 +749,7 @@
         )*};
     }
     
    -impl_float! { f32, f64 }
    +impl_float! { f32, f64 }
     
     #[cfg(test)]
     mod tests {
    @@ -830,7 +822,7 @@
                 for (i, &x) in right1.iter().enumerate() {
                     a[expected + i + 1] = a[expected + i] + x;
                 }
    -            println!("a = {:?}", &a);
    +            println!("a = {:?}", &a);
                 let result = gss_on_slice(&a);
                 valudate_int(0..n - 1, result, |i| a[i]);
                 assert_eq!(expected, result);
    diff --git a/src/heap_slope_trick/lib.rs.html b/src/heap_slope_trick/lib.rs.html
    index f9a00c08..5bfddccb 100644
    --- a/src/heap_slope_trick/lib.rs.html
    +++ b/src/heap_slope_trick/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -491,6 +491,10 @@
     457
     458
     459
    +460
    +461
    +462
    +463
     
    //! [`BinaryHeap`] 二本で slope trick をします。
     //!
     //! [詳しくは `HeapSlopeTrick` をご覧ください。](HeapSlopeTrick)
    @@ -593,10 +597,10 @@
             [
                 self.small
                     .peek()
    -                .map_or(i64::MIN, |&x| x + self.shift_small),
    +                .map_or(std::i64::MIN, |&x| x + self.shift_small),
                 self.large
                     .peek()
    -                .map_or(i64::MAX, |&Reverse(x)| x + self.shift_large),
    +                .map_or(std::i64::MAX, |&Reverse(x)| x + self.shift_large),
             ]
         }
     
    @@ -838,13 +842,13 @@
                 let start = self.values.iter().position(|&y| y == min).unwrap();
                 let end = n - 1 - self.values.iter().rev().position(|&y| y == min).unwrap();
                 [
    -                if start == 0 || self.values[start - 1] == i64::MAX {
    -                    i64::MIN
    +                if start == 0 || self.values[start - 1] == std::i64::MAX {
    +                    std::i64::MIN
                     } else {
                         XMIN + start as i64
                     },
    -                if end == n - 1 || self.values[end + 1] == i64::MAX {
    -                    i64::MAX
    +                if end == n - 1 || self.values[end + 1] == std::i64::MAX {
    +                    std::i64::MAX
                     } else {
                         XMIN + end as i64
                     },
    @@ -858,14 +862,14 @@
             fn add_const(&mut self, c: i64) {
                 self.values
                     .iter_mut()
    -                .for_each(|x| *x = if *x == i64::MAX { i64::MAX } else { *x + c });
    +                .for_each(|x| *x = if *x == std::i64::MAX { std::i64::MAX } else { *x + c });
             }
     
             fn add_fn(&mut self, f: impl Fn(i64) -> i64) {
                 for x in XMIN..=XMAX {
                     let i = (x - XMIN) as usize;
                     let orig = self.values[i];
    -                self.values[i] = if orig == i64::MAX { i64::MAX } else { orig + f(x) };
    +                self.values[i] = if orig == std::i64::MAX { std::i64::MAX } else { orig + f(x) };
                 }
             }
     
    @@ -899,12 +903,14 @@
                         let a = -a as usize;
                         self.values.rotate_left(a);
                         let n = self.values.len();
    -                    self.values[n - a..].iter_mut().for_each(|x| *x = i64::MAX);
    +                    self.values[n - a..]
    +                        .iter_mut()
    +                        .for_each(|x| *x = std::i64::MAX);
                     }
                     Ordering::Greater => {
                         let a = a as usize;
                         self.values.rotate_right(a);
    -                    self.values[..a].iter_mut().for_each(|x| *x = i64::MAX);
    +                    self.values[..a].iter_mut().for_each(|x| *x = std::i64::MAX);
                     }
                     Ordering::Equal => (),
                 }
    @@ -917,7 +923,7 @@
                         (((i - b).max(0).min(n) as usize)..((i - a + 1).min(n).max(0) as usize))
                             .map(|j| self.values[j])
                             .min()
    -                        .unwrap_or(i64::MAX)
    +                        .unwrap_or(std::i64::MAX)
                     })
                     .collect();
             }
    @@ -925,7 +931,7 @@
             fn get_tilt_minimum(&self) -> i64 {
                 self.values
                     .windows(2)
    -                .filter(|v| v[0] != i64::MAX && v[1] != i64::MAX)
    +                .filter(|v| v[0] != std::i64::MAX && v[1] != std::i64::MAX)
                     .map(|v| v[1] - v[0])
                     .min()
                     .unwrap()
    @@ -934,7 +940,7 @@
             fn get_tilt_maximum(&self) -> i64 {
                 self.values
                     .windows(2)
    -                .filter(|v| v[0] != i64::MAX && v[1] != i64::MAX)
    +                .filter(|v| v[0] != std::i64::MAX && v[1] != std::i64::MAX)
                     .map(|v| v[1] - v[0])
                     .max()
                     .unwrap()
    @@ -944,7 +950,9 @@
                 self.values
                     .windows(3)
                     .enumerate()
    -                .filter(|(_, v)| v[0] != i64::MAX && v[2] != i64::MAX && v[0] + v[2] > v[1] * 2)
    +                .filter(|(_, v)| {
    +                    v[0] != std::i64::MAX && v[2] != std::i64::MAX && v[0] + v[2] > v[1] * 2
    +                })
                     .map(|(i, v)| [XMIN + 1 + i as i64, v[1]])
                     .collect()
             }
    diff --git a/src/heap_tricks/lib.rs.html b/src/heap_tricks/lib.rs.html
    index 3ee837ee..8bd920ff 100644
    --- a/src/heap_tricks/lib.rs.html
    +++ b/src/heap_tricks/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1025,11 +1025,6 @@
     991
     992
     993
    -994
    -995
    -996
    -997
    -998
     
    //! [`remove_unchecked`](RemovableHeap::remove_unchecked) のできるヒープです。
     //!
     //! 本体は [`RemovableHeap`] です。
    @@ -1066,9 +1061,9 @@
     //! >         heap.push_left(a[j]);
     //! >         heap.remove_left_unchecked(a[i]);
     //! 33c32
    -//! <     println!("{}", ans)
    +//! <     println!("{}", ans)
     //! ---
    -//! >     println!("{}", ans / 2)
    +//! >     println!("{}", ans / 2)
     //! ```
     //!
     //!
    @@ -1077,14 +1072,14 @@
     //! 固定された数列の順位を答えるだけなら、ウェーブレット行列
     //! のほうが楽という説はあります。
     //!
    -//! - JAG Practice Contest for ACM-ICPC Asia Regional 2016 C - We Don't Wanna Work!
    +//! - JAG Practice Contest for ACM-ICPC Asia Regional 2016 C - We Don't Wanna Work!
     //!   - 問題: <https://atcoder.jp/contests/jag2016autumn/tasks/icpc2016autumn_c>
     //!   - 提出: TODO
     //!   - 出題日: 2016-09-04
     //!   - 難易度: 易しめ。
     //!   - 制約: N + Q ≤ 70,000
     //!   - コメント: キーに [`Copy`] を課しているので [`String`] がくるとかなり
    -//!     めんどくさいことに!! むーん……
    +//!   めんどくさいことに!! むーん……
     //!   - 使う構造体: [`DoubleHeap`] (左右移動の明示的追跡あり)
     //! - yukicoder No.649 - ここでちょっとQK!
     //!   - 問題: <https://yukicoder.me/problems/no/649>
    @@ -1107,7 +1102,7 @@
     //!   - 提出 (211 ms): <https://atcoder.jp/contests/abc127/submissions/28290935>
     //!   - 出題日: 2019-05-25
     //!   - 難易度: 易しめ。`heap_slope_trick` クレートがあるので
    -//!     そちらを使ったほうが楽です。
    +//!   そちらを使ったほうが楽です。
     //!   - 制約: Q ≤ 200,000
     //!   - 使う構造体: [`DoubleHeap`] (`heap_slope_trick` クレートを使ったほうがよいです。)
     //! - ABC 128 E - Roadwork
    @@ -1125,8 +1120,8 @@
     //!   - 制約: N ≤ 100,000
     //!   - 使う構造体: [`DoubleHeap`]
     //!   - 難易度: Mo 書かないといけないので先延ばしに……
    -//!     ウェーブレット行列で解く問題を Mo で無理やりクエリ
    -//!     先読みしているイメージですかね。
    +//!   ウェーブレット行列で解く問題を Mo で無理やりクエリ
    +//!   先読みしているイメージですかね。
     //! - ABC 170 E - Smart Infants
     //!   - 問題: <https://atcoder.jp/contests/abc170/tasks/abc170_e>
     //!   - 提出 (163 ms): <https://atcoder.jp/contests/abc170/submissions/28296739>
    @@ -1138,7 +1133,7 @@
     //!     - C++ の `std::multiset` (488 ms): <https://atcoder.jp/contests/abc170/submissions/14328933>
     //!     - AVL 木 (2477 ms): <https://atcoder.jp/contests/abc170/submissions/24165251>
     //!   - コメント: これフルクラッチで書くとけっこう混乱するので、
    -//!     ライブラリがるとかなり助かります。
    +//!   ライブラリがるとかなり助かります。
     //! - OUPC 2020 D - 仲良しスライム
     //!   - 問題: <https://onlinejudge.u-aizu.ac.jp/beta/room.html#OUPC2020/problems/D>
     //!   - 提出 (90 ms): <https://onlinejudge.u-aizu.ac.jp/beta/review.html#OUPC2020/6171242>
    @@ -1149,9 +1144,9 @@
     //!   - 他の解法:
     //!     - ウェーブレット行列 (440 ms): <https://onlinejudge.u-aizu.ac.jp/beta/review.html#OUPC2020/6171281>
     //!   - コメント: A:B 重み付き中央値クエリ。平衡基準を抽象化して良かった〜〜
    -//!     これもウェーブレット行列のほうが思いつきやすそうですが、
    -//!     ウェーブレット行列ライブラリの累積和系の機能が使いづらい(あの!?)ので、
    -//!     実装は [`DoubleHeap`] を使うほうが楽です。
    +//!   これもウェーブレット行列のほうが思いつきやすそうですが、
    +//!   ウェーブレット行列ライブラリの累積和系の機能が使いづらい(あの!?)ので、
    +//!   実装は [`DoubleHeap`] を使うほうが楽です。
     //! - ABC 213 G - Game on Tree 2
     //!   - 問題: <https://atcoder.jp/contests/abc218/tasks/abc218_g>
     //!   - 提出 (115 ms): <https://atcoder.jp/contests/abc218/submissions/28295770>
    @@ -1160,8 +1155,8 @@
     //!   - 制約: N ≤ 100,000
     //!   - 使う構造体: [`DoubleHeap`] (削除も使います。)
     //!   - コメント: 本番二分探索を考えてうまく行かず、
    -//!     後日 [`std::collections::BTreeMap`] で multiset もどきを作って
    -//!     なんとか通して (181 ms) いました。ヒープ4本の方が速くてきれいで嬉しいですね。
    +//!   後日 [`std::collections::BTreeMap`] で multiset もどきを作って
    +//!   なんとか通して (181 ms) いました。ヒープ4本の方が速くてきれいで嬉しいですね。
     //! - yukicoder No.1786 - Maximum Suffix Median (Online)
     //!   - 問題: <https://yukicoder.me/problems/no/1786>
     //!   - 提出 TODO
    @@ -1248,23 +1243,18 @@
         right: RemovableHeap<Reverse<T>>,
         handler: H,
     }
    -#[allow(clippy::missing_fields_in_debug)]
    -impl<T, H> Debug for DoubleHeap<T, H>
    +impl<T, H> Debug for DoubleHeap<T, H>
     where
         T: Copy + Ord + Hash + Debug,
         H: Handler<T> + Debug,
     {
    -    #[allow(clippy::missing_fields_in_debug)]
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        f.debug_struct("DoubleHeap")
    -            .field(
    -                "elm",
    -                &[
    -                    self.collect_left_sorted_vec(),
    -                    self.collect_right_sorted_vec(),
    -                ],
    -            )
    -            .field("handler", &self.handler)
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        f.debug_struct("DoubleHeap")
    +            .field("elm", &[
    +                self.collect_left_sorted_vec(),
    +                self.collect_right_sorted_vec(),
    +            ])
    +            .field("handler", &self.handler)
                 .finish()
         }
     }
    @@ -1509,7 +1499,7 @@
         /// assert_eq!(heap.collect_right_sorted_vec(), vec![45]);
         /// ```
         pub fn move_left(&mut self) {
    -        let elm = self.right.pop().expect("右側ヒープは空です。").0;
    +        let elm = self.right.pop().expect("右側ヒープは空です。").0;
             self.handler.pop_right(elm);
             self.handler.push_left(elm);
             self.left.push(elm);
    @@ -1536,7 +1526,7 @@
         /// assert_eq!(heap.collect_right_sorted_vec(), vec![13, 42, 45]);
         /// ```
         pub fn move_right(&mut self) {
    -        let elm = self.left.pop().expect("左側ヒープは空です。");
    +        let elm = self.left.pop().expect("左側ヒープは空です。");
             self.handler.pop_left(elm);
             self.handler.push_right(elm);
             self.right.push(Reverse(elm));
    @@ -1795,7 +1785,7 @@
         len: usize,
     }
     impl<T: Copy + Ord + Hash + Debug> Debug for RemovableHeap<T> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list().entries(self.collect_sorted_vec()).finish()
         }
     }
    diff --git a/src/hld/lib.rs.html b/src/hld/lib.rs.html
    index 13bec7a5..7aaafe40 100644
    --- a/src/hld/lib.rs.html
    +++ b/src/hld/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -616,7 +616,7 @@
         /// * `j`: left-side
         /// * `last`: last path segments (i.e. contains the LCA)
         /// * `reverse`: `from --> to` and `i --> j` is in the different direction
    -    pub fn path_segments(&self, from: usize, to: usize) -> PathSegments<'_> {
    +    pub fn path_segments(&self, from: usize, to: usize) -> PathSegments<'_> {
             PathSegments {
                 hld: self,
                 from,
    @@ -630,13 +630,13 @@
             &self,
             i: usize,
             j: usize,
    -    ) -> impl Iterator<Item = (usize, usize, bool, bool)> + '_ {
    +    ) -> impl Iterator<Item = (usize, usize, bool, bool)> + '_ {
             self.path_segments(i, j)
                 .map(move |(i, j, last, reverse)| (self.index[i], self.index[j], last, reverse))
         }
     
         /// deprecated
    -    pub fn ledacy_iter_v(&self, i: usize, j: usize) -> impl Iterator<Item = (usize, usize)> + '_ {
    +    pub fn ledacy_iter_v(&self, i: usize, j: usize) -> impl Iterator<Item = (usize, usize)> + '_ {
             self.path_segments_by_index(i, j)
                 .map(|(i, j, _last, _revresed)| (i, j))
         }
    @@ -665,13 +665,13 @@
     }
     
     /// Iterator
    -pub struct PathSegments<'a> {
    -    hld: &'a Hld,
    +pub struct PathSegments<'a> {
    +    hld: &'a Hld,
         from: usize,
         to: usize,
         exhausted: bool,
     }
    -impl Iterator for PathSegments<'_> {
    +impl Iterator for PathSegments<'_> {
         // i: usize         root-side,
         // j: usize         leaf-side,
         // last: bool       contains-lca
    @@ -710,7 +710,7 @@
             })
         }
     }
    -impl FusedIterator for PathSegments<'_> {}
    +impl FusedIterator for PathSegments<'_> {}
     
     fn __build_hld(root: usize, g: &mut [Vec<usize>], parent: Vec<usize>) -> Hld {
         let n = g.len();
    diff --git a/src/hopkarp/lib.rs.html b/src/hopkarp/lib.rs.html
    index 692f6b25..1e68ed3a 100644
    --- a/src/hopkarp/lib.rs.html
    +++ b/src/hopkarp/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -355,7 +355,9 @@
     321
     322
     323
    -
    //! Finds a maximum cardinality bipartite matching by Hopcroft―Karp's algorithm.
    +324
    +325
    +
    //! Finds a maximum cardinality bipartite matching by Hopcroft―Karp's algorithm.
     //!
     //! # Basic usage
     //!
    @@ -373,7 +375,7 @@
     //! ```
     use std::collections::VecDeque;
     
    -/// Summary of the result of Hopcroft―Karp's algorithm.
    +/// Summary of the result of Hopcroft―Karp's algorithm.
     ///
     /// # Maximum cardinality matching
     ///
    @@ -428,9 +430,10 @@
         dist: &[u32],
         backward: &[Option<usize>],
     ) -> (Box<[bool]>, Box<[bool]>) {
    +    use std::u32::MAX;
         let left = dist
             .iter()
    -        .map(|&x| x != u32::MAX)
    +        .map(|&x| x != MAX)
             .collect::<Vec<_>>()
             .into_boxed_slice();
         let mut right = vec![false; backward.len()].into_boxed_slice();
    @@ -482,7 +485,8 @@
     }
     
     fn bfs(graph: &[Vec<usize>], forward: &[Option<usize>], backward: &[Option<usize>]) -> Vec<u32> {
    -    let mut dist = vec![u32::MAX; forward.len()];
    +    use std::u32::MAX;
    +    let mut dist = vec![MAX; forward.len()];
         let mut queue = forward
             .iter()
             .enumerate()
    @@ -493,7 +497,7 @@
         while let Some(x) = queue.pop_front() {
             for &y in &graph[x] {
                 if let Some(z) = backward[y] {
    -                if dist[z] == u32::MAX {
    +                if dist[z] == MAX {
                         dist[z] = dist[x] + 1;
                         queue.push_back(z);
                     }
    @@ -590,76 +594,76 @@
             assert_eq!(*count, capacity);
         }
     
    -    #[test_case(3, "000000" => 0)]
    -    #[test_case(3, "000001" => 1)]
    -    #[test_case(3, "000010" => 1)]
    -    #[test_case(3, "000011" => 1)]
    -    #[test_case(3, "000100" => 1)]
    -    #[test_case(3, "000101" => 1)]
    -    #[test_case(3, "000110" => 1)]
    -    #[test_case(3, "000111" => 1)]
    -    #[test_case(3, "001000" => 1)]
    -    #[test_case(3, "001001" => 1)]
    -    #[test_case(3, "001010" => 2)]
    -    #[test_case(3, "001011" => 2)]
    -    #[test_case(3, "001100" => 2)]
    -    #[test_case(3, "001101" => 2)]
    -    #[test_case(3, "001110" => 2)]
    -    #[test_case(3, "001111" => 2)]
    -    #[test_case(3, "010000" => 1)]
    -    #[test_case(3, "010001" => 2)]
    -    #[test_case(3, "010010" => 1)]
    -    #[test_case(3, "010011" => 2)]
    -    #[test_case(3, "010100" => 2)]
    -    #[test_case(3, "010101" => 2)]
    -    #[test_case(3, "010110" => 2)]
    -    #[test_case(3, "010111" => 2)]
    -    #[test_case(3, "011000" => 1)]
    -    #[test_case(3, "011001" => 2)]
    -    #[test_case(3, "011010" => 2)]
    -    #[test_case(3, "011011" => 2)]
    -    #[test_case(3, "011100" => 2)]
    -    #[test_case(3, "011101" => 2)]
    -    #[test_case(3, "011110" => 2)]
    -    #[test_case(3, "011111" => 2)]
    -    #[test_case(3, "100000" => 1)]
    -    #[test_case(3, "100001" => 2)]
    -    #[test_case(3, "100010" => 2)]
    -    #[test_case(3, "100011" => 2)]
    -    #[test_case(3, "100100" => 1)]
    -    #[test_case(3, "100101" => 2)]
    -    #[test_case(3, "100110" => 2)]
    -    #[test_case(3, "100111" => 2)]
    -    #[test_case(3, "101000" => 1)]
    -    #[test_case(3, "101001" => 2)]
    -    #[test_case(3, "101010" => 2)]
    -    #[test_case(3, "101011" => 2)]
    -    #[test_case(3, "101100" => 2)]
    -    #[test_case(3, "101101" => 2)]
    -    #[test_case(3, "101110" => 2)]
    -    #[test_case(3, "101111" => 2)]
    -    #[test_case(3, "110000" => 1)]
    -    #[test_case(3, "110001" => 2)]
    -    #[test_case(3, "110010" => 2)]
    -    #[test_case(3, "110011" => 2)]
    -    #[test_case(3, "110100" => 2)]
    -    #[test_case(3, "110101" => 2)]
    -    #[test_case(3, "110110" => 2)]
    -    #[test_case(3, "110111" => 2)]
    -    #[test_case(3, "111000" => 1)]
    -    #[test_case(3, "111001" => 2)]
    -    #[test_case(3, "111010" => 2)]
    -    #[test_case(3, "111011" => 2)]
    -    #[test_case(3, "111100" => 2)]
    -    #[test_case(3, "111101" => 2)]
    -    #[test_case(3, "111110" => 2)]
    -    #[test_case(3, "111111" => 2)]
    +    #[test_case(3, "000000" => 0)]
    +    #[test_case(3, "000001" => 1)]
    +    #[test_case(3, "000010" => 1)]
    +    #[test_case(3, "000011" => 1)]
    +    #[test_case(3, "000100" => 1)]
    +    #[test_case(3, "000101" => 1)]
    +    #[test_case(3, "000110" => 1)]
    +    #[test_case(3, "000111" => 1)]
    +    #[test_case(3, "001000" => 1)]
    +    #[test_case(3, "001001" => 1)]
    +    #[test_case(3, "001010" => 2)]
    +    #[test_case(3, "001011" => 2)]
    +    #[test_case(3, "001100" => 2)]
    +    #[test_case(3, "001101" => 2)]
    +    #[test_case(3, "001110" => 2)]
    +    #[test_case(3, "001111" => 2)]
    +    #[test_case(3, "010000" => 1)]
    +    #[test_case(3, "010001" => 2)]
    +    #[test_case(3, "010010" => 1)]
    +    #[test_case(3, "010011" => 2)]
    +    #[test_case(3, "010100" => 2)]
    +    #[test_case(3, "010101" => 2)]
    +    #[test_case(3, "010110" => 2)]
    +    #[test_case(3, "010111" => 2)]
    +    #[test_case(3, "011000" => 1)]
    +    #[test_case(3, "011001" => 2)]
    +    #[test_case(3, "011010" => 2)]
    +    #[test_case(3, "011011" => 2)]
    +    #[test_case(3, "011100" => 2)]
    +    #[test_case(3, "011101" => 2)]
    +    #[test_case(3, "011110" => 2)]
    +    #[test_case(3, "011111" => 2)]
    +    #[test_case(3, "100000" => 1)]
    +    #[test_case(3, "100001" => 2)]
    +    #[test_case(3, "100010" => 2)]
    +    #[test_case(3, "100011" => 2)]
    +    #[test_case(3, "100100" => 1)]
    +    #[test_case(3, "100101" => 2)]
    +    #[test_case(3, "100110" => 2)]
    +    #[test_case(3, "100111" => 2)]
    +    #[test_case(3, "101000" => 1)]
    +    #[test_case(3, "101001" => 2)]
    +    #[test_case(3, "101010" => 2)]
    +    #[test_case(3, "101011" => 2)]
    +    #[test_case(3, "101100" => 2)]
    +    #[test_case(3, "101101" => 2)]
    +    #[test_case(3, "101110" => 2)]
    +    #[test_case(3, "101111" => 2)]
    +    #[test_case(3, "110000" => 1)]
    +    #[test_case(3, "110001" => 2)]
    +    #[test_case(3, "110010" => 2)]
    +    #[test_case(3, "110011" => 2)]
    +    #[test_case(3, "110100" => 2)]
    +    #[test_case(3, "110101" => 2)]
    +    #[test_case(3, "110110" => 2)]
    +    #[test_case(3, "110111" => 2)]
    +    #[test_case(3, "111000" => 1)]
    +    #[test_case(3, "111001" => 2)]
    +    #[test_case(3, "111010" => 2)]
    +    #[test_case(3, "111011" => 2)]
    +    #[test_case(3, "111100" => 2)]
    +    #[test_case(3, "111101" => 2)]
    +    #[test_case(3, "111110" => 2)]
    +    #[test_case(3, "111111" => 2)]
         fn test_hopkarp_hand_exhaustive(w: usize, adj: &str) -> usize {
             let adj = adj
                 .chars()
                 .map(|c| match c {
    -                '0' => false,
    -                '1' => true,
    +                '0' => false,
    +                '1' => true,
                     _ => panic!(),
                 })
                 .collect_vec();
    diff --git a/src/hungarian/lib.rs.html b/src/hungarian/lib.rs.html
    index 4f56ef60..2eab2c0c 100644
    --- a/src/hungarian/lib.rs.html
    +++ b/src/hungarian/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -419,7 +419,7 @@
     pub fn hungarian<T: Value>(cost_matrix: &[Vec<T>]) -> HungarianResult<T> {
         let h = cost_matrix.len();
         let w = cost_matrix[0].len();
    -    let mut m = vec![usize::MAX; w + 1];
    +    let mut m = vec![std::usize::MAX; w + 1];
     
         // initialize a feasible potential
         let mut all_min = T::infinity();
    @@ -449,7 +449,7 @@
                 m[w] = s;
                 let mut x0 = s;
                 let mut y0 = w;
    -            while x0 != usize::MAX {
    +            while x0 != std::usize::MAX {
                     // find y0
                     let (swap, delta) = {
                         let mut swap = w;
    @@ -494,17 +494,17 @@
         m.pop();
     
         let backward = m;
    -    let mut forward = vec![usize::MAX; h].into_boxed_slice();
    +    let mut forward = vec![std::usize::MAX; h].into_boxed_slice();
         let mut value = T::zero();
         for (y, &x) in backward.iter().enumerate() {
    -        if x != usize::MAX {
    +        if x != std::usize::MAX {
                 forward[x] = y;
                 value += cost_matrix[x][y];
             }
         }
         let backward = backward
             .into_iter()
    -        .map(|x| if x == usize::MAX { None } else { Some(x) })
    +        .map(|x| if x == std::usize::MAX { None } else { Some(x) })
             .collect::<Vec<_>>()
             .into_boxed_slice();
         HungarianResult {
    @@ -541,31 +541,31 @@
         fn infinity() -> Self;
     }
     
    -macro_rules! impl_value_int {
    +macro_rules! impl_value_int {
         ($($T:ident),* $(,)?) => {$(
             impl Value for $T {
                 fn zero() -> Self {
                     0
                 }
                 fn infinity() -> Self {
    -                $T::MAX
    +                std::$T::MAX
                 }
             }
         )*}
     }
    -impl_value_int! {
    +impl_value_int! {
         u8, u16, u32, u64, u128, usize,
         i8, i16, i32, i64, i128, isize,
     }
     
    -macro_rules! impl_value_float {
    +macro_rules! impl_value_float {
         ($($T:ident),* $(,)?) => {$(
             impl Value for $T {
                 fn zero() -> Self {
                     0.
                 }
                 fn infinity() -> Self {
    -                $T::INFINITY
    +                std::$T::INFINITY
                 }
             }
         )*}
    @@ -592,8 +592,8 @@
         use std::ops::RangeInclusive;
         use test_case::test_case;
     
    -    #[test_case(&[vec![4, 3, 5], vec![3, 5, 9], vec![4, 1, 4]] => (vec![2, 0, 1], 9); "yosupo sample")]
    -    #[test_case(&[vec![4, 3, 5], vec![3, 5, 0], vec![4, 1, 4]] => (vec![0, 2, 1], 5); "handmade")]
    +    #[test_case(&[vec![4, 3, 5], vec![3, 5, 9], vec![4, 1, 4]] => (vec![2, 0, 1], 9); "yosupo sample")]
    +    #[test_case(&[vec![4, 3, 5], vec![3, 5, 0], vec![4, 1, 4]] => (vec![0, 2, 1], 5); "handmade")]
         fn test_hand(cost_matrix: &[Vec<u8>]) -> (Vec<usize>, u8) {
             let HungarianResult { forward, value, .. } = hungarian(cost_matrix);
             (forward.into_vec(), value)
    @@ -676,7 +676,7 @@
             {
                 assert!(
                     right[j] <= x + left[i] + T::epsilon(),
    -                "left[{i}] = {left:?}, right[{j}] = {right:?}, cost_matrix[{i}][{j}] = {cost:?}",
    +                "left[{i}] = {left:?}, right[{j}] = {right:?}, cost_matrix[{i}][{j}] = {cost:?}",
                     i = i,
                     left = left[i],
                     j = j,
    @@ -730,7 +730,7 @@
         trait Epsilon: AbsDiffEq<Epsilon = Self> + Sized {
             fn epsilon() -> Self;
         }
    -    macro_rules! impl_epsilon_int {
    +    macro_rules! impl_epsilon_int {
             ($($T:ident),* $(,)?) => {$(
                 impl Epsilon for $T {
                     fn epsilon() -> Self {
    @@ -739,11 +739,11 @@
                 }
             )*}
         }
    -    impl_epsilon_int! {
    +    impl_epsilon_int! {
             u8, u16, u32, u64, usize,
             i8, i16, i32, i64, isize,
         }
    -    macro_rules! impl_epsilon_float {
    +    macro_rules! impl_epsilon_float {
             ($($T:ident),* $(,)?) => {$(
                 impl Epsilon for $T {
                     fn epsilon() -> Self {
    diff --git a/src/interval_heap/lib.rs.html b/src/interval_heap/lib.rs.html
    index f9a9d944..b25beaf1 100644
    --- a/src/interval_heap/lib.rs.html
    +++ b/src/interval_heap/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -322,7 +322,7 @@
     288
     
    //! # Interval Heaps
     //!
    -//! van Leeuwen, Jan, and Derick Wood. "Interval heaps." The Computer Journal 36.3 (1993): 209-216.
    +//! van Leeuwen, Jan, and Derick Wood. "Interval heaps." The Computer Journal 36.3 (1993): 209-216.
     //!
     //!
     //! * Double-ended priority queue: [`IntervalHeap`]
    diff --git a/src/io/lib.rs.html b/src/io/lib.rs.html
    index 4f11bb82..7c309aeb 100644
    --- a/src/io/lib.rs.html
    +++ b/src/io/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -159,7 +159,7 @@
         fn parse_line(s: &str) -> Self;
     }
     
    -macro_rules! impl_parse_line {
    +macro_rules! impl_parse_line {
         ($($t:ty),*) => {
             $(impl ParseLine for $t {
                 fn parse_line(s: &str) -> Self {
    @@ -169,7 +169,7 @@
         };
     }
     impl_parse_line!(u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, String, char);
    -macro_rules! impl_parse_line_tuple {
    +macro_rules! impl_parse_line_tuple {
         ($($t:ident),*) => {
             impl<$($t: ParseLine),*> ParseLine for ($($t,)*) {
                 fn parse_line(s: &str) -> Self {
    diff --git a/src/lagrange/lib.rs.html b/src/lagrange/lib.rs.html
    index c4ef57fc..22083758 100644
    --- a/src/lagrange/lib.rs.html
    +++ b/src/lagrange/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -575,9 +575,9 @@
         const P: u64 = 998244353;
         type Fp = fp::Fp<P>;
     
    -    #[test_case(3; "small")]
    -    #[test_case(30; "medium")]
    -    #[test_case(P; "maximum")]
    +    #[test_case(3; "small")]
    +    #[test_case(30; "medium")]
    +    #[test_case(P; "maximum")]
         fn test_interpolate_rand(lim: u64) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..200 {
    @@ -606,9 +606,9 @@
             }
         }
     
    -    #[test_case(3; "small")]
    -    #[test_case(30; "medium")]
    -    #[test_case(P; "maximum")]
    +    #[test_case(3; "small")]
    +    #[test_case(30; "medium")]
    +    #[test_case(P; "maximum")]
         fn test_interpolate_first_n_rand(lim: u64) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..200 {
    @@ -623,9 +623,9 @@
             }
         }
     
    -    #[test_case(3; "small")]
    -    #[test_case(30; "medium")]
    -    #[test_case(P; "maximum")]
    +    #[test_case(3; "small")]
    +    #[test_case(30; "medium")]
    +    #[test_case(P; "maximum")]
         fn test_interpolate_one_point_rand(lim: u64) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..200 {
    diff --git a/src/lazy_segbeats/lib.rs.html b/src/lazy_segbeats/lib.rs.html
    index 67a8630b..f6d8737e 100644
    --- a/src/lazy_segbeats/lib.rs.html
    +++ b/src/lazy_segbeats/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -475,16 +475,45 @@
     441
     442
     443
    -
    use open::open;
    -use std::cell::RefCell;
    +444
    +445
    +446
    +447
    +448
    +449
    +450
    +451
    +452
    +453
    +454
    +455
    +456
    +457
    +
    use std::cell::RefCell;
     use std::fmt::Debug;
     use std::ops::Add;
     use std::ops::AddAssign;
    +use std::ops::Bound;
     use std::ops::Range;
     use std::ops::RangeBounds;
     use std::ops::Sub;
     use std::ops::SubAssign;
     
    +pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize> {
    +    use Bound::Excluded;
    +    use Bound::Included;
    +    use Bound::Unbounded;
    +    (match range.start_bound() {
    +        Unbounded => 0,
    +        Included(&x) => x,
    +        Excluded(&x) => x + 1,
    +    })..(match range.end_bound() {
    +        Excluded(&x) => x,
    +        Included(&x) => x + 1,
    +        Unbounded => len,
    +    })
    +}
    +
     #[derive(Debug, Clone, PartialEq, Eq)]
     pub struct Segbeats<T> {
         len: usize,
    @@ -853,28 +882,27 @@
         fn zero() -> Self;
         fn mul_u32(&self, x: u32) -> Self;
     }
    -macro_rules! impl_elm {
    +macro_rules! impl_elm {
         {$($ty:ident;)*} => {
             $(
                 impl Elm for $ty {
                     fn min_value() -> Self {
    -                    $ty::MIN
    +                    std::$ty::MIN
                     }
                     fn max_value() -> Self {
    -                    $ty::MAX
    +                    std::$ty::MAX
                     }
                     fn zero() -> Self {
                         0
                     }
    -                #[allow(clippy::cast_lossless)]
    -                fn mul_u32(&self, x: u32) -> Self {
    +                fn mul_u32(&self, x: u32) -> Self {
                         self * (x as $ty)
                     }
                 }
             )*
         }
     }
    -impl_elm! {
    +impl_elm! {
         u8; u16; u32; u64; u128; usize;
         i8; i16; i32; i64; i128; isize;
     }
    diff --git a/src/lazy_segtree/lib.rs.html b/src/lazy_segtree/lib.rs.html
    index d9d781da..d9384a69 100644
    --- a/src/lazy_segtree/lib.rs.html
    +++ b/src/lazy_segtree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/lg/lib.rs.html b/src/lg/lib.rs.html
    index f389d638..05a5fef6 100644
    --- a/src/lg/lib.rs.html
    +++ b/src/lg/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -290,9 +290,9 @@
         I: IntoIterator<Item = B>,
     {
         format!(
    -        "[{}]",
    +        "[{}]",
             iter.into_iter()
    -            .map(|b| ['.', '#'][usize::from(*(b.borrow()))])
    +            .map(|b| ['.', '#'][usize::from(*(b.borrow()))])
                 .collect::<String>(),
         )
     }
    @@ -306,65 +306,65 @@
     }
     
     #[macro_export]
    -macro_rules! lg {
    +macro_rules! lg {
         (@contents $head:expr $(, $tail:expr)*) => {{
             $crate::__lg_internal!($head);
             $(
    -            eprint!(",");
    +            eprint!(",");
                 $crate::__lg_internal!($tail);
             )*
             eprintln!();
         }};
         ($($expr:expr),* $(,)?) => {{
    -        eprint!("{} \u{276f}", line!());
    +        eprint!("{} \u{276f}", line!());
             $crate::lg!(@contents $($expr),*)
         }};
     }
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! __lg_internal {
    +macro_rules! __lg_internal {
         ($value:expr) => {{
             match $value {
                 head => {
    -                eprint!(" {} = {}", stringify!($value), $crate::format(&head));
    +                eprint!(" {} = {}", stringify!($value), $crate::format(&head));
                 }
             }
         }};
     }
     
     #[macro_export]
    -macro_rules! table {
    +macro_rules! table {
         ($vec2:expr) => {
             eprintln!(
    -            "{}",
    +            "{}",
                 $crate::vec2($crate::remove_ampersand(stringify!($vec2)), $vec2)
             );
         };
     }
     
     #[macro_export]
    -macro_rules! vmap {
    +macro_rules! vmap {
         ($map:expr) => {
             eprintln!(
    -            "{}",
    +            "{}",
                 $crate::vmap($crate::remove_ampersand(stringify!($map)), $map)
             );
         };
     }
     
     #[macro_export]
    -macro_rules! hmap {
    +macro_rules! hmap {
         ($map:expr) => {
             eprintln!(
    -            "{}",
    +            "{}",
                 $crate::hmap($crate::remove_ampersand(stringify!($map)), $map)
             );
         };
     }
     
     #[macro_export]
    -macro_rules! vvec {
    +macro_rules! vvec {
         ($($(@field $field:ident)* $vecs:expr),+ $(,)?) => {
             let mut vecs = Vec::new();
             $(
    @@ -376,7 +376,7 @@
                     {
                         let mut name = name.to_owned();
                         has_field = true;
    -                    name.push_str(".");
    +                    name.push_str(".");
                         name.push_str(stringify!($field));
                         let values = (&$vecs).into_iter().map(|v| $crate::format(&v.$field)).collect::<Vec<_>>();
                         vecs.push((name, values))
    @@ -387,12 +387,12 @@
                     vecs.push((name.to_owned(), values))
                 }
             )+
    -        eprintln!("{}", $crate::vvec(&vecs));
    +        eprintln!("{}", $crate::vvec(&vecs));
         };
     }
     
     #[macro_export]
    -macro_rules! hvec {
    +macro_rules! hvec {
         ($($(@field $field:ident)* $vecs:expr),+ $(,)?) => {
             let mut vecs = Vec::new();
             $(
    @@ -404,7 +404,7 @@
                     {
                         let mut name = name.to_owned();
                         has_field = true;
    -                    name.push_str(".");
    +                    name.push_str(".");
                         name.push_str(stringify!($field));
                         let values = (&$vecs).into_iter().map(|v| $crate::format(&v.$field)).collect::<Vec<_>>();
                         vecs.push((name, values))
    @@ -415,38 +415,38 @@
                     vecs.push((name.to_owned(), values))
                 }
             )+
    -        eprintln!("{}", $crate::hvec(&vecs));
    +        eprintln!("{}", $crate::hvec(&vecs));
         };
     }
     
     pub fn remove_ampersand(mut s: &str) -> &str {
    -    while let Some(t) = s.strip_prefix('&') {
    +    while let Some(t) = s.strip_prefix('&') {
             s = t;
         }
         s
     }
     
     pub fn format<T: fmt::Debug>(t: &T) -> String {
    -    let s = format!("{t:?}")
    -        .replace("340282366920938463463374607431768211455", "*") // u128
    -        .replace("170141183460469231731687303715884105727", "*") // i128
    -        .replace("18446744073709551615", "*") // u64
    -        .replace("9223372036854775807", "*") // i64
    -        .replace("-9223372036854775808", "*") // i64
    -        .replace("4294967295", "*") // u32
    -        .replace("2147483647", "*") // i32
    -        .replace("-2147483648", "*") // i32
    -        .replace("None", "*")
    -        .replace("true", "#")
    -        .replace("false", ".");
    +    let s = format!("{t:?}")
    +        .replace("340282366920938463463374607431768211455", "*") // u128
    +        .replace("170141183460469231731687303715884105727", "*") // i128
    +        .replace("18446744073709551615", "*") // u64
    +        .replace("9223372036854775807", "*") // i64
    +        .replace("-9223372036854775808", "*") // i64
    +        .replace("4294967295", "*") // u32
    +        .replace("2147483647", "*") // i32
    +        .replace("-2147483648", "*") // i32
    +        .replace("None", "*")
    +        .replace("true", "#")
    +        .replace("false", ".");
         let mut s = s.as_str();
    -    while s.starts_with("Some(") {
    -        s = s.strip_prefix("Some(").unwrap();
    -        s = s.strip_suffix(')').unwrap();
    +    while s.starts_with("Some(") {
    +        s = s.strip_prefix("Some(").unwrap();
    +        s = s.strip_suffix(')').unwrap();
         }
    -    while s.len() > 2 && s.starts_with('"') && s.ends_with('"') {
    -        s = s.strip_prefix('"').unwrap();
    -        s = s.strip_suffix('"').unwrap();
    +    while s.len() > 2 && s.starts_with('"') && s.ends_with('"') {
    +        s = s.strip_prefix('"').unwrap();
    +        s = s.strip_suffix('"').unwrap();
         }
         s.to_owned()
     }
    @@ -462,9 +462,9 @@
             vmap!(&[(0, 0)]);
             hmap!(&[(0, 0)]);
             hvec!(&[0]);
    -        hvec!(&[0], &["a", "b"]);
    +        hvec!(&[0], &["a", "b"]);
             vvec!(&[0]);
    -        vvec!(&[0], &["a", "b"]);
    +        vvec!(&[0], &["a", "b"]);
             lg!(4);
     
             let a = [0..3, 4..6];
    @@ -484,28 +484,28 @@
     
         #[test]
         fn test_bools_format() {
    -        assert_eq!(bools([false]).as_str(), "[.]");
    -        assert_eq!(bools([true]).as_str(), "[#]");
    -        assert_eq!(bools([false, true]).as_str(), "[.#]");
    -        assert_eq!(bools([true, false]).as_str(), "[#.]");
    +        assert_eq!(bools([false]).as_str(), "[.]");
    +        assert_eq!(bools([true]).as_str(), "[#]");
    +        assert_eq!(bools([false, true]).as_str(), "[.#]");
    +        assert_eq!(bools([true, false]).as_str(), "[#.]");
         }
     
         #[test]
         fn test_bools_generics() {
    -        assert_eq!(bools(<[bool; 0]>::default()).as_str(), "[]");
    -        assert_eq!(bools(<[bool; 0]>::default()).as_str(), "[]");
    -        assert_eq!(bools(<[&bool; 0]>::default()).as_str(), "[]");
    -        assert_eq!(bools(<[bool; 0]>::default().as_slice()).as_str(), "[]");
    -        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(Vec::<&bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(Vec::<&mut bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(BTreeSet::<bool>::new()).as_str(), "[]");
    -        assert_eq!(bools(empty::<bool>()).as_str(), "[]");
    -        assert_eq!(bools(empty::<bool>()).as_str(), "[]");
    -        assert_eq!(bools(empty::<&bool>()).as_str(), "[]");
    -        assert_eq!(bools(empty::<&bool>()).as_str(), "[]");
    +        assert_eq!(bools(<[bool; 0]>::default()).as_str(), "[]");
    +        assert_eq!(bools(<[bool; 0]>::default()).as_str(), "[]");
    +        assert_eq!(bools(<[&bool; 0]>::default()).as_str(), "[]");
    +        assert_eq!(bools(<[bool; 0]>::default().as_slice()).as_str(), "[]");
    +        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(Vec::<&bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(Vec::<&mut bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(Vec::<bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(BTreeSet::<bool>::new()).as_str(), "[]");
    +        assert_eq!(bools(empty::<bool>()).as_str(), "[]");
    +        assert_eq!(bools(empty::<bool>()).as_str(), "[]");
    +        assert_eq!(bools(empty::<&bool>()).as_str(), "[]");
    +        assert_eq!(bools(empty::<&bool>()).as_str(), "[]");
         }
     }
     
    \ No newline at end of file diff --git a/src/lg/map.rs.html b/src/lg/map.rs.html index bb1d75f7..af944ea9 100644 --- a/src/lg/map.rs.html +++ b/src/lg/map.rs.html @@ -1,4 +1,4 @@ -map.rs - sourcemap.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -185,9 +185,9 @@
     use std::slice;
     use std::vec;
     
    -pub fn vmap<'a, K, V, M>(title: &str, map: M) -> Table
    +pub fn vmap<'a, K, V, M>(title: &str, map: M) -> Table
     where
    -    M: Copy + Map<'a, K = K, V = V>,
    +    M: Copy + Map<'a, K = K, V = V>,
         K: fmt::Debug,
         V: fmt::Debug,
     {
    @@ -219,9 +219,9 @@
         }
     }
     
    -pub fn hmap<'a, K, V, M>(title: &str, map: M) -> Table
    +pub fn hmap<'a, K, V, M>(title: &str, map: M) -> Table
     where
    -    M: Copy + Map<'a, K = K, V = V>,
    +    M: Copy + Map<'a, K = K, V = V>,
         K: fmt::Debug,
         V: fmt::Debug,
     {
    @@ -256,15 +256,15 @@
         (k, v)
     }
     
    -pub trait Map<'a>: 'a {
    +pub trait Map<'a>: 'a {
         type K;
         type V;
    -    type I: Iterator<Item = (&'a Self::K, &'a Self::V)>;
    +    type I: Iterator<Item = (&'a Self::K, &'a Self::V)>;
         fn map_iter(self) -> Self::I;
     }
     
    -impl<'a, K, V, S> Map<'a> for &'a HashMap<K, V, S> {
    -    type I = collections::hash_map::Iter<'a, K, V>;
    +impl<'a, K, V, S> Map<'a> for &'a HashMap<K, V, S> {
    +    type I = collections::hash_map::Iter<'a, K, V>;
         type K = K;
         type V = V;
     
    @@ -273,8 +273,8 @@
         }
     }
     
    -impl<'a, K, V> Map<'a> for &'a BTreeMap<K, V> {
    -    type I = collections::btree_map::Iter<'a, K, V>;
    +impl<'a, K, V> Map<'a> for &'a BTreeMap<K, V> {
    +    type I = collections::btree_map::Iter<'a, K, V>;
         type K = K;
         type V = V;
     
    @@ -283,8 +283,8 @@
         }
     }
     
    -impl<'a, K, V> Map<'a> for &'a [(K, V)] {
    -    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
    +impl<'a, K, V> Map<'a> for &'a [(K, V)] {
    +    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
         type K = K;
         type V = V;
     
    @@ -293,8 +293,8 @@
         }
     }
     
    -impl<'a, K, V> Map<'a> for &'a Vec<(K, V)> {
    -    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
    +impl<'a, K, V> Map<'a> for &'a Vec<(K, V)> {
    +    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
         type K = K;
         type V = V;
     
    @@ -303,8 +303,8 @@
         }
     }
     
    -impl<'a, const N: usize, K, V> Map<'a> for &'a [(K, V); N] {
    -    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
    +impl<'a, const N: usize, K, V> Map<'a> for &'a [(K, V); N] {
    +    type I = iter::Map<slice::Iter<'a, (K, V)>, fn(&(K, V)) -> (&K, &V)>;
         type K = K;
         type V = V;
     
    diff --git a/src/lg/table.rs.html b/src/lg/table.rs.html
    index d515aa5a..3fe25040 100644
    --- a/src/lg/table.rs.html
    +++ b/src/lg/table.rs.html
    @@ -1,4 +1,4 @@
    -table.rs - sourcetable.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -98,8 +98,8 @@
     64
     
    use core::fmt;
     
    -const GRAY: &str = "\x1b[48;2;127;127;127;37m";
    -const RESET: &str = "\x1b[0m";
    +const GRAY: &str = "\x1b[48;2;127;127;127;37m";
    +const RESET: &str = "\x1b[0m";
     
     pub struct Table {
         pub table: Vec<Vec<Cell>>,
    @@ -117,43 +117,43 @@
     }
     
     impl fmt::Display for Table {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        struct ColumnFormat<'a> {
    -            pre: &'a str,
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        struct ColumnFormat<'a> {
    +            pre: &'a str,
                 width: usize,
    -            post: &'a str,
    +            post: &'a str,
             }
             let Self { table } = self;
             let w = table[0].len();
             assert!(table.iter().all(|row| row.len() == w));
             let column_format = (0..w)
                 .map(|j| ColumnFormat {
    -                pre: " ",
    +                pre: " ",
                     width: table
                         .iter()
                         .map(|row| row[j].text.len().max(1))
                         .max()
                         .unwrap(),
    -                post: if j == 0 { " │" } else { " " },
    +                post: if j == 0 { " │" } else { " " },
                 })
                 .collect::<Vec<_>>();
             for (i, row) in table.iter().enumerate() {
                 if i == 0 {
    -                write!(f, "{GRAY}")?;
    +                write!(f, "{GRAY}")?;
                 }
                 for (&ColumnFormat { pre, width, post }, Cell { text, align }) in
                     column_format.iter().zip(row)
                 {
    -                write!(f, "{pre}")?;
    +                write!(f, "{pre}")?;
                     match align {
    -                    Align::Left => write!(f, "{:<width$}", text)?,
    -                    Align::Center => write!(f, "{:^width$}", text)?,
    -                    Align::Right => write!(f, "{:>width$}", text)?,
    +                    Align::Left => write!(f, "{:<width$}", text)?,
    +                    Align::Center => write!(f, "{:^width$}", text)?,
    +                    Align::Right => write!(f, "{:>width$}", text)?,
                     }
    -                write!(f, "{post}")?;
    +                write!(f, "{post}")?;
                 }
                 if i == 0 {
    -                write!(f, "{RESET}")?;
    +                write!(f, "{RESET}")?;
                 }
                 writeln!(f)?;
             }
    diff --git a/src/lg/vec2.rs.html b/src/lg/vec2.rs.html
    index 5ce7c6b1..8f3289b7 100644
    --- a/src/lg/vec2.rs.html
    +++ b/src/lg/vec2.rs.html
    @@ -1,4 +1,4 @@
    -vec2.rs - sourcevec2.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -93,11 +93,11 @@
     use std::fmt;
     use std::iter;
     
    -pub fn vec2<'a, T, R, S>(title: &str, vec2: &'a S) -> Table
    +pub fn vec2<'a, T, R, S>(title: &str, vec2: &'a S) -> Table
     where
    -    T: fmt::Debug + 'a,
    -    &'a R: Copy + IntoIterator<Item = &'a T> + 'a,
    -    &'a S: Copy + IntoIterator<Item = &'a R>,
    +    T: fmt::Debug + 'a,
    +    &'a R: Copy + IntoIterator<Item = &'a T> + 'a,
    +    &'a S: Copy + IntoIterator<Item = &'a R>,
     {
         let w = vec2
             .into_iter()
    diff --git a/src/lg/vecs.rs.html b/src/lg/vecs.rs.html
    index 429b32e4..83430f8b 100644
    --- a/src/lg/vecs.rs.html
    +++ b/src/lg/vecs.rs.html
    @@ -1,4 +1,4 @@
    -vecs.rs - sourcevecs.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -163,7 +163,7 @@
                     align: Align::Center,
                 })
                 .chain(vecs.iter().map(|(_, vec)| {
    -                let v = vec.get(i).map_or("", String::as_str);
    +                let v = vec.get(i).map_or("", String::as_str);
                     Cell {
                         align: align_of(v),
                         text: v.to_string(),
    diff --git a/src/lin_ineq/lib.rs.html b/src/lin_ineq/lib.rs.html
    index 6cd1caf1..26b66aec 100644
    --- a/src/lin_ineq/lib.rs.html
    +++ b/src/lin_ineq/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -502,6 +502,9 @@
     468
     469
     470
    +471
    +472
    +473
     
    //! 一次不等式を解きます。
     //!
     //! CAUTION: [`Interval`] は [`PartialEq`], [`Hash`]
    @@ -510,7 +513,6 @@
     //! 関数とのやり取りは、[`Interval`] 型を使います。これは `[T; 2]` の透明なラッパーです。
     //! - [`Interval`] 型は [`Mul`],[`Product`] を実装しており、これは [`Interval::intersection`] を呼びだします。
     //! - [`full()`](Interval::full), [`contains()`](Interval::contains)
    -//!
     //! といった便利なメソッドがあります。
     //!
     //! 一次不等式を解く関数には次のものがあります。
    @@ -529,7 +531,7 @@
     //! ```
     //! # use {
     //! #     lin_ineq::solve,
    -//! #     i64::MIN,
    +//! #     std::i64::MIN,
     //! # };
     //! let sol = solve(2, 10); // 2x <= 10
     //! assert_eq!(sol.0, [MIN, 5]); // x <= 5
    @@ -540,7 +542,7 @@
     //! ```
     //! # use {
     //! #     lin_ineq::{solve_squeeze, Interval},
    -//! #     i64::MIN,
    +//! #     std::i64::MIN,
     //! # };
     //! let sol = solve_squeeze(3, 1, Interval([-5, 5])); // -5 <= 3x + 1 <= 5
     //! assert_eq!(sol.0, [-2, 1]); // -2 <= x <= 1
    @@ -563,11 +565,11 @@
         const ZERO: Self;
         fn div_euclid(self, rhs: Self) -> Self;
     }
    -macro_rules! impl_signed {
    +macro_rules! impl_signed {
         ($($T:ident),*) => {$(
             impl Signed for $T {
    -            const MIN: Self = $T::MIN;
    -            const MAX: Self = $T::MAX;
    +            const MIN: Self = std::$T::MIN;
    +            const MAX: Self = std::$T::MAX;
                 const ZERO: Self = 0;
                 fn div_euclid(self, rhs: Self) -> Self {
                     self.div_euclid(rhs)
    @@ -575,7 +577,7 @@
             }
         )*}
     }
    -impl_signed! { i8, i16, i32, i64, i128, isize }
    +impl_signed! { i8, i16, i32, i64, i128, isize }
     
     ////////////////////////////////////////////////////////////////////////////////
     // 関数
    @@ -641,7 +643,6 @@
     /// - [`empty()`](Self::empty) の戻り値は必ず `[MAX, MIN]`(以下、標準形と呼びます。) です。
     /// - [`normalize()`](Self::normalize) を使うと空区間はかならず標準形です。
     /// - [`intersection()`](Self::intersection) により生じる空区間は標準形とは限りません。
    -///
     /// と同じ形になります。
     ///
     ///
    @@ -692,7 +693,8 @@
         ///
         /// ```
         /// # use lin_ineq::Interval;
    -    /// assert_eq!(Interval::<i64>::full().0, [i64::MIN, i64::MAX]);
    +    /// # use std::i64::{MIN, MAX};
    +    /// assert_eq!(Interval::<i64>::full().0, [MIN, MAX]);
         /// ```
         pub fn full() -> Self {
             Self([T::MIN, T::MAX])
    @@ -704,7 +706,8 @@
         ///
         /// ```
         /// # use lin_ineq::Interval;
    -    /// assert_eq!(Interval::<i64>::empty().0, [i64::MAX, i64::MIN]);
    +    /// # use std::i64::{MIN, MAX};
    +    /// assert_eq!(Interval::<i64>::empty().0, [MAX, MIN]);
         /// ```
         pub fn empty() -> Self {
             Self([T::MAX, T::MIN])
    @@ -730,9 +733,10 @@
         ///
         /// ```
         /// # use lin_ineq::Interval;
    +    /// # use std::i64::{MIN, MAX};
         /// assert_eq!(Interval([0, 10]).normalize().0, [0, 10]);
         /// assert_eq!(Interval([0, 0]).normalize().0, [0, 0]);
    -    /// assert_eq!(Interval([0, -10]).normalize().0, [i64::MAX, i64::MIN]);
    +    /// assert_eq!(Interval([0, -10]).normalize().0, [MAX, MIN]);
         /// ```
         pub fn normalize(self) -> Self {
             if self.is_empty() {
    @@ -750,15 +754,15 @@
             self.intersection(rhs)
         }
     }
    -impl<'a, T: Signed> Mul<&'a Self> for Interval<T> {
    +impl<'a, T: Signed> Mul<&'a Self> for Interval<T> {
         type Output = Self;
     
         /// [`intersection()`](Self::intersection) を呼び出します。
    -    fn mul(self, rhs: &'a Self) -> Self::Output {
    +    fn mul(self, rhs: &'a Self) -> Self::Output {
             self.intersection(*rhs)
         }
     }
    -impl<'a, T: Signed> Mul<Interval<T>> for &'a Interval<T> {
    +impl<'a, T: Signed> Mul<Interval<T>> for &'a Interval<T> {
         type Output = Interval<T>;
     
         /// [`intersection()`](Interval::intersection) を呼び出します。
    @@ -766,7 +770,7 @@
             self.intersection(rhs)
         }
     }
    -impl<'a, T: Signed> Mul for &'a Interval<T> {
    +impl<'a, T: Signed> Mul for &'a Interval<T> {
         type Output = Interval<T>;
     
         /// [`intersection()`](Interval::intersection) を呼び出します。
    @@ -780,9 +784,9 @@
             iter.fold(Self::full(), Self::mul)
         }
     }
    -impl<'a, T: 'a + Signed> Product<&'a Self> for Interval<T> {
    +impl<'a, T: 'a + Signed> Product<&'a Self> for Interval<T> {
         /// [`intersection()`](Self::intersection) で畳み込みます。
    -    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
    +    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
             iter.fold(Self::full(), Self::mul)
         }
     }
    @@ -799,15 +803,15 @@
         ///
         /// `self = Interval([l, r])` とすると、
         ///
    -    /// - `l > r` のとき、`"Empty"`
    +    /// - `l > r` のとき、`"Empty"`
         /// - そうでないとき、`[l, r]` が
    -    ///     - `[MIN, MAX]` のとき `"Full"`
    -    ///     - `[MIN, r]` のとき `"Le(r)"`
    -    ///     - `[l, MAX]` のとき `"Ge(l)"`
    -    ///     - `[l, r]` のとき `"Finite(l, r)"`
    +    ///     - `[MIN, MAX]` のとき `"Full"`
    +    ///     - `[MIN, r]` のとき `"Le(r)"`
    +    ///     - `[l, MAX]` のとき `"Ge(l)"`
    +    ///     - `[l, r]` のとき `"Finite(l, r)"`
         ///
         /// とフォーマットします。
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             #[derive(Debug)]
             enum Human<T> {
                 Full,
    @@ -845,6 +849,8 @@
         use rand::prelude::StdRng;
         use rand::Rng;
         use rand::SeedableRng;
    +    use std::i64::MAX;
    +    use std::i64::MIN;
         use std::iter::repeat_with;
     
         ////////////////////////////////////////////////////////////////////////////////
    @@ -884,12 +890,12 @@
     
         #[test]
         fn test_full() {
    -        assert_eq!(Interval::<i64>::full().0, [i64::MIN, i64::MAX]);
    +        assert_eq!(Interval::<i64>::full().0, [MIN, MAX]);
         }
     
         #[test]
         fn test_empty() {
    -        assert_eq!(Interval::<i64>::empty().0, [i64::MAX, i64::MIN]);
    +        assert_eq!(Interval::<i64>::empty().0, [MAX, MIN]);
         }
     
         #[test]
    @@ -911,14 +917,14 @@
         #[test]
         fn test_debug() {
             fn debug(x: Interval<i64>) -> String {
    -            format!("{:?}", x)
    +            format!("{:?}", x)
             }
    -        assert_eq!(debug(Interval([0, 2])).as_str(), "Finite(0, 2)");
    -        assert_eq!(debug(Interval([0, i64::MAX])).as_str(), "Ge(0)");
    -        assert_eq!(debug(Interval([i64::MIN, 2])).as_str(), "Le(2)");
    -        assert_eq!(debug(Interval([i64::MIN, i64::MAX])).as_str(), "Full");
    -        assert_eq!(debug(Interval([i64::MAX, i64::MIN])).as_str(), "Empty");
    -        assert_eq!(debug(Interval([2, 0])).as_str(), "Empty");
    +        assert_eq!(debug(Interval([0, 2])).as_str(), "Finite(0, 2)");
    +        assert_eq!(debug(Interval([0, MAX])).as_str(), "Ge(0)");
    +        assert_eq!(debug(Interval([MIN, 2])).as_str(), "Le(2)");
    +        assert_eq!(debug(Interval([MIN, MAX])).as_str(), "Full");
    +        assert_eq!(debug(Interval([MAX, MIN])).as_str(), "Empty");
    +        assert_eq!(debug(Interval([2, 0])).as_str(), "Empty");
         }
     
         #[test]
    @@ -947,7 +953,7 @@
                 let b = rng.gen_range(-9..=9);
                 let sol = solve(a, b);
                 for x in -200..=200 {
    -                assert_eq!(sol.contains(x), a * x <= b, "x = {}", x);
    +                assert_eq!(sol.contains(x), a * x <= b, "x = {}", x);
                 }
             }
         }
    @@ -965,7 +971,7 @@
                     assert_eq!(
                         sol.contains(x),
                         (y_min..=y_max).contains(&(a * x + b)),
    -                    "x = {}",
    +                    "x = {}",
                         x
                     )
                 }
    diff --git a/src/link_cut_tree/base.rs.html b/src/link_cut_tree/base.rs.html
    index c0a9492f..01d92d83 100644
    --- a/src/link_cut_tree/base.rs.html
    +++ b/src/link_cut_tree/base.rs.html
    @@ -1,4 +1,4 @@
    -base.rs - sourcebase.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -471,11 +471,11 @@
                 let c = std::ptr::addr_of_mut!(self.nodes[c]);
                 let p = std::ptr::addr_of_mut!(self.nodes[p]);
                 expose(c);
    -            assert!((*c).left.is_null(), "c = {} is not a root", (*c).id);
    +            assert!((*c).left.is_null(), "c = {} is not a root", (*c).id);
                 expose(p);
                 assert!(
                     (*c).parent.is_null(),
    -                "c = {} and p = {} are already connected",
    +                "c = {} and p = {} are already connected",
                     (*c).id,
                     (*p).id
                 );
    diff --git a/src/link_cut_tree/lib.rs.html b/src/link_cut_tree/lib.rs.html
    index de355695..b454fd0d 100644
    --- a/src/link_cut_tree/lib.rs.html
    +++ b/src/link_cut_tree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/low_link/lib.rs.html b/src/low_link/lib.rs.html
    index 7b98561e..a41e9d0c 100644
    --- a/src/low_link/lib.rs.html
    +++ b/src/low_link/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/make_graph/lib.rs.html b/src/make_graph/lib.rs.html
    index 99f01cb6..5a1f6d56 100644
    --- a/src/make_graph/lib.rs.html
    +++ b/src/make_graph/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/manacher/lib.rs.html b/src/manacher/lib.rs.html
    index 348674cc..321ef18d 100644
    --- a/src/manacher/lib.rs.html
    +++ b/src/manacher/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -139,7 +139,7 @@
     105
     106
     107
    -
    //! # Manacher's algorithm
    +
    //! # Manacher's algorithm
     
     /// Returns the palindrome array $A$ of the given string $s$.
     ///
    @@ -157,12 +157,12 @@
     ///
     /// # Example
     ///
    -/// If $s = \text{"mississippi"}$, then
    +/// If $s = \text{"mississippi"}$, then
     /// $A = [0, 1, 0, 1, 0, 1, 4, 1, 0, 7, 0, 1, 4, 1, 0, 1, 0, 1, 4, 1, 0, 1, 0]$.
     ///
     /// ```
     /// # use manacher::manacher;
    -/// let s = "mississippi";
    +/// let s = "mississippi";
     /// let a = manacher(s.as_bytes());
     /// assert_eq!(a, vec![
     ///     0, 1, 0, 1, 0, 1, 4, 1, 0, 7, 0, 1, 4, 1, 0, 1, 0, 1, 4, 1, 0, 1, 0
    diff --git a/src/mincost_flow/lib.rs.html b/src/mincost_flow/lib.rs.html
    index 227c1a9b..9d7242b3 100644
    --- a/src/mincost_flow/lib.rs.html
    +++ b/src/mincost_flow/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -298,6 +298,8 @@
     264
     265
     266
    +267
    +268
     
    //! Dijkstra 法の最短路反復により、最小費用流問題を解きます。
     //!
     //! [See the document of `MinCostFlow`](MinCostFlow)
    @@ -305,6 +307,7 @@
     use std::cmp::Reverse;
     use std::collections::BinaryHeap;
     use std::fmt::Debug;
    +use std::i64::MAX;
     use std::mem::replace;
     
     /// [`MinCostFlow::get_edge`] の戻り値型
    @@ -317,10 +320,10 @@
         cost: i64,
     }
     impl Debug for Edge {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             fn fmt_i64(x: i64) -> String {
    -            if x == i64::MAX {
    -                "_".to_owned()
    +            if x == MAX {
    +                "_".to_owned()
                 } else {
                     x.to_string()
                 }
    @@ -334,7 +337,7 @@
             } = self;
             write!(
                 f,
    -            "({}->{}, {}/{}, {})",
    +            "({}->{}, {}/{}, {})",
                 from,
                 to,
                 fmt_i64(flow),
    @@ -366,7 +369,7 @@
     /// mcf.add_edge(0, 2, 1, 20);
     /// mcf.add_edge(1, 2, 1, 10);
     ///
    -/// let slope = mcf.slope(0, 2, i64::MAX);
    +/// let slope = mcf.slope(0, 2, std::i64::MAX);
     /// assert_eq!(slope, vec![(0, 0), (1, 20), (2, 50)]);
     /// ```
     ///
    @@ -378,7 +381,7 @@
         edge_position: Vec<[usize; 2]>,
     }
     impl Debug for MinCostFlow {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list()
                 .entries((0..self.g.len()).map(|i| self.get_edge(i)))
                 .finish()
    @@ -450,7 +453,7 @@
             let mut slope = vec![(0, 0)];
             let mut flow = 0;
             let mut cost = 0;
    -        let mut prev_price = i64::MAX;
    +        let mut prev_price = MAX;
             while flow < flow_limit {
                 let mut dual = vec![0; n];
                 let mut used = vec![false; n];
    @@ -501,7 +504,7 @@
         ) -> bool {
             let mut heap = BinaryHeap::<(Reverse<i64>, usize)>::new();
             heap.push((Reverse(0), source));
    -        let mut dist = vec![i64::MAX; self.g.len()];
    +        let mut dist = vec![MAX; self.g.len()];
             dist[source] = 0;
             while let Some((Reverse(dx), x)) = heap.pop() {
                 used[x] = true;
    @@ -535,6 +538,7 @@
     #[cfg(test)]
     mod tests {
         use super::MinCostFlow;
    +    use std::i64::MAX;
     
         #[test]
         fn test_mincost_flow() {
    @@ -553,7 +557,7 @@
             assert_eq!(graph.add_edge(0, 1, 1, 1), 0);
             assert_eq!(graph.add_edge(1, 2, 1, 0), 1);
             assert_eq!(graph.add_edge(0, 2, 2, 1), 2);
    -        assert_eq!(&graph.slope(0, 2, i64::MAX), &[(0, 0), (3, 3)]);
    +        assert_eq!(&graph.slope(0, 2, MAX), &[(0, 0), (3, 3)]);
         }
     
         #[test]
    @@ -561,7 +565,7 @@
             let mut graph = MinCostFlow::new(3);
             assert_eq!(graph.add_edge(0, 1, 1, 1), 0);
             assert_eq!(graph.add_edge(1, 2, 1, 0), 1);
    -        assert_eq!(graph.slope(0, 2, i64::MAX), &[(0, 0), (1, 1)]);
    +        assert_eq!(graph.slope(0, 2, MAX), &[(0, 0), (1, 1)]);
         }
     }
     
    \ No newline at end of file diff --git a/src/monotone_minima/lib.rs.html b/src/monotone_minima/lib.rs.html index c652a4c8..7da38cb9 100644 --- a/src/monotone_minima/lib.rs.html +++ b/src/monotone_minima/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -343,6 +343,8 @@
     309
     310
     311
    +312
    +313
     
    //! Monotone minima のアルゴリズムと、それによる tropical convolutions を提供します。
     //!
     //! # 問題例
    @@ -596,7 +598,8 @@
         }
     
         fn minplus_convolution_brute(a: &[i32], b: &[i32]) -> Vec<i32> {
    -        let mut c = vec![i32::MAX; a.len() + b.len() - 1];
    +        use std::i32::MAX;
    +        let mut c = vec![MAX; a.len() + b.len() - 1];
             for (i, &x) in a.iter().enumerate() {
                 for (j, &y) in b.iter().enumerate() {
                     c[i + j] = c[i + j].min(x + y);
    @@ -632,7 +635,8 @@
         }
     
         fn maxplus_convolution_brute(a: &[i32], b: &[i32]) -> Vec<i32> {
    -        let mut c = vec![i32::MIN; a.len() + b.len() - 1];
    +        use std::i32::MIN;
    +        let mut c = vec![MIN; a.len() + b.len() - 1];
             for (i, &x) in a.iter().enumerate() {
                 for (j, &y) in b.iter().enumerate() {
                     c[i + j] = c[i + j].max(x + y);
    diff --git a/src/naive_poly/lib.rs.html b/src/naive_poly/lib.rs.html
    index c278eed3..e1a99205 100644
    --- a/src/naive_poly/lib.rs.html
    +++ b/src/naive_poly/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -499,7 +499,7 @@
         T: Copy + Sum<T> + Mul<Output = T> + AddAssign,
     {
         if a.is_empty() || b.is_empty() {
    -        return Vec::new();
    +        return vec![zero(); 0];
         }
         let mut c = vec![zero(); a.len() + b.len() - 1];
         for (i, &ai) in a.iter().enumerate() {
    @@ -561,7 +561,7 @@
     {
         assert!(!b.is_empty() && *b.last().unwrap() != zero::<T>());
         if a.len() < b.len() {
    -        return Vec::new();
    +        return vec![zero(); 0];
         }
         let mut c = vec![zero(); a.len() + 1 - b.len()];
         for i in (0..c.len()).rev() {
    @@ -805,7 +805,7 @@
         }
         impl Sum<MinPlus> for MinPlus {
             fn sum<I: Iterator<Item = MinPlus>>(iter: I) -> Self {
    -            iter.fold(MinPlus(u64::MAX), |a, b| a + b)
    +            iter.fold(MinPlus(std::u64::MAX), |a, b| a + b)
             }
         }
         impl Mul for MinPlus {
    @@ -864,7 +864,7 @@
                     assert_eq!(c.len(), a.len() + b.len() - 1);
                 }
                 for k in 0..c.len() {
    -                let mut x = u64::MAX;
    +                let mut x = std::u64::MAX;
                     for i in k.saturating_sub(b.len() - 1)..=k.min(a.len() - 1) {
                         x = x.min(a[i].0 + b[k - i].0);
                     }
    diff --git a/src/newton/lib.rs.html b/src/newton/lib.rs.html
    index 0ead9576..d25f8ed0 100644
    --- a/src/newton/lib.rs.html
    +++ b/src/newton/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -203,13 +203,13 @@
                 assert!(square(x) <= y);
                 assert!(y < square(x + 1));
             }
    -        for &y in &[u64::MAX / 2, u64::MAX / 2 + 1] {
    +        for &y in &[std::u64::MAX / 2, std::u64::MAX / 2 + 1] {
                 let x = sqrt(y);
                 assert!(square(x) <= y);
                 assert!(y < square(x + 1));
             }
             for _ in 0..100 {
    -            let y = rng.gen_range(0..u64::MAX / 2);
    +            let y = rng.gen_range(0..std::u64::MAX / 2);
                 let x = sqrt(y);
                 assert!(square(x) <= y);
                 assert!(y < square(x + 1));
    @@ -243,7 +243,7 @@
                 assert!(y < triangular(x + 1));
             }
             for _ in 0..100 {
    -            let y = rng.gen_range(0..u64::MAX / 4);
    +            let y = rng.gen_range(0..std::u64::MAX / 4);
                 let x = triangular_root(y);
                 assert!(triangular(x) <= y);
                 assert!(y < triangular(x + 1));
    diff --git a/src/next_permutation/lib.rs.html b/src/next_permutation/lib.rs.html
    index 4d4e4c95..354feef6 100644
    --- a/src/next_permutation/lib.rs.html
    +++ b/src/next_permutation/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/numeric_search/lib.rs.html b/src/numeric_search/lib.rs.html
    index 98a42fd1..360633fc 100644
    --- a/src/numeric_search/lib.rs.html
    +++ b/src/numeric_search/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -572,6 +572,18 @@
     538
     539
     540
    +541
    +542
    +543
    +544
    +545
    +546
    +547
    +548
    +549
    +550
    +551
    +552
     
    //! Run classic binary or exponential search on integer or floating point numbers.
     //!
     //! Both classic binary seach and exponential search has their streangth and weakness.
    @@ -617,8 +629,8 @@
         fn sqrt(self) -> Self;
     }
     impl Float for f32 {
    -    const INFINITY: Self = f32::INFINITY;
    -    const NEG_INFINITY: Self = f32::NEG_INFINITY;
    +    const INFINITY: Self = std::f32::INFINITY;
    +    const NEG_INFINITY: Self = std::f32::NEG_INFINITY;
         const ONE: Self = 1.0;
         const ZERO: Self = 0.0;
     
    @@ -627,8 +639,8 @@
         }
     }
     impl Float for f64 {
    -    const INFINITY: Self = f64::INFINITY;
    -    const NEG_INFINITY: Self = f64::NEG_INFINITY;
    +    const INFINITY: Self = std::f64::INFINITY;
    +    const NEG_INFINITY: Self = std::f64::NEG_INFINITY;
         const ONE: Self = 1.0;
         const ZERO: Self = 0.0;
     
    @@ -647,7 +659,7 @@
     /// This trial always succeeds provided that
     ///
     /// - $f$ is monotone from $\mathbb { F }$ to $\mathbb { T }$ and
    -/// - there exist such $x$'s in `-T::MAX.sqrt()..=T::MAX.sqrt()`.
    +/// - there exist such $x$'s in `-T::MAX.sqrt()..=T::MAX.sqrt()`.
     ///
     /// If it falis to find it, it returns `T::{INFINITY, NEG_INFINITY}`.
     ///
    @@ -757,7 +769,7 @@
         /// $1$
         const ONE: Self;
     }
    -macro_rules! impl_unsigned {
    +macro_rules! impl_unsigned {
         ($($ty:ty),*) => {$(
             impl Unsigned for $ty {
                 const ZERO: Self = 0;
    @@ -765,7 +777,7 @@
             }
         )*};
     }
    -impl_unsigned! { u8, u16, u32, u64, u128, usize }
    +impl_unsigned! { u8, u16, u32, u64, u128, usize }
     
     /// Run an exponential search on unsigned numbers.
     ///
    @@ -860,17 +872,17 @@
         const MIN: Self;
         const MAX: Self;
     }
    -macro_rules! impl_signed {
    +macro_rules! impl_signed {
         ($($ty:ident),*) => {$(
             impl Signed for $ty {
                 const ZERO: Self = 0;
                 const ONE: Self = 1;
    -            const MIN: Self = $ty::MIN;
    -            const MAX: Self = $ty::MAX;
    +            const MIN: Self = std::$ty::MIN;
    +            const MAX: Self = std::$ty::MAX;
             }
         )*};
     }
    -impl_signed! { i8, i16, i32, i64, i128 }
    +impl_signed! { i8, i16, i32, i64, i128 }
     
     /// Run an exponential search on unsigned numbers.
     ///
    @@ -890,7 +902,7 @@
     /// # use numeric_search::exp_search_signed;
     /// assert_eq!(exp_search_signed(|x| 6 <= x), Some(6));
     /// assert_eq!(exp_search_signed(|_: i32| false), None);
    -/// assert_eq!(exp_search_signed(|_: i32| true), Some(i32::MIN));
    +/// assert_eq!(exp_search_signed(|_: i32| true), Some(std::i32::MIN));
     /// ```
     pub fn exp_search_signed<T: Signed>(mut f: impl FnMut(T) -> bool) -> Option<T> {
         let mut lower;
    @@ -976,6 +988,12 @@
     
         #[test]
         fn test_exponential_search_f64() {
    +        use std::f64::EPSILON;
    +        use std::f64::INFINITY;
    +        use std::f64::MAX;
    +        use std::f64::MIN_POSITIVE;
    +        use std::f64::NEG_INFINITY;
    +
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..2000 {
                 let expected: f64 = if rng.gen_bool(0.5) { 1.0 } else { -1.0 }
    @@ -993,16 +1011,16 @@
                 // Succeeds
                 (0.0, 0.0),
                 (-0.0, 0.0),
    -            (f64::INFINITY, f64::INFINITY),
    -            (f64::NEG_INFINITY, f64::NEG_INFINITY),
    -            (f64::EPSILON, f64::EPSILON),
    -            (f64::MAX.sqrt(), f64::MAX.sqrt()),
    -            (-f64::MAX.sqrt(), -f64::MAX.sqrt()),
    -            (f64::MIN_POSITIVE, f64::MIN_POSITIVE),
    -            (-f64::MIN_POSITIVE, -f64::MIN_POSITIVE),
    +            (INFINITY, INFINITY),
    +            (NEG_INFINITY, NEG_INFINITY),
    +            (EPSILON, EPSILON),
    +            (MAX.sqrt(), MAX.sqrt()),
    +            (-MAX.sqrt(), -MAX.sqrt()),
    +            (MIN_POSITIVE, MIN_POSITIVE),
    +            (-MIN_POSITIVE, -MIN_POSITIVE),
                 // Fails
    -            (f64::MAX.sqrt() * 1.000_000_000_001, f64::INFINITY),
    -            (-f64::MAX.sqrt() * 1.000_000_000_001, f64::NEG_INFINITY),
    +            (MAX.sqrt() * 1.000_000_000_001, INFINITY),
    +            (-MAX.sqrt() * 1.000_000_000_001, NEG_INFINITY),
             ] {
                 let result = exp_search_float(|x| threshold <= x);
                 assert_eq!(result, expected);
    @@ -1011,6 +1029,12 @@
     
         #[test]
         fn test_exponential_search_f32() {
    +        use std::f32::EPSILON;
    +        use std::f32::INFINITY;
    +        use std::f32::MAX;
    +        use std::f32::MIN_POSITIVE;
    +        use std::f32::NEG_INFINITY;
    +
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..2000 {
                 let expected: f32 =
    @@ -1028,16 +1052,16 @@
                 // Succeeds
                 (0.0, 0.0),
                 (-0.0, 0.0),
    -            (f32::INFINITY, f32::INFINITY),
    -            (f32::NEG_INFINITY, f32::NEG_INFINITY),
    -            (f32::EPSILON, f32::EPSILON),
    -            (f32::MAX.sqrt(), f32::MAX.sqrt()),
    -            (-f32::MAX.sqrt(), -f32::MAX.sqrt()),
    -            (f32::MIN_POSITIVE, f32::MIN_POSITIVE),
    -            (-f32::MIN_POSITIVE, -f32::MIN_POSITIVE),
    +            (INFINITY, INFINITY),
    +            (NEG_INFINITY, NEG_INFINITY),
    +            (EPSILON, EPSILON),
    +            (MAX.sqrt(), MAX.sqrt()),
    +            (-MAX.sqrt(), -MAX.sqrt()),
    +            (MIN_POSITIVE, MIN_POSITIVE),
    +            (-MIN_POSITIVE, -MIN_POSITIVE),
                 // Fails
    -            (f32::MAX.sqrt() * 1.000_001, f32::INFINITY),
    -            (-f32::MAX.sqrt() * 1.000_001, f32::NEG_INFINITY),
    +            (MAX.sqrt() * 1.000_001, INFINITY),
    +            (-MAX.sqrt() * 1.000_001, NEG_INFINITY),
             ] {
                 let result = exp_search_float(|x| threshold <= x);
                 assert_eq!(result, expected);
    diff --git a/src/open/lib.rs.html b/src/open/lib.rs.html
    deleted file mode 100644
    index 0cfb4f51..00000000
    --- a/src/open/lib.rs.html
    +++ /dev/null
    @@ -1,71 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -
    use std::ops::Bound;
    -use std::ops::Range;
    -use std::ops::RangeBounds;
    -
    -pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize> {
    -    use Bound::Excluded;
    -    use Bound::Included;
    -    use Bound::Unbounded;
    -    (match range.start_bound() {
    -        Unbounded => 0,
    -        Included(&x) => x,
    -        Excluded(&x) => x + 1,
    -    })..(match range.end_bound() {
    -        Excluded(&x) => x,
    -        Included(&x) => x + 1,
    -        Unbounded => len,
    -    })
    -}
    -
    \ No newline at end of file diff --git a/src/partially_persistent_union_find/lib.rs.html b/src/partially_persistent_union_find/lib.rs.html index a353317f..b48c9f17 100644 --- a/src/partially_persistent_union_find/lib.rs.html +++ b/src/partially_persistent_union_find/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -366,21 +366,29 @@
     332
     333
     334
    +335
    +336
    +337
    +338
    +339
     
    //! 部分永続化された、素集合データ構造です。
     //!
     //! [構造体 `PartiallyPersistentUnionFind` のドキュメントをご覧ください。](PartiallyPersistentUnionFind)
     
     use std::mem::swap;
    +use std::usize::MAX;
     
     /// 部分永続化された、素集合データ構造です。
     ///
     /// # 時刻について
     ///
    -/// `MAX` といえば `usize:MAX` のことであるとします。
    +/// `MAX` といえば `std::usize:MAX` のことであるとします。
     ///
     /// * 入力できるのは `1..=MAX`。
    -/// * 過去クエリで時刻 t を指定すると、t と同じかそれより小さな時刻のイベントが適用された状態を参照します。
    -/// * t = `MAX` でクエリすると最終状態を参照します。(仮に時刻 `MAX` にイベントが存在したとしても。)
    +/// * 過去クエリで時刻 t を指定すると、t
    +/// と同じかそれより小さな時刻のイベントが適用された状態を参照します。
    +/// * t = `MAX` でクエリすると最終状態を参照します。(仮に時刻 `MAX`
    +/// にイベントが存在したとしても。)
     ///
     /// # Examples
     ///
    @@ -426,23 +434,24 @@
     ///
     /// ```
     /// use partially_persistent_union_find::PartiallyPersistentUnionFind;
    +/// use std::usize::MAX;
     ///
     /// let mut uf = PartiallyPersistentUnionFind::new(5);
     ///
     /// // MAX にイベントをセット
    -/// uf.union(0, 1, usize::MAX);
    +/// uf.union(0, 1, MAX);
     ///
     /// // 適用前を参照
    -/// assert!(!uf.same(0, 1, usize::MAX - 1));
    +/// assert!(!uf.same(0, 1, MAX - 1));
     ///
     /// // 適用後を参照
    -/// assert!(uf.same(0, 1, usize::MAX));
    +/// assert!(uf.same(0, 1, MAX));
     /// ```
     ///
     ///
     /// # 速度面
     ///
    -/// [`size`](PartiallyPersistentUnionFind::size) を実現するために n
    +/// * [`size`](PartiallyPersistentUnionFind::size) を実現するために n
     /// 回程度の動的メモリ確保の必要なフィールド `size_history` を管理しているため、
     /// 定数倍が重くなっています。
     #[derive(Clone, Debug)]
    @@ -458,7 +467,7 @@
         ///
         /// # 制約
         ///
    -    /// `n < isize::MAX`
    +    /// `n < std::isize::MAX`
         ///
         /// # Examples
         ///
    @@ -467,10 +476,10 @@
         /// let uf = PartiallyPersistentUnionFind::new(5);
         /// ```
         pub fn new(n: usize) -> Self {
    -        assert!(n < isize::MAX as usize);
    +        assert!(n < std::isize::MAX as usize);
             Self {
                 parent: vec![-1; n],
    -            time_stamp: vec![usize::MAX; n],
    +            time_stamp: vec![MAX; n],
                 size_history: vec![Vec::new(); n],
                 last_stamp: 0,
             }
    @@ -617,6 +626,7 @@
         use rand::Rng;
         use rand::SeedableRng;
         use randtools::DistinctTwo;
    +    use std::usize::MAX;
     
         #[test]
         fn test_rand() {
    @@ -667,8 +677,8 @@
     
         fn time_brute(uf: &PartiallyPersistentUnionFind, u: usize, v: usize) -> Option<usize> {
             let mut left = 0;
    -        let mut right = usize::MAX;
    -        if uf.find(u, usize::MAX) != uf.find(v, usize::MAX) {
    +        let mut right = MAX;
    +        if uf.find(u, MAX) != uf.find(v, MAX) {
                 return None;
             }
             if u == v {
    diff --git a/src/radix_heap/lib.rs.html b/src/radix_heap/lib.rs.html
    index fe4f2d83..5380af03 100644
    --- a/src/radix_heap/lib.rs.html
    +++ b/src/radix_heap/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/randtools/algo.rs.html b/src/randtools/algo.rs.html
    index 363a86bf..85533d01 100644
    --- a/src/randtools/algo.rs.html
    +++ b/src/randtools/algo.rs.html
    @@ -1,4 +1,4 @@
    -algo.rs - sourcealgo.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/randtools/lib.rs.html b/src/randtools/lib.rs.html
    index 69ad2fab..132777ce 100644
    --- a/src/randtools/lib.rs.html
    +++ b/src/randtools/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -413,7 +413,7 @@
             for _ in 0..20 {
                 let n = rng.gen_range(1..1_000);
                 let g = rng.sample(Tree(n));
    -            println!("g = {:?}", &g);
    +            println!("g = {:?}", &g);
                 assert!(algo::is_tree(&g));
             }
         }
    diff --git a/src/rational/lib.rs.html b/src/rational/lib.rs.html
    index 26edbb0e..69af81f7 100644
    --- a/src/rational/lib.rs.html
    +++ b/src/rational/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -441,7 +441,7 @@
     pub struct Rational<T: Signed>(T, T);
     impl<T: Signed> Rational<T> {
         pub fn new(num: T, den: T) -> Self {
    -        assert_ne!(den, T::zero(), "分母 0 はだめです。: {:?}/{:?}", &num, &den);
    +        assert_ne!(den, T::zero(), "分母 0 はだめです。: {:?}/{:?}", &num, &den);
             let g = gcd(num, den).generic_abs() * den.generic_signum();
             Self(num / g, den / g)
         }
    @@ -474,11 +474,11 @@
         }
     }
     impl<T: Signed> Debug for Rational<T> {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
             if self.1 == T::one() {
    -            write!(f, "{:?}", self.0)
    +            write!(f, "{:?}", self.0)
             } else {
    -            write!(f, "{:?}/{:?}", self.0, self.1)
    +            write!(f, "{:?}/{:?}", self.0, self.1)
             }
         }
     }
    @@ -486,9 +486,9 @@
         type Err = T::Err;
     
         fn from_str(s: &str) -> Result<Self, Self::Err> {
    -        let mut s = s.split('/');
    +        let mut s = s.split('/');
             let num = match s.next() {
    -            None => panic!("空文字列は Rational 型にパースできません。"),
    +            None => panic!("空文字列は Rational 型にパースできません。"),
                 Some(x) => x.parse::<T>()?,
             };
             let den = match s.next() {
    @@ -497,7 +497,7 @@
             };
             assert!(
                 s.next().is_none(),
    -            "\"/\" が 2 つ以上ある文字列は Rational にパースできません。"
    +            "\"/\" が 2 つ以上ある文字列は Rational にパースできません。"
             );
             Ok(Self::new(num, den))
         }
    @@ -522,7 +522,7 @@
             assert_ne!(
                 rhs.0,
                 T::zero(),
    -            "有理数の 0 除算はだめです。: self = {:?}, rhs = {:?}",
    +            "有理数の 0 除算はだめです。: self = {:?}, rhs = {:?}",
                 self,
                 rhs
             );
    @@ -546,13 +546,13 @@
             iter.fold(Self(T::one(), T::one()), Mul::mul)
         }
     }
    -impl<'a, T: 'a + Signed> Sum<&'a Self> for Rational<T> {
    -    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
    +impl<'a, T: 'a + Signed> Sum<&'a Self> for Rational<T> {
    +    fn sum<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
             iter.fold(Self(T::zero(), T::one()), Add::add)
         }
     }
    -impl<'a, T: 'a + Signed> Product<&'a Self> for Rational<T> {
    -    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
    +impl<'a, T: 'a + Signed> Product<&'a Self> for Rational<T> {
    +    fn product<I: Iterator<Item = &'a Self>>(iter: I) -> Self {
             iter.fold(Self(T::one(), T::one()), Mul::mul)
         }
     }
    @@ -585,7 +585,7 @@
         fn generic_abs(self) -> Self;
         fn generic_signum(self) -> Self;
     }
    -macro_rules! impl_signed {
    +macro_rules! impl_signed {
         ($($T:ty),* $(,)?) => {$(
             impl Signed for $T {
                 fn zero() -> Self { 0 }
    @@ -595,9 +595,9 @@
             }
         )*}
     }
    -impl_signed! { i8, i16, i32, i64, i128, isize }
    +impl_signed! { i8, i16, i32, i64, i128, isize }
     
    -macro_rules! forward_ops {
    +macro_rules! forward_ops {
         ($(($trait:ident, $method_assign:ident, $method:ident),)*) => {$(
             impl<M: Signed> $trait for Rational<M> {
                 type Output = Self;
    @@ -606,21 +606,21 @@
                     self
                 }
             }
    -        impl<'a, T: Signed> $trait<Rational<T>> for &'a Rational<T> {
    +        impl<'a, T: Signed> $trait<Rational<T>> for &'a Rational<T> {
                 type Output = Rational<T>;
                 fn $method(self, other: Rational<T>) -> Self::Output {
                     $trait::$method(*self, other)
                 }
             }
     
    -        impl<'a, T: Signed> $trait<&'a Rational<T>> for Rational<T> {
    +        impl<'a, T: Signed> $trait<&'a Rational<T>> for Rational<T> {
                 type Output = Self;
                 fn $method(self, other: &Self) -> Self::Output {
                     $trait::$method(self, *other)
                 }
             }
     
    -        impl<'a, T: Signed> $trait<&'a Rational<T>> for &'a Rational<T> {
    +        impl<'a, T: Signed> $trait<&'a Rational<T>> for &'a Rational<T> {
                 type Output = Rational<T>;
                 fn $method(self, other: &Rational<T>) -> Self::Output {
                     $trait::$method(*self, *other)
    @@ -628,7 +628,7 @@
             }
         )*};
     }
    -forward_ops! {
    +forward_ops! {
         (Add, add_assign, add),
         (Sub, sub_assign, sub),
         (Mul, mul_assign, mul),
    @@ -665,7 +665,7 @@
                 let z = x + y;
                 let zf64 = xf64 + yf64;
                 println!(
    -                "{:?} + {:?} = {:?} ({:.3} + {:.3} = {:.3})",
    +                "{:?} + {:?} = {:?} ({:.3} + {:.3} = {:.3})",
                     x, y, z, xf64, yf64, zf64
                 );
                 assert_abs_diff_eq!(z.into_f64(), zf64, epsilon = 1e-6);
    @@ -681,7 +681,7 @@
                 let z = x - y;
                 let zf64 = xf64 - yf64;
                 println!(
    -                "{:?} - {:?} = {:?} ({:.3} - {:.3} = {:.3})",
    +                "{:?} - {:?} = {:?} ({:.3} - {:.3} = {:.3})",
                     x, y, z, xf64, yf64, zf64
                 );
                 assert_abs_diff_eq!(z.into_f64(), zf64, epsilon = 1e-6);
    @@ -697,7 +697,7 @@
                 let z = x * y;
                 let zf64 = xf64 * yf64;
                 println!(
    -                "{:?} * {:?} = {:?} ({:.3} * {:.3} = {:.3})",
    +                "{:?} * {:?} = {:?} ({:.3} * {:.3} = {:.3})",
                     x, y, z, xf64, yf64, zf64
                 );
                 assert_abs_diff_eq!(z.into_f64(), zf64, epsilon = 1e-6);
    @@ -713,7 +713,7 @@
                 let z = x / y;
                 let zf64 = xf64 / yf64;
                 println!(
    -                "{:?} / {:?} = {:?} ({:.3} / {:.3} = {:.3})",
    +                "{:?} / {:?} = {:?} ({:.3} / {:.3} = {:.3})",
                     x, y, z, xf64, yf64, zf64
                 );
                 assert_abs_diff_eq!(z.into_f64(), zf64, epsilon = 1e-6);
    @@ -727,7 +727,7 @@
                 let (x, xf64) = gen_rational_and_f64(&mut rng);
                 let y = -x;
                 let yf64 = -xf64;
    -            println!("neg({:?})  = -{:?} (neg({:.3}) = {:.3})", x, y, xf64, yf64);
    +            println!("neg({:?})  = -{:?} (neg({:.3}) = {:.3})", x, y, xf64, yf64);
                 assert_abs_diff_eq!(y.into_f64(), yf64, epsilon = 1e-6);
             }
         }
    @@ -741,7 +741,7 @@
                 let z = x.cmp(&y);
                 let zf64 = OrderedFloat(xf64).cmp(&OrderedFloat(yf64));
                 println!(
    -                "cmp({:?}, {:?}) = {:?} (cmp({:.3}, {:.3}) = {:?})",
    +                "cmp({:?}, {:?}) = {:?} (cmp({:.3}, {:.3}) = {:?})",
                     x, y, z, xf64, yf64, zf64
                 );
                 assert_eq!(z, zf64);
    diff --git a/src/rb/balance.rs.html b/src/rb/balance.rs.html
    index 288d6364..8738b4e8 100644
    --- a/src/rb/balance.rs.html
    +++ b/src/rb/balance.rs.html
    @@ -1,4 +1,4 @@
    -balance.rs - sourcebalance.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1072,6 +1072,12 @@
     1038
     1039
     1040
    +1041
    +1042
    +1043
    +1044
    +1045
    +1046
     
    use core::fmt;
     use std::ops::Deref;
     use std::ops::DerefMut;
    @@ -1311,8 +1317,11 @@
     }
     impl<T: Balance> Clone for Tree<T> {
         fn clone(&self) -> Self {
    -        *self
    -    }
    +        Self {
    +            root: self.root,
    +            black_height: self.black_height,
    +        }
    +    }
     }
     impl<T: Balance> Copy for Tree<T> {}
     
    @@ -1326,17 +1335,20 @@
         }
     }
     impl<T: Balance> fmt::Debug for BlackViolation<T> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("BlackViolation")
    -            .field("p", &self.p)
    -            .field("x", &self.x)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("BlackViolation")
    +            .field("p", &self.p)
    +            .field("x", &self.x)
                 .finish()
         }
     }
     impl<T: Balance> Clone for BlackViolation<T> {
         fn clone(&self) -> Self {
    -        *self
    -    }
    +        Self {
    +            p: self.p,
    +            x: self.x,
    +        }
    +    }
     }
     impl<T: Balance> Copy for BlackViolation<T> {}
     
    @@ -1411,11 +1423,11 @@
             x
         }
     
    -    pub fn as_longlife_ref<'a>(self) -> &'a T {
    +    pub fn as_longlife_ref<'a>(self) -> &'a T {
             unsafe { self.0.as_ref() }
         }
     
    -    pub fn as_longlife_mut<'a>(mut self) -> &'a mut T {
    +    pub fn as_longlife_mut<'a>(mut self) -> &'a mut T {
             unsafe { self.0.as_mut() }
         }
     }
    @@ -1438,8 +1450,8 @@
         }
     }
     impl<T> fmt::Debug for Ptr<T> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "{:02x}", self.0.as_ptr() as usize % 0x1000 / 0x10)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        write!(f, "{:02x}", self.0.as_ptr() as usize % 0x1000 / 0x10)
         }
     }
     impl<T> PartialEq for Ptr<T> {
    @@ -1461,63 +1473,63 @@
         use std::fmt;
     
         impl<T: Balance> fmt::Display for Tree<T> {
    -        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -            self.fmt_by(f, |p| format!("{:?}", p))
    +        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +            self.fmt_by(f, |p| format!("{:?}", p))
             }
         }
    -    struct TreeFormatter<'a, T: Balance, F: Fn(Ptr<T>) -> String>(&'a Tree<T>, &'a F);
    -    impl<'a, T: Balance, F: Fn(Ptr<T>) -> String> fmt::Display for TreeFormatter<'a, T, F> {
    -        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    struct TreeFormatter<'a, T: Balance, F: Fn(Ptr<T>) -> String>(&'a Tree<T>, &'a F);
    +    impl<'a, T: Balance, F: Fn(Ptr<T>) -> String> fmt::Display for TreeFormatter<'a, T, F> {
    +        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
                 self.0.fmt_by(f, |p| (self.1)(p))
             }
         }
         impl<T: Balance> Tree<T> {
             pub fn format_by<F: Fn(Ptr<T>) -> String>(&self, key: F) -> String {
    -            format!("{}", TreeFormatter(self, &key))
    +            format!("{}", TreeFormatter(self, &key))
             }
     
             fn fmt_by(
                 &self,
    -            f: &mut fmt::Formatter<'_>,
    +            f: &mut fmt::Formatter<'_>,
                 mut key: impl Fn(Ptr<T>) -> String,
             ) -> fmt::Result {
                 fn write<T: Balance>(
    -                s: &mut fmt::Formatter<'_>,
    +                s: &mut fmt::Formatter<'_>,
                     x: Option<Ptr<T>>,
                     p: Option<Ptr<T>>,
                     vios: &Violations<T>,
                     key: &mut impl Fn(Ptr<T>) -> String,
                 ) -> fmt::Result {
                     if vios.black_vios.contains(&BlackViolation { p, x }) {
    -                    write!(s, "\x1b[40m\x1b[37m«\x1b[0m")?;
    +                    write!(s, "\x1b[40m\x1b[37m«\x1b[0m")?;
                     }
                     if let Some(mut x) = x {
                         if *x.color() == Color::Black {
    -                        write!(s, "[")?
    +                        write!(s, "[")?
                         }
                         write(s, *x.left(), Some(x), vios, key)?;
                         if vios.red_vios.contains(&x) {
    -                        write!(s, "\x1b[41m\x1b[37m{}\x1b[0m", key(x))?;
    +                        write!(s, "\x1b[41m\x1b[37m{}\x1b[0m", key(x))?;
                         } else {
                             match *x.color() {
    -                            Color::Black => write!(s, "\x1b[30m{}\x1b[0m", key(x))?,
    -                            Color::Red => write!(s, "\x1b[31m{}\x1b[0m", key(x))?,
    +                            Color::Black => write!(s, "\x1b[30m{}\x1b[0m", key(x))?,
    +                            Color::Red => write!(s, "\x1b[31m{}\x1b[0m", key(x))?,
                             }
                         }
                         write(s, *x.right(), Some(x), vios, key)?;
                         if *x.color() == Color::Black {
    -                        write!(s, "]")?;
    +                        write!(s, "]")?;
                         }
                     }
                     if vios.black_vios.contains(&BlackViolation { p, x }) {
    -                    write!(s, "\x1b[40m\x1b[37m»\x1b[0m")?;
    +                    write!(s, "\x1b[40m\x1b[37m»\x1b[0m")?;
                     }
                     Ok(())
                 }
                 let vios = Violations::collect(self);
    -            write!(f, "Tree({}, \"", self.black_height)?;
    +            write!(f, "Tree({}, \"", self.black_height)?;
                 write(f, self.root, None, &vios, &mut key)?;
    -            write!(f, "\")")?;
    +            write!(f, "\")")?;
                 Ok(())
             }
     
    @@ -1692,7 +1704,7 @@
                         || left_height + 1 == right_height)
                         .then_some(())
                         .ok_or_else(|| {
    -                        format!("The difference of black height is greater than 1: {:?}", x)
    +                        format!("The difference of black height is greater than 1: {:?}", x)
                         })?;
     
                     // Parent pointer incinsistency
    @@ -1700,8 +1712,8 @@
                         let p = *left.parent();
                         (p == Some(x)).then_some(()).ok_or_else(|| {
                             format!(
    -                            "parent pointer inconsistency between {:?} and its left child {:?}. \
    -                             The parent of the left child is {:?}",
    +                            "parent pointer inconsistency between {:?} and its left child {:?}. \
    +                             The parent of the left child is {:?}",
                                 x, left, p,
                             )
                         })?;
    @@ -1710,8 +1722,8 @@
                         let p = *right.parent();
                         (p == Some(x)).then_some(()).ok_or_else(|| {
                             format!(
    -                            "parent pointer inconsistency between {:?} and its right child {:?}. \
    -                             The parent of the right child is {:?}",
    +                            "parent pointer inconsistency between {:?} and its right child {:?}. \
    +                             The parent of the right child is {:?}",
                                 x, right, p,
                             )
                         })?;
    @@ -1722,16 +1734,16 @@
                     let h = validate(self.root)?;
                     (self.black_height == h || self.black_height == h + 1)
                         .then_some(())
    -                    .ok_or_else(|| format!("black height of {} is not {}", self, h))?;
    +                    .ok_or_else(|| format!("black height of {} is not {}", self, h))?;
                     if let Some(mut x) = self.root {
                         // Parent is None
                         (x.parent().is_none())
                             .then_some(())
    -                        .ok_or_else(|| format!("parent of {:?} is not None", x))?;
    +                        .ok_or_else(|| format!("parent of {:?} is not None", x))?;
                     }
                     Ok(())
                 }()
    -            .unwrap_or_else(|e| panic!("Validation error: {}\nTree: {}", e, self))
    +            .unwrap_or_else(|e| panic!("Validation error: {}\nTree: {}", e, self))
             }
     
             pub fn collect(&self) -> Vec<Ptr<T>> {
    @@ -1767,10 +1779,10 @@
             }
         }
         impl<T: Balance> fmt::Debug for Violations<T> {
    -        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -            f.debug_struct("Violations")
    -                .field("red_vios", &self.red_vios)
    -                .field("black_vios", &self.black_vios)
    +        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +            f.debug_struct("Violations")
    +                .field("red_vios", &self.red_vios)
    +                .field("black_vios", &self.black_vios)
                     .finish()
             }
         }
    @@ -1875,13 +1887,13 @@
                 let h = rng.gen_range(0..=4);
                 let (tree, expected_violations) =
                     Tree::random(&mut rng, new_node, h, false, false, false);
    -            assert_eq!(tree.black_height, h, "{}", tree);
    -            assert_eq!(expected_violations.red_vios.len(), 0, "{}", tree);
    -            assert_eq!(expected_violations.black_vios.len(), 0, "{}", tree);
    +            assert_eq!(tree.black_height, h, "{}", tree);
    +            assert_eq!(expected_violations.red_vios.len(), 0, "{}", tree);
    +            assert_eq!(expected_violations.black_vios.len(), 0, "{}", tree);
                 tree.validate();
     
                 let actual_violations = Violations::collect(&tree);
    -            assert_eq!(expected_violations, actual_violations, "{}", tree);
    +            assert_eq!(expected_violations, actual_violations, "{}", tree);
             }
         }
     
    @@ -1892,13 +1904,13 @@
                 let h = rng.gen_range(0..=4);
                 let (tree, expected_violations) =
                     Tree::random(&mut rng, new_node, h, true, false, false);
    -            assert_eq!(tree.black_height, h, "{}", tree);
    -            assert_eq!(expected_violations.red_vios.len(), 1, "{}", tree);
    -            assert_eq!(expected_violations.black_vios.len(), 0, "{}", tree);
    +            assert_eq!(tree.black_height, h, "{}", tree);
    +            assert_eq!(expected_violations.red_vios.len(), 1, "{}", tree);
    +            assert_eq!(expected_violations.black_vios.len(), 0, "{}", tree);
                 tree.validate();
     
                 let actual_violations = Violations::collect(&tree);
    -            assert_eq!(expected_violations, actual_violations, "{}", tree);
    +            assert_eq!(expected_violations, actual_violations, "{}", tree);
             }
         }
     
    @@ -1909,13 +1921,13 @@
                 let h = rng.gen_range(1..=4);
                 let (tree, expected_violations) =
                     Tree::random(&mut rng, new_node, h, false, true, false);
    -            assert_eq!(tree.black_height, h, "{}", tree);
    -            assert_eq!(expected_violations.red_vios.len(), 0, "{}", tree);
    -            assert_eq!(expected_violations.black_vios.len(), 1, "{}", tree);
    +            assert_eq!(tree.black_height, h, "{}", tree);
    +            assert_eq!(expected_violations.red_vios.len(), 0, "{}", tree);
    +            assert_eq!(expected_violations.black_vios.len(), 1, "{}", tree);
                 tree.validate();
     
                 let actual_violations = Violations::collect(&tree);
    -            assert_eq!(expected_violations, actual_violations, "{}", tree);
    +            assert_eq!(expected_violations, actual_violations, "{}", tree);
             }
         }
     
    @@ -2044,7 +2056,7 @@
                         let expected = sum(p.left) + p.value + sum(p.right);
                         (p.sum == expected).then_some(()).ok_or_else(|| {
                             format!(
    -                            "Sum is incorrect at {:?}. Expected {}, but cached {}",
    +                            "Sum is incorrect at {:?}. Expected {}, but cached {}",
                                 p, expected, p.sum
                             )
                         })?;
    @@ -2054,8 +2066,8 @@
                 }
                 validate_sum(self.root).unwrap_or_else(|e| {
                     panic!(
    -                    "{e}:\n Tree: {}",
    -                    self.format_by(|p| format!("<{:?}:{},{}>", p, p.value, p.sum))
    +                    "{e}:\n Tree: {}",
    +                    self.format_by(|p| format!("<{:?}:{},{}>", p, p.value, p.sum))
                     )
                 });
             }
    diff --git a/src/rb/lib.rs.html b/src/rb/lib.rs.html
    index c783c459..03a5203f 100644
    --- a/src/rb/lib.rs.html
    +++ b/src/rb/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/rb/map.rs.html b/src/rb/map.rs.html
    index 8905f257..6eff48ba 100644
    --- a/src/rb/map.rs.html
    +++ b/src/rb/map.rs.html
    @@ -1,4 +1,4 @@
    -map.rs - sourcemap.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -769,6 +769,10 @@
     735
     736
     737
    +738
    +739
    +740
    +741
     
    pub(crate) use crate::balance::Balance;
     use crate::balance::BlackViolation;
     use crate::balance::Color;
    @@ -899,7 +903,7 @@
             self.tree.root.is_none()
         }
     
    -    pub fn iter(&self) -> SegmapIter<'_, K, O> {
    +    pub fn iter(&self) -> SegmapIter<'_, K, O> {
             SegmapIter {
                 start: self.tree.min(),
                 end: self.tree.max(),
    @@ -918,9 +922,10 @@
             (&x.key, &mut x.value)
         }
     
    -    pub fn binary_search<Q: ?Sized + Ord>(&self, key: &Q) -> Result<(&O::Value, usize), usize>
    +    pub fn binary_search<Q: ?Sized>(&self, key: &Q) -> Result<(&O::Value, usize), usize>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
             self.binary_search_ptr(key)
                 .map(|(x, i)| (&x.as_longlife_ref().value, i))
    @@ -992,9 +997,10 @@
             }
         }
     
    -    pub fn remove<Q: ?Sized + Ord>(&mut self, key: &Q) -> Option<(K, O::Value)>
    +    pub fn remove<Q: ?Sized>(&mut self, key: &Q) -> Option<(K, O::Value)>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
             let x = self.binary_search_ptr(key).ok()?.0;
             self.remove_ptr(x);
    @@ -1012,7 +1018,7 @@
         fn nth_ptr(&self, mut n: usize) -> Ptr<Node<K, O>> {
             assert!(
                 n < self.len(),
    -            "Index out of range: n = {n}, while len = {}",
    +            "Index out of range: n = {n}, while len = {}",
                 self.len()
             );
             let mut x = self.tree.root.unwrap();
    @@ -1030,12 +1036,10 @@
             x
         }
     
    -    pub fn binary_search_ptr<Q: ?Sized + Ord>(
    -        &self,
    -        key: &Q,
    -    ) -> Result<(Ptr<Node<K, O>>, usize), usize>
    +    pub fn binary_search_ptr<Q: ?Sized>(&self, key: &Q) -> Result<(Ptr<Node<K, O>>, usize), usize>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
             let mut x = self.tree.root.ok_or(0usize)?;
             let mut index = 0;
    @@ -1115,23 +1119,23 @@
             Self::new()
         }
     }
    -impl<'a, K: Ord, O: MultimapOp> IntoIterator for &'a MultimapSeg<K, O> {
    -    type IntoIter = SegmapIter<'a, K, O>;
    -    type Item = (&'a K, &'a O::Value);
    +impl<'a, K: Ord, O: MultimapOp> IntoIterator for &'a MultimapSeg<K, O> {
    +    type IntoIter = SegmapIter<'a, K, O>;
    +    type Item = (&'a K, &'a O::Value);
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
         }
     }
     
    -pub struct SegmapIter<'a, K: Ord, O: MultimapOp> {
    +pub struct SegmapIter<'a, K: Ord, O: MultimapOp> {
         start: Option<Ptr<Node<K, O>>>,
         end: Option<Ptr<Node<K, O>>>,
         len: usize,
    -    marker: PhantomData<&'a (K, O)>,
    +    marker: PhantomData<&'a (K, O)>,
     }
    -impl<'a, K: Ord, O: MultimapOp> Iterator for SegmapIter<'a, K, O> {
    -    type Item = (&'a K, &'a O::Value);
    +impl<'a, K: Ord, O: MultimapOp> Iterator for SegmapIter<'a, K, O> {
    +    type Item = (&'a K, &'a O::Value);
     
         fn next(&mut self) -> Option<Self::Item> {
             if self.len == 0 {
    @@ -1148,7 +1152,7 @@
             (self.len, Some(self.len))
         }
     }
    -impl<'a, K: Ord, O: MultimapOp> DoubleEndedIterator for SegmapIter<'a, K, O> {
    +impl<'a, K: Ord, O: MultimapOp> DoubleEndedIterator for SegmapIter<'a, K, O> {
         fn next_back(&mut self) -> Option<Self::Item> {
             if self.len == 0 {
                 return None;
    @@ -1160,7 +1164,7 @@
             Some((&x.key, &x.value))
         }
     }
    -impl<'a, K: Ord, O: MultimapOp> ExactSizeIterator for SegmapIter<'a, K, O> {}
    +impl<'a, K: Ord, O: MultimapOp> ExactSizeIterator for SegmapIter<'a, K, O> {}
     
     struct Nop<T>(PhantomData<T>);
     impl<T> MultimapOp for Nop<T> {
    @@ -1195,7 +1199,7 @@
             self.segmap.is_empty()
         }
     
    -    pub fn iter(&self) -> MultimapIter<'_, K, V> {
    +    pub fn iter(&self) -> MultimapIter<'_, K, V> {
             MultimapIter {
                 iter: self.segmap.iter(),
             }
    @@ -1205,9 +1209,10 @@
             self.segmap.nth(n)
         }
     
    -    pub fn binary_search<Q: ?Sized + Ord>(&self, key: &Q) -> Result<(&V, usize), usize>
    +    pub fn binary_search<Q: ?Sized>(&self, key: &Q) -> Result<(&V, usize), usize>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
             self.segmap.binary_search(key)
         }
    @@ -1228,9 +1233,10 @@
             self.segmap.insert(key, value)
         }
     
    -    pub fn remove<Q: ?Sized + Ord>(&mut self, key: &Q) -> Option<(K, V)>
    +    pub fn remove<Q: ?Sized>(&mut self, key: &Q) -> Option<(K, V)>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
             self.segmap.remove(key)
         }
    @@ -1245,23 +1251,23 @@
         }
     }
     impl<K: Ord + fmt::Debug, V: fmt::Debug> fmt::Debug for Multimap<K, V> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             f.debug_map().entries(self.iter()).finish()
         }
     }
    -impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V> {
    -    type IntoIter = MultimapIter<'a, K, V>;
    -    type Item = (&'a K, &'a V);
    +impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V> {
    +    type IntoIter = MultimapIter<'a, K, V>;
    +    type Item = (&'a K, &'a V);
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
         }
     }
    -pub struct MultimapIter<'a, K: Ord, V> {
    -    iter: SegmapIter<'a, K, Nop<V>>,
    +pub struct MultimapIter<'a, K: Ord, V> {
    +    iter: SegmapIter<'a, K, Nop<V>>,
     }
    -impl<'a, K: Ord, V> Iterator for MultimapIter<'a, K, V> {
    -    type Item = (&'a K, &'a V);
    +impl<'a, K: Ord, V> Iterator for MultimapIter<'a, K, V> {
    +    type Item = (&'a K, &'a V);
     
         fn next(&mut self) -> Option<Self::Item> {
             self.iter.next()
    @@ -1271,12 +1277,12 @@
             self.iter.size_hint()
         }
     }
    -impl<'a, K: Ord, V> DoubleEndedIterator for MultimapIter<'a, K, V> {
    +impl<'a, K: Ord, V> DoubleEndedIterator for MultimapIter<'a, K, V> {
         fn next_back(&mut self) -> Option<Self::Item> {
             self.iter.next_back()
         }
     }
    -impl<'a, K: Ord, V> ExactSizeIterator for MultimapIter<'a, K, V> {}
    +impl<'a, K: Ord, V> ExactSizeIterator for MultimapIter<'a, K, V> {}
     
     pub struct Multiset<K> {
         map: Multimap<K, ()>,
    @@ -1296,7 +1302,7 @@
             self.map.is_empty()
         }
     
    -    pub fn iter(&self) -> MultisetIter<'_, K> {
    +    pub fn iter(&self) -> MultisetIter<'_, K> {
             MultisetIter {
                 iter: self.map.iter(),
             }
    @@ -1306,11 +1312,12 @@
             self.map.nth(n).0
         }
     
    -    pub fn binary_search<Q: ?Sized + Ord>(&self, key: &Q) -> Result<usize, usize>
    +    pub fn binary_search<Q: ?Sized>(&self, key: &Q) -> Result<usize, usize>
         where
    -        K: Borrow<Q>,
    +        K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
    -        self.map.binary_search(key).map(|((), i)| i)
    +        self.map.binary_search(key).map(|(_, i)| i)
         }
     
         pub fn partition_point(&self, f: impl FnMut(&K) -> bool) -> usize {
    @@ -1329,11 +1336,12 @@
             self.map.insert(key, ())
         }
     
    -    pub fn remove<Q: ?Sized + Ord>(&mut self, key: &Q) -> Option<K>
    +    pub fn remove<Q: ?Sized>(&mut self, key: &Q) -> Option<K>
         where
             K: Ord + Borrow<Q>,
    +        Q: Ord,
         {
    -        self.map.remove(key).map(|(k, ())| k)
    +        self.map.remove(key).map(|(k, _)| k)
         }
     
         pub fn remove_nth(&mut self, n: usize) -> K {
    @@ -1346,38 +1354,38 @@
         }
     }
     impl<K: Ord + fmt::Debug> fmt::Debug for Multiset<K> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             f.debug_set().entries(self.iter()).finish()
         }
     }
    -impl<'a, K: Ord> IntoIterator for &'a Multiset<K> {
    -    type IntoIter = MultisetIter<'a, K>;
    -    type Item = &'a K;
    +impl<'a, K: Ord> IntoIterator for &'a Multiset<K> {
    +    type IntoIter = MultisetIter<'a, K>;
    +    type Item = &'a K;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
         }
     }
    -pub struct MultisetIter<'a, K: Ord> {
    -    iter: MultimapIter<'a, K, ()>,
    +pub struct MultisetIter<'a, K: Ord> {
    +    iter: MultimapIter<'a, K, ()>,
     }
    -impl<'a, K: Ord> Iterator for MultisetIter<'a, K> {
    -    type Item = &'a K;
    +impl<'a, K: Ord> Iterator for MultisetIter<'a, K> {
    +    type Item = &'a K;
     
         fn next(&mut self) -> Option<Self::Item> {
    -        self.iter.next().map(|(k, ())| k)
    +        self.iter.next().map(|(k, _)| k)
         }
     
         fn size_hint(&self) -> (usize, Option<usize>) {
             self.iter.size_hint()
         }
     }
    -impl<'a, K: Ord> DoubleEndedIterator for MultisetIter<'a, K> {
    +impl<'a, K: Ord> DoubleEndedIterator for MultisetIter<'a, K> {
         fn next_back(&mut self) -> Option<Self::Item> {
    -        self.iter.next_back().map(|(k, ())| k)
    +        self.iter.next_back().map(|(k, _)| k)
         }
     }
    -impl<'a, K: Ord> ExactSizeIterator for MultisetIter<'a, K> {}
    +impl<'a, K: Ord> ExactSizeIterator for MultisetIter<'a, K> {}
     
     #[cfg(test)]
     mod test_multiset {
    @@ -1409,7 +1417,7 @@
                         let expected = len(p.left) + 1 + len(p.right);
                         (p.len == expected).then_some(()).ok_or_else(|| {
                             format!(
    -                            "Len is incorrect at {:?}. Expected {}, but cached {}",
    +                            "Len is incorrect at {:?}. Expected {}, but cached {}",
                                 p, expected, p.len
                             )
                         })?;
    @@ -1419,11 +1427,11 @@
                 }
                 validate_len(self.map.segmap.tree.root).unwrap_or_else(|e| {
                     panic!(
    -                    "{e}:\n Tree: {}",
    +                    "{e}:\n Tree: {}",
                         self.map
                             .segmap
                             .tree
    -                        .format_by(|p| format!("<{:?}:{}>", p, p.len))
    +                        .format_by(|p| format!("<{:?}:{}>", p, p.len))
                     )
                 });
             }
    diff --git a/src/rb/seq.rs.html b/src/rb/seq.rs.html
    index 7faebee7..d92a2c41 100644
    --- a/src/rb/seq.rs.html
    +++ b/src/rb/seq.rs.html
    @@ -1,4 +1,4 @@
    -seq.rs - sourceseq.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1099,6 +1099,9 @@
     1065
     1066
     1067
    +1068
    +1069
    +1070
     
    #![allow(dead_code)]
     use crate::balance::Balance;
     use crate::balance::BlackViolation;
    @@ -1143,17 +1146,20 @@
         }
     
         pub fn is_leaf(&self) -> bool {
    -        if self.left.is_none() {
    -            debug_assert!(self.left.is_none());
    -            debug_assert!(self.right.is_none());
    -            debug_assert_eq!(self.len, 1);
    -            true
    -        } else {
    -            debug_assert!(self.left.is_some());
    -            debug_assert!(self.right.is_some());
    -            debug_assert_ne!(self.len, 1);
    -            false
    -        }
    +        match self.left {
    +            None => {
    +                debug_assert!(self.left.is_none());
    +                debug_assert!(self.right.is_none());
    +                debug_assert_eq!(self.len, 1);
    +                true
    +            }
    +            Some(_) => {
    +                debug_assert!(self.left.is_some());
    +                debug_assert!(self.right.is_some());
    +                debug_assert_ne!(self.len, 1);
    +                false
    +            }
    +        }
         }
     }
     impl<O: Op> Balance for Node<O> {
    @@ -1389,7 +1395,7 @@
             self.tree.root.is_none()
         }
     
    -    pub fn iter(&self) -> SegIter<'_, O> {
    +    pub fn iter(&self) -> SegIter<'_, O> {
             SegIter {
                 start: self.tree.min(),
                 end: self.tree.max(),
    @@ -1398,11 +1404,11 @@
             }
         }
     
    -    pub fn display(&self) -> SegDisplay<'_, O> {
    +    pub fn display(&self) -> SegDisplay<'_, O> {
             SegDisplay(self)
         }
     
    -    pub fn table(&self) -> SegTable<'_, O> {
    +    pub fn table(&self) -> SegTable<'_, O> {
             SegTable(self)
         }
     
    @@ -1410,7 +1416,7 @@
             &self.nth_ptr(index).as_longlife_ref().value
         }
     
    -    pub fn nth_mut(&mut self, index: usize) -> Entry<'_, O> {
    +    pub fn nth_mut(&mut self, index: usize) -> Entry<'_, O> {
             Entry {
                 p: self.nth_ptr(index),
                 marker: PhantomData,
    @@ -1421,7 +1427,7 @@
             let (start, end) = into_range(range, self.len());
             assert!(
                 start <= end && end <= self.len(),
    -            "Index out of range:\n range: {start}..{end}\n   len:{}",
    +            "Index out of range:\n range: {start}..{end}\n   len:{}",
                 self.len(),
             );
             if start == end {
    @@ -1648,50 +1654,50 @@
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             f.debug_list().entries(self).finish()
         }
     }
    -impl<'a, O: Op> IntoIterator for &'a Seg<O> {
    -    type IntoIter = SegIter<'a, O>;
    -    type Item = &'a O::Value;
    +impl<'a, O: Op> IntoIterator for &'a Seg<O> {
    +    type IntoIter = SegIter<'a, O>;
    +    type Item = &'a O::Value;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
         }
     }
    -pub struct Entry<'a, O: Op> {
    +pub struct Entry<'a, O: Op> {
         p: Ptr<Node<O>>,
    -    marker: PhantomData<&'a O>,
    +    marker: PhantomData<&'a O>,
     }
    -impl<'a, O: Op> ops::Deref for Entry<'a, O> {
    +impl<'a, O: Op> ops::Deref for Entry<'a, O> {
         type Target = O::Value;
     
         fn deref(&self) -> &Self::Target {
             &self.p.as_longlife_ref().value
         }
     }
    -impl<'a, O: Op> ops::DerefMut for Entry<'a, O> {
    +impl<'a, O: Op> ops::DerefMut for Entry<'a, O> {
         fn deref_mut(&mut self) -> &mut Self::Target {
             &mut self.p.as_longlife_mut().value
         }
     }
    -impl<'a, O: Op> Drop for Entry<'a, O> {
    +impl<'a, O: Op> Drop for Entry<'a, O> {
         fn drop(&mut self) {
             self.p.update();
             self.p.update_ancestors();
         }
     }
    -struct SegTableCell<'a, O: Op> {
    +struct SegTableCell<'a, O: Op> {
         start: usize,
         end: usize,
    -    value: &'a O::Value,
    +    value: &'a O::Value,
     }
    -pub struct SegTable<'a, O: Op>(&'a Seg<O>);
    -impl<'a, O: Op> SegTable<'a, O> {
    -    fn collect(&self) -> Vec<Vec<SegTableCell<'a, O>>> {
    -        fn traverse<'a, O: Op + 'a>(
    -            vec: &mut Vec<(usize, SegTableCell<'a, O>)>,
    +pub struct SegTable<'a, O: Op>(&'a Seg<O>);
    +impl<'a, O: Op> SegTable<'a, O> {
    +    fn collect(&self) -> Vec<Vec<SegTableCell<'a, O>>> {
    +        fn traverse<'a, O: Op + 'a>(
    +            vec: &mut Vec<(usize, SegTableCell<'a, O>)>,
                 p: Ptr<Node<O>>,
                 offset: usize,
             ) -> usize {
    @@ -1730,17 +1736,17 @@
             result
         }
     }
    -impl<'a, O: Op> fmt::Debug for SegTable<'a, O>
    +impl<'a, O: Op> fmt::Debug for SegTable<'a, O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        struct Row<'a, O: Op>(&'a [SegTableCell<'a, O>]);
    -        impl<'a, O: Op> fmt::Debug for Row<'a, O>
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        struct Row<'a, O: Op>(&'a [SegTableCell<'a, O>]);
    +        impl<'a, O: Op> fmt::Debug for Row<'a, O>
             where
                 O::Value: fmt::Debug,
             {
    -            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
                     let mut debug_map = f.debug_map();
                     for cell in self.0 {
                         if cell.start + 1 == cell.end {
    @@ -1757,22 +1763,22 @@
                 .finish()
         }
     }
    -impl<'a, O: Op> fmt::Display for SegTable<'a, O>
    +impl<'a, O: Op> fmt::Display for SegTable<'a, O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             let rows = self
                 .collect()
                 .into_iter()
                 .map(|row| {
                     row.into_iter()
    -                    .map(|cell| (cell.start..cell.end, format!("{:?}", cell.value)))
    +                    .map(|cell| (cell.start..cell.end, format!("{:?}", cell.value)))
                         .collect::<Vec<_>>()
                 })
                 .collect::<Vec<_>>();
             if rows.is_empty() {
    -            writeln!(f, "SegTable (empty)")?;
    +            writeln!(f, "SegTable (empty)")?;
                 return Ok(());
             }
             let n = rows[0].len();
    @@ -1784,12 +1790,12 @@
                     colomn_width[range.end - 1] += value.len() - current_width;
                 }
             }
    -        write!(f, "\x1b[48;2;127;127;127;37m")?;
    -        write!(f, "|")?;
    +        write!(f, "\x1b[48;2;127;127;127;37m")?;
    +        write!(f, "|")?;
             for (i, colomn_width) in colomn_width.iter().enumerate() {
    -            write!(f, "{:width$}|", i, width = colomn_width)?;
    +            write!(f, "{:width$}|", i, width = colomn_width)?;
             }
    -        write!(f, "\x1b[0m")?;
    +        write!(f, "\x1b[0m")?;
             writeln!(f)?;
             let mut refinement = vec![false; n];
             let rows = rows
    @@ -1798,7 +1804,7 @@
                 .map(|row| {
                     let mut swp = Vec::new();
                     let mut offset = 0;
    -                for (range, value) in row {
    +                for (range, value) in row.iter() {
                         refinement[range.start] = true;
                         while offset < range.start {
                             let end = (offset + 1..n).find(|&i| refinement[i]).unwrap_or(n);
    @@ -1815,23 +1821,23 @@
                 })
                 .collect::<Vec<_>>();
             for row in rows.iter().rev() {
    -            write!(f, "|")?;
    +            write!(f, "|")?;
                 for (range, value) in row {
                     let width = range.clone().map(|i| colomn_width[i]).sum::<usize>() + range.len() - 1;
                     if let Some(value) = value {
    -                    write!(f, "{:^width$}", value, width = width)?;
    +                    write!(f, "{:^width$}", value, width = width)?;
                     } else {
    -                    write!(f, "{:^width$}", "", width = width)?;
    +                    write!(f, "{:^width$}", "", width = width)?;
                     }
    -                write!(f, "|")?;
    +                write!(f, "|")?;
                 }
                 writeln!(f)?;
             }
             Ok(())
         }
     }
    -pub struct SegDisplay<'a, O: Op>(&'a Seg<O>);
    -impl<'a, O: Op> SegDisplay<'a, O> {
    +pub struct SegDisplay<'a, O: Op>(&'a Seg<O>);
    +impl<'a, O: Op> SegDisplay<'a, O> {
         fn collect(&self) -> Vec<(Range<usize>, &O::Value)> {
             let mut stack = vec![(0..self.0.len(), self.0.tree.root)];
             let mut vec = Vec::new();
    @@ -1849,25 +1855,25 @@
             vec
         }
     }
    -impl<'a, O: Op> fmt::Display for SegDisplay<'a, O>
    +impl<'a, O: Op> fmt::Display for SegDisplay<'a, O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        writeln!(f, "SegDisplay ({:?}):", &self.0)?;
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        writeln!(f, "SegDisplay ({:?}):", &self.0)?;
             for (range, value) in self.collect() {
                 if range.start + 1 < range.end {
    -                writeln!(f, " {}..{}: {:?}", range.start, range.end, value)?;
    +                writeln!(f, " {}..{}: {:?}", range.start, range.end, value)?;
                 }
             }
             Ok(())
         }
     }
    -impl<'a, O: Op> fmt::Debug for SegDisplay<'a, O>
    +impl<'a, O: Op> fmt::Debug for SegDisplay<'a, O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             let mut debug_map = f.debug_map();
             for (range, value) in self.collect() {
                 if range.start + 1 == range.end {
    @@ -1879,14 +1885,14 @@
             debug_map.finish()
         }
     }
    -pub struct SegIter<'a, O: Op> {
    +pub struct SegIter<'a, O: Op> {
         start: Option<Ptr<Node<O>>>,
         end: Option<Ptr<Node<O>>>,
         len: usize,
    -    marker: PhantomData<&'a O>,
    +    marker: PhantomData<&'a O>,
     }
    -impl<'a, O: Op> Iterator for SegIter<'a, O> {
    -    type Item = &'a O::Value;
    +impl<'a, O: Op> Iterator for SegIter<'a, O> {
    +    type Item = &'a O::Value;
     
         fn next(&mut self) -> Option<Self::Item> {
             if self.len == 0 {
    @@ -1903,7 +1909,7 @@
             (self.len, Some(self.len))
         }
     }
    -impl<'a, O: Op> DoubleEndedIterator for SegIter<'a, O> {
    +impl<'a, O: Op> DoubleEndedIterator for SegIter<'a, O> {
         fn next_back(&mut self) -> Option<Self::Item> {
             if self.len == 0 {
                 return None;
    @@ -1915,7 +1921,7 @@
             Some(&x.value)
         }
     }
    -impl<'a, O: Op> ExactSizeIterator for SegIter<'a, O> {}
    +impl<'a, O: Op> ExactSizeIterator for SegIter<'a, O> {}
     
     fn into_range(range: impl RangeBounds<usize>, len: usize) -> (usize, usize) {
         let start = match range.start_bound() {
    @@ -2020,7 +2026,7 @@
                         expected.push_str(&p.right.unwrap().value);
                         (p.value == expected).then_some(()).ok_or_else(|| {
                             format!(
    -                            "Value is incorrect at {:?}. Expected {}, but cached {}",
    +                            "Value is incorrect at {:?}. Expected {}, but cached {}",
                                 p, expected, &p.value
                             )
                         })?;
    @@ -2031,8 +2037,8 @@
                 self.tree.validate();
                 validate(self.tree.root).unwrap_or_else(|e| {
                     panic!(
    -                    "{e}:\n Tree: {}",
    -                    self.tree.format_by(|p| format!("<{:?}:{}>", p, p.value))
    +                    "{e}:\n Tree: {}",
    +                    self.tree.format_by(|p| format!("<{:?}:{}>", p, p.value))
                     )
                 });
             }
    @@ -2092,7 +2098,7 @@
                     }
                     let result = seg.fold(i..j);
                     let expected = vec[i..j].iter().flat_map(|s| s.chars()).collect::<String>();
    -                assert_eq!(result, expected, "fold({i}..{j})");
    +                assert_eq!(result, expected, "fold({i}..{j})");
                 }
             }
         }
    @@ -2102,7 +2108,7 @@
             const LEN_LIM: usize = 60;
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..20 {
    -            let mut used = [false; LEN_LIM];
    +            let mut used = vec![false; LEN_LIM];
                 let mut seg = Seg::<O>::new();
                 let mut vec = Vec::new();
                 for _ in 0..200 {
    diff --git a/src/rbtree/lib.rs.html b/src/rbtree/lib.rs.html
    index 0ea2a70e..6b6492e2 100644
    --- a/src/rbtree/lib.rs.html
    +++ b/src/rbtree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -783,9 +783,9 @@
         }
     }
     
    -impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O> {
    -    type IntoIter = Iter<'a, O::Value, O>;
    -    type Item = &'a O::Value;
    +impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O> {
    +    type IntoIter = Iter<'a, O::Value, O>;
    +    type Item = &'a O::Value;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
    @@ -793,9 +793,9 @@
     }
     
     /// [`iter`](RbTree::iter) の返す型
    -pub struct Iter<'a, T, O: Op<Value = T>>(Vec<&'a Nonempty<T, O>>);
    -impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O> {
    -    type Item = &'a T;
    +pub struct Iter<'a, T, O: Op<Value = T>>(Vec<&'a Nonempty<T, O>>);
    +impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O> {
    +    type Item = &'a T;
     
         fn next(&mut self) -> Option<Self::Item> {
             loop {
    @@ -831,7 +831,7 @@
         }
     
         /// 要素を左から順に辿るイテレータを返します。(`rev`, `nth` など未実装です。)
    -    pub fn iter(&self) -> Iter<'_, T, O> {
    +    pub fn iter(&self) -> Iter<'_, T, O> {
             Iter(match &self.0 {
                 None => Vec::new(),
                 Some(node) => vec![node],
    @@ -1030,7 +1030,7 @@
         }
     }
     impl<T: Debug, O: Op<Value = T>> Debug for RbTree<T, O> {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             f.debug_list().entries(self.iter()).finish()
         }
     }
    diff --git a/src/rbtree/nonempty.rs.html b/src/rbtree/nonempty.rs.html
    index dc63acad..0e9daeee 100644
    --- a/src/rbtree/nonempty.rs.html
    +++ b/src/rbtree/nonempty.rs.html
    @@ -1,4 +1,4 @@
    -nonempty.rs - sourcenonempty.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -745,18 +745,18 @@
             s
         }
         fn to_structure_sring_dfs<T, O: Op<Value = T>>(root: &Nonempty<T, O>, s: &mut String) {
    -        s.push('(');
    +        s.push('(');
             match root {
                 Nonempty::Nil(_) => (),
                 Nonempty::Internal(node) => {
                     to_structure_sring_dfs(&node.left, s);
                     s.push_str(&node.height.to_string());
    -                s.push(',');
    +                s.push(',');
                     s.push_str(&node.len.to_string());
                     to_structure_sring_dfs(&node.right, s);
                 }
             }
    -        s.push(')');
    +        s.push(')');
         }
     
         fn validate(root: &Nonempty<()>) {
    @@ -822,11 +822,11 @@
             n4(nil, nil, nil, nil, 1)()
         }
     
    -    #[test_case(nil => "()".to_owned())]
    -    #[test_case(n2nil => "(()1,2())".to_owned())]
    -    #[test_case(l3nil => "((()1,2())1,3())".to_owned())]
    -    #[test_case(r3nil => "(()1,3(()1,2()))".to_owned())]
    -    #[test_case(n4nil => "((()1,2())1,4(()1,2()))".to_owned())]
    +    #[test_case(nil => "()".to_owned())]
    +    #[test_case(n2nil => "(()1,2())".to_owned())]
    +    #[test_case(l3nil => "((()1,2())1,3())".to_owned())]
    +    #[test_case(r3nil => "(()1,3(()1,2()))".to_owned())]
    +    #[test_case(n4nil => "((()1,2())1,4(()1,2()))".to_owned())]
         fn test_to_structure_string(x: impl Fn() -> Nonempty<()>) -> String {
             to_structure_sring(&x())
         }
    @@ -845,7 +845,7 @@
         fn test_merge(lhs: impl Fn() -> Nonempty<()>, rhs: impl Fn() -> Nonempty<()>) -> String {
             let root = Nonempty::merge(lhs(), rhs());
             let res = to_structure_sring(&root);
    -        println!("{}", res);
    +        println!("{}", res);
             validate(&root);
             res
         }
    diff --git a/src/riff/binary_search.rs.html b/src/riff/binary_search.rs.html
    new file mode 100644
    index 00000000..cdef120d
    --- /dev/null
    +++ b/src/riff/binary_search.rs.html
    @@ -0,0 +1,155 @@
    +binary_search.rs - source
    + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +
    use std::cmp::Ordering;
    +use std::cmp::Ordering::Equal;
    +use std::cmp::Ordering::Greater;
    +use std::cmp::Ordering::Less;
    +
    +/// `{lower,upper}_bound`, etc
    +pub trait BinarySearch<T> {
    +    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize;
    +    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, mut f: F) -> usize {
    +        self.partition_point(|x| f(x) < Equal)
    +    }
    +    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, mut f: F) -> usize {
    +        self.partition_point(|x| f(x) <= Equal)
    +    }
    +    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, mut f: F) -> usize {
    +        self.lower_bound_by(|x| f(x).cmp(b))
    +    }
    +    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, mut f: F) -> usize {
    +        self.upper_bound_by(|x| f(x).cmp(b))
    +    }
    +    fn lower_bound(&self, x: &T) -> usize
    +    where
    +        T: Ord,
    +    {
    +        self.lower_bound_by(|p| p.cmp(x))
    +    }
    +    fn upper_bound(&self, x: &T) -> usize
    +    where
    +        T: Ord,
    +    {
    +        self.upper_bound_by(|p| p.cmp(x))
    +    }
    +}
    +
    +impl<T> BinarySearch<T> for [T] {
    +    fn partition_point<F: FnMut(&T) -> bool>(&self, mut pred: F) -> usize {
    +        self.binary_search_by(|x| if pred(x) { Less } else { Greater })
    +            .unwrap_err()
    +    }
    +}
    +
    +#[cfg(test)]
    +mod tests {
    +    use super::*;
    +
    +    #[test]
    +    fn test_vec_binary_search() {
    +        let vec = vec![10, 12];
    +        assert_eq!(vec.lower_bound(&9), 0);
    +        assert_eq!(vec.lower_bound(&10), 0);
    +        assert_eq!(vec.lower_bound(&11), 1);
    +        assert_eq!(vec.lower_bound(&12), 1);
    +        assert_eq!(vec.lower_bound(&13), 2);
    +        assert_eq!(vec.upper_bound(&9), 0);
    +        assert_eq!(vec.upper_bound(&10), 1);
    +        assert_eq!(vec.upper_bound(&11), 1);
    +        assert_eq!(vec.upper_bound(&12), 2);
    +        assert_eq!(vec.upper_bound(&13), 2);
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/riff/bitmask_iterators.rs.html b/src/riff/bitmask_iterators.rs.html new file mode 100644 index 00000000..519f09b8 --- /dev/null +++ b/src/riff/bitmask_iterators.rs.html @@ -0,0 +1,205 @@ +bitmask_iterators.rs - source
    + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +
    use super::numeric_traits::Unsigned;
    +
    +/// Generates all the $k$-subsets of $[0, N[$
    +///
    +/// # Examples
    +///
    +/// Basic usage:
    +/// ```
    +/// use bitutils::combinations;
    +///
    +/// assert_eq!(combinations::<u32>(3, 2).collect::<Vec<_>>(), vec![3, 5, 6]);
    +/// ```
    +pub fn bitmask_combinations<T: Unsigned>(n: u32, k: u32) -> BitmaskCombinations<T> {
    +    assert!(k < T::bit_length() && k < T::bit_length());
    +    BitmaskCombinations {
    +        n,
    +        bs: (T::one() << k) - T::one(),
    +    }
    +}
    +
    +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
    +pub struct BitmaskCombinations<T> {
    +    n: u32,
    +    bs: T,
    +}
    +impl<T: Unsigned> Iterator for BitmaskCombinations<T> {
    +    type Item = T;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if (T::one() << self.n) <= self.bs {
    +            return None;
    +        }
    +        let res = Some(self.bs);
    +        self.bs = if self.bs == T::zero() {
    +            T::one() << self.n
    +        } else {
    +            let x = self.bs & self.bs.wrapping_neg();
    +            let y = self.bs + x;
    +            (((self.bs & !y) / x) >> 1) | y
    +        };
    +        res
    +    }
    +}
    +
    +/// Generates all the subsets of `bs`.
    +///
    +/// # Examples
    +///
    +/// Basic usage:
    +/// ```
    +/// use bitutils::subsets;
    +///
    +/// assert_eq!(subsets(10u32).collect::<Vec<_>>(), vec![0, 2, 8, 10]);
    +/// ```
    +pub fn bitmask_subsets<T: Unsigned>(bs: T) -> BitmaskSubsets<T> {
    +    BitmaskSubsets {
    +        bs,
    +        full: bs,
    +        finished: false,
    +    }
    +}
    +
    +#[derive(Clone, Debug, Default, Hash, PartialEq, Eq)]
    +pub struct BitmaskSubsets<T> {
    +    bs: T,
    +    full: T,
    +    finished: bool,
    +}
    +impl<T: Unsigned> Iterator for BitmaskSubsets<T> {
    +    type Item = T;
    +
    +    fn next(&mut self) -> Option<Self::Item> {
    +        if self.finished {
    +            return None;
    +        }
    +        let res = Some(self.bs ^ self.full);
    +        if self.bs == T::zero() {
    +            self.finished = true;
    +        } else {
    +            self.bs -= T::one();
    +            self.bs &= self.full;
    +        }
    +        res
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/riff/change_min_max.rs.html b/src/riff/change_min_max.rs.html new file mode 100644 index 00000000..ded16d7e --- /dev/null +++ b/src/riff/change_min_max.rs.html @@ -0,0 +1,67 @@ +change_min_max.rs - source
    + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +
    /// `change_min` and `change_max`
    +pub trait ChangeMinMax: PartialOrd + Sized {
    +    fn change_min(&mut self, rhs: Self) {
    +        if *self > rhs {
    +            *self = rhs
    +        }
    +    }
    +
    +    fn change_max(&mut self, rhs: Self) {
    +        if *self < rhs {
    +            *self = rhs
    +        }
    +    }
    +}
    +
    +impl<T: PartialOrd + Sized> ChangeMinMax for T {}
    +
    \ No newline at end of file diff --git a/src/riff/lib.rs.html b/src/riff/lib.rs.html new file mode 100644 index 00000000..b109048c --- /dev/null +++ b/src/riff/lib.rs.html @@ -0,0 +1,63 @@ +lib.rs - source
    + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +
    //! Future and otherworldly Rust features.
    +
    +mod binary_search;
    +mod bitmask_iterators;
    +mod change_min_max;
    +mod numeric_traits;
    +mod pop_if;
    +
    +pub use binary_search::BinarySearch;
    +pub use bitmask_iterators::bitmask_combinations;
    +pub use bitmask_iterators::bitmask_subsets;
    +pub use change_min_max::ChangeMinMax;
    +pub use numeric_traits::Unsigned;
    +pub use pop_if::PopIf;
    +
    \ No newline at end of file diff --git a/src/bitutils/lib.rs.html b/src/riff/numeric_traits.rs.html similarity index 62% rename from src/bitutils/lib.rs.html rename to src/riff/numeric_traits.rs.html index 88e30cef..2842333f 100644 --- a/src/bitutils/lib.rs.html +++ b/src/riff/numeric_traits.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcenumeric_traits.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -101,23 +101,7 @@
     67
     68
     69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -
    //! Provides iterator utilities of integer expression of sets.
    -
    -mod combinations;
    -mod subsets;
    -
    -pub use combinations::combinations;
    -pub use combinations::Combinations;
    -use std::fmt::Debug;
    +
    use std::fmt::Debug;
     use std::mem::size_of;
     use std::ops::Add;
     use std::ops::AddAssign;
    @@ -138,10 +122,8 @@
     use std::ops::ShrAssign;
     use std::ops::Sub;
     use std::ops::SubAssign;
    -pub use subsets::subsets;
    -pub use subsets::Subsets;
     
    -/// Adapter trait of this crate. Already implemented for all the unsigned integer types.
    +/// Unsigned integer types.
     pub trait Unsigned:
         Sized
         + PartialEq
    @@ -177,7 +159,7 @@
         }
     }
     
    -macro_rules! impl_unsigned {
    +macro_rules! impl_unsigned {
         ($($T:ty),* $(,)?) => {$(
             impl Unsigned for $T {
                 fn zero() -> Self { 0 }
    @@ -187,5 +169,5 @@
         )*}
     }
     
    -impl_unsigned! { usize, u8, u16, u32, u64, u128 }
    +impl_unsigned! { usize, u8, u16, u32, u64, u128 }
     
    \ No newline at end of file diff --git a/src/riff/pop_if.rs.html b/src/riff/pop_if.rs.html new file mode 100644 index 00000000..e73bb5cd --- /dev/null +++ b/src/riff/pop_if.rs.html @@ -0,0 +1,203 @@ +pop_if.rs - source
    + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +
    use std::collections::BinaryHeap;
    +
    +/// Conditional `pop` function.
    +pub trait PopIf {
    +    type Value;
    +
    +    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>
    +    where
    +        F: FnOnce(&mut Self::Value) -> bool;
    +}
    +
    +impl<T> PopIf for Vec<T> {
    +    type Value = T;
    +
    +    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>
    +    where
    +        F: FnOnce(&mut Self::Value) -> bool,
    +    {
    +        if f(self.last_mut()?) {
    +            self.pop()
    +        } else {
    +            None
    +        }
    +    }
    +}
    +
    +impl<T: Ord> PopIf for BinaryHeap<T> {
    +    type Value = T;
    +
    +    fn pop_if<F>(&mut self, f: F) -> Option<Self::Value>
    +    where
    +        F: FnOnce(&mut Self::Value) -> bool,
    +    {
    +        if f(&mut *self.peek_mut()?) {
    +            self.pop()
    +        } else {
    +            None
    +        }
    +    }
    +}
    +
    +#[cfg(test)]
    +mod tests {
    +    use super::*;
    +
    +    #[test]
    +    fn test_vec_pop_if() {
    +        fn is_even(x: &mut u32) -> bool {
    +            *x % 2 == 0
    +        }
    +        fn run(mut vec: Vec<u32>) -> (Vec<u32>, Option<u32>) {
    +            let result = vec.pop_if(is_even);
    +            (vec, result)
    +        }
    +        assert_eq!(run(vec![]), (vec![], None));
    +        assert_eq!(run(vec![0]), (vec![], Some(0)));
    +        assert_eq!(run(vec![1]), (vec![1], None));
    +        assert_eq!(run(vec![0, 2]), (vec![0], Some(2)));
    +        assert_eq!(run(vec![0, 3]), (vec![0, 3], None));
    +        assert_eq!(run(vec![1, 2]), (vec![1], Some(2)));
    +        assert_eq!(run(vec![1, 3]), (vec![1, 3], None));
    +    }
    +
    +    #[test]
    +    fn test_heap_pop_if() {
    +        fn is_even(x: &mut u32) -> bool {
    +            *x % 2 == 0
    +        }
    +        fn run(vec: Vec<u32>) -> (Vec<u32>, Option<u32>) {
    +            let mut heap = vec.into_iter().collect::<BinaryHeap<_>>();
    +            let result = heap.pop_if(is_even);
    +            let mut vec = heap.into_vec();
    +            vec.sort_unstable();
    +            (vec, result)
    +        }
    +        assert_eq!(run(vec![]), (vec![], None));
    +        assert_eq!(run(vec![0]), (vec![], Some(0)));
    +        assert_eq!(run(vec![1]), (vec![1], None));
    +        assert_eq!(run(vec![0, 2]), (vec![0], Some(2)));
    +        assert_eq!(run(vec![0, 3]), (vec![0, 3], None));
    +        assert_eq!(run(vec![1, 2]), (vec![1], Some(2)));
    +        assert_eq!(run(vec![1, 3]), (vec![1, 3], None));
    +    }
    +}
    +
    \ No newline at end of file diff --git a/src/scc/lib.rs.html b/src/scc/lib.rs.html index 753bd3f7..cdbea206 100644 --- a/src/scc/lib.rs.html +++ b/src/scc/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -439,12 +439,14 @@
     405
     406
     407
    +408
     
    //!
     //! # このライブラリを使える問題
     //!
     //! - AOJ GRL_3_C - 強連結成分分解
     //!   - 問題: <https://onlinejudge.u-aizu.ac.jp/problems/GRL_3_C>
    -//!   - 提出 (8 ms): <https://onlinejudge.u-aizu.ac.jp/status/users/ngtkana/submissions/1/GRL_3_C/judge/6179065/Rust>
    +//!   - 提出 (8 ms):
    +//!   <https://onlinejudge.u-aizu.ac.jp/status/users/ngtkana/submissions/1/GRL_3_C/judge/6179065/Rust>
     //!   - 出題日: 2016-09-04
     //!   - 難易度: 易しめ。
     //!   - 制約:
    diff --git a/src/segbeats/lib.rs.html b/src/segbeats/lib.rs.html
    index ab21af5c..736a615a 100644
    --- a/src/segbeats/lib.rs.html
    +++ b/src/segbeats/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -426,16 +426,45 @@
     392
     393
     394
    -
    use open::open;
    -use std::cell::RefCell;
    +395
    +396
    +397
    +398
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
    +408
    +
    use std::cell::RefCell;
     use std::fmt::Debug;
     use std::ops::Add;
     use std::ops::AddAssign;
    +use std::ops::Bound;
     use std::ops::Range;
     use std::ops::RangeBounds;
     use std::ops::Sub;
     use std::ops::SubAssign;
     
    +pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize> {
    +    use Bound::Excluded;
    +    use Bound::Included;
    +    use Bound::Unbounded;
    +    (match range.start_bound() {
    +        Unbounded => 0,
    +        Included(&x) => x,
    +        Excluded(&x) => x + 1,
    +    })..(match range.end_bound() {
    +        Excluded(&x) => x,
    +        Included(&x) => x + 1,
    +        Unbounded => len,
    +    })
    +}
    +
     #[derive(Debug, Clone, PartialEq, Eq)]
     pub struct Segbeats<T> {
         len: usize,
    @@ -757,28 +786,27 @@
         fn zero() -> Self;
         fn mul_u32(&self, x: u32) -> Self;
     }
    -macro_rules! impl_elm {
    +macro_rules! impl_elm {
         {$($ty:ident;)*} => {
             $(
                 impl Elm for $ty {
                     fn min_value() -> Self {
    -                    $ty::MIN
    +                    std::$ty::MIN
                     }
                     fn max_value() -> Self {
    -                    $ty::MAX
    +                    std::$ty::MAX
                     }
                     fn zero() -> Self {
                         0
                     }
    -                #[allow(clippy::cast_lossless)]
    -                fn mul_u32(&self, x: u32) -> Self {
    +                fn mul_u32(&self, x: u32) -> Self {
                         self * (x as $ty)
                     }
                 }
             )*
         }
     }
    -impl_elm! {
    +impl_elm! {
         u8; u16; u32; u64; u128; usize;
         i8; i16; i32; i64; i128; isize;
     }
    diff --git a/src/segbeats_task3/lib.rs.html b/src/segbeats_task3/lib.rs.html
    index 55adf2fb..e8c3b47f 100644
    --- a/src/segbeats_task3/lib.rs.html
    +++ b/src/segbeats_task3/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -570,17 +570,46 @@
     536
     537
     538
    -
    use open::open;
    -use std::cell::RefCell;
    +539
    +540
    +541
    +542
    +543
    +544
    +545
    +546
    +547
    +548
    +549
    +550
    +551
    +552
    +
    use std::cell::RefCell;
     use std::fmt::Debug;
     use std::mem::replace;
     use std::ops::Add;
     use std::ops::AddAssign;
    +use std::ops::Bound;
     use std::ops::Range;
     use std::ops::RangeBounds;
     use std::ops::Sub;
     use std::ops::SubAssign;
     
    +pub fn open(len: usize, range: impl RangeBounds<usize>) -> Range<usize> {
    +    use Bound::Excluded;
    +    use Bound::Included;
    +    use Bound::Unbounded;
    +    (match range.start_bound() {
    +        Unbounded => 0,
    +        Included(&x) => x,
    +        Excluded(&x) => x + 1,
    +    })..(match range.end_bound() {
    +        Excluded(&x) => x,
    +        Included(&x) => x + 1,
    +        Unbounded => len,
    +    })
    +}
    +
     #[derive(Clone, PartialEq, Eq)]
     pub struct Segbeats<T> {
         len: usize,
    @@ -589,12 +618,12 @@
     }
     
     impl<T: Elm> Debug for Segbeats<T> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        writeln!(f, "Segbeats")?;
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        writeln!(f, "Segbeats")?;
             self.table
                 .borrow_mut()
                 .iter()
    -            .try_for_each(|node| writeln!(f, "{:?}", &node))
    +            .try_for_each(|node| writeln!(f, "{:?}", &node))
         }
     }
     
    @@ -1042,28 +1071,27 @@
         fn zero() -> Self;
         fn mul_u32(&self, x: u32) -> Self;
     }
    -macro_rules! impl_elm {
    +macro_rules! impl_elm {
         {$($ty:ident;)*} => {
             $(
                 impl Elm for $ty {
                     fn min_value() -> Self {
    -                    $ty::MIN
    +                    std::$ty::MIN
                     }
                     fn max_value() -> Self {
    -                    $ty::MAX
    +                    std::$ty::MAX
                     }
                     fn zero() -> Self {
                         0
                     }
    -                #[allow(clippy::cast_lossless)]
    -                fn mul_u32(&self, x: u32) -> Self {
    +                fn mul_u32(&self, x: u32) -> Self {
                         self * (x as $ty)
                     }
                 }
             )*
         }
     }
    -impl_elm! {
    +impl_elm! {
         u8; u16; u32; u64; u128; usize;
         i8; i16; i32; i64; i128; isize;
     }
    diff --git a/src/segtree/lib.rs.html b/src/segtree/lib.rs.html
    index 6072f99b..13cfb18a 100644
    --- a/src/segtree/lib.rs.html
    +++ b/src/segtree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1094,16 +1094,6 @@
     1060
     1061
     1062
    -1063
    -1064
    -1065
    -1066
    -1067
    -1068
    -1069
    -1070
    -1071
    -1072
     
    //! Segment tree and its variants.
     //!
     //! # [`Op`] trait
    @@ -1311,23 +1301,13 @@
         }
     }
     
    -impl<'a, O: Op> IntoIterator for &'a Segtree<O> {
    -    type IntoIter = std::slice::Iter<'a, O::Value>;
    -    type Item = &'a O::Value;
    -
    -    fn into_iter(self) -> Self::IntoIter {
    -        self.iter()
    -    }
    -}
    -
    -#[allow(clippy::missing_fields_in_debug)]
    -impl<O: Op> fmt::Debug for Segtree<O>
    +impl<O: Op> fmt::Debug for Segtree<O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("Segtree")
    -            .field("values", &self.values)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("Segtree")
    +            .field("values", &self.values)
                 .finish()
         }
     }
    @@ -1350,11 +1330,11 @@
     }
     
     /// The result of [`Segtree::entry`].
    -pub struct Entry<'a, O: Op> {
    -    segtree: &'a mut Segtree<O>,
    +pub struct Entry<'a, O: Op> {
    +    segtree: &'a mut Segtree<O>,
         index: usize,
     }
    -impl<'a, O: Op> Drop for Entry<'a, O> {
    +impl<'a, O: Op> Drop for Entry<'a, O> {
         fn drop(&mut self) {
             let mut index = self.index;
             while index != 0 {
    @@ -1366,24 +1346,24 @@
             }
         }
     }
    -impl<'a, O: Op> Deref for Entry<'a, O> {
    +impl<'a, O: Op> Deref for Entry<'a, O> {
         type Target = O::Value;
     
         fn deref(&self) -> &Self::Target {
             &self.segtree.values[self.index]
         }
     }
    -impl<'a, O: Op> DerefMut for Entry<'a, O> {
    +impl<'a, O: Op> DerefMut for Entry<'a, O> {
         fn deref_mut(&mut self) -> &mut Self::Target {
             &mut self.segtree.values[self.index]
         }
     }
    -impl<'a, O: Op> fmt::Debug for Entry<'a, O>
    +impl<'a, O: Op> fmt::Debug for Entry<'a, O>
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("Entry").field("index", &self.index).finish()
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("Entry").field("index", &self.index).finish()
         }
     }
     
    @@ -1417,7 +1397,7 @@
     
         /// Returns the entry of $x_k$.
         /// If $k$ is not found, it panics.
    -    pub fn entry(&mut self, key: &K) -> Entry<'_, O> {
    +    pub fn entry(&mut self, key: &K) -> Entry<'_, O> {
             let index = self.keys.binary_search(key).unwrap();
             self.inner.entry(index)
         }
    @@ -1451,10 +1431,10 @@
         K: fmt::Debug,
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("SparseSegtree")
    -            .field("inner", &self.inner)
    -            .field("keys", &self.keys)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("SparseSegtree")
    +            .field("inner", &self.inner)
    +            .field("keys", &self.keys)
                 .finish()
         }
     }
    @@ -1589,10 +1569,10 @@
         L: fmt::Debug,
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("Sparse2dSegtree")
    -            .field("segtrees", &self.segtrees)
    -            .field("keys", &self.keys)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("Sparse2dSegtree")
    +            .field("segtrees", &self.segtrees)
    +            .field("keys", &self.keys)
                 .finish()
         }
     }
    @@ -1636,7 +1616,7 @@
         {
             let values_ = values;
             let h = values.len();
    -        let w = values.first().map_or(0, Vec::len);
    +        let w = values.get(0).map_or(0, Vec::len);
             let mut values = vec![vec![O::identity(); 2 * w]; 2 * h];
             for (values, values_) in values[h..].iter_mut().zip(values_) {
                 values[w..].clone_from_slice(values_);
    @@ -1655,7 +1635,7 @@
         /// Fold $\left \lbrace x_{i, j} \mid i \in \text{{range}}_i, j \in \text{{range}}_j \right \rbrace$.
         pub fn fold(&self, i: impl RangeBounds<usize>, j: impl RangeBounds<usize>) -> O::Value {
             let h = self.values.len() / 2;
    -        let w = self.values.first().map_or(0, |v| v.len() / 2);
    +        let w = self.values.get(0).map_or(0, |v| v.len() / 2);
             let (mut i0, mut i1) = open(i, h);
             assert!(i0 <= i1 && i1 <= h);
             let (mut j0, mut j1) = open(j, w);
    @@ -1710,7 +1690,7 @@
         /// Returns the entry of $x_{i, j}$.
         pub fn entry(&mut self, i: usize, j: usize) -> Dense2dEntry<O> {
             let h = self.values.len() / 2;
    -        let w = self.values.first().map_or(0, |v| v.len() / 2);
    +        let w = self.values.get(0).map_or(0, |v| v.len() / 2);
             Dense2dEntry {
                 segtree: self,
                 i: h + i,
    @@ -1738,9 +1718,9 @@
     where
         O::Value: fmt::Debug,
     {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_struct("Dense2dSegtree")
    -            .field("values", &self.values)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        f.debug_struct("Dense2dSegtree")
    +            .field("values", &self.values)
                 .finish()
         }
     }
    @@ -1754,12 +1734,12 @@
     }
     
     /// The result of [`Dense2dSegtree::entry`].
    -pub struct Dense2dEntry<'a, O: Op> {
    -    segtree: &'a mut Dense2dSegtree<O>,
    +pub struct Dense2dEntry<'a, O: Op> {
    +    segtree: &'a mut Dense2dSegtree<O>,
         i: usize,
         j: usize,
     }
    -impl<'a, O: Op> Drop for Dense2dEntry<'a, O> {
    +impl<'a, O: Op> Drop for Dense2dEntry<'a, O> {
         fn drop(&mut self) {
             let mut i = self.i;
             let mut j = self.j / 2;
    @@ -1784,14 +1764,14 @@
             }
         }
     }
    -impl<'a, O: Op> Deref for Dense2dEntry<'a, O> {
    +impl<'a, O: Op> Deref for Dense2dEntry<'a, O> {
         type Target = O::Value;
     
         fn deref(&self) -> &Self::Target {
             &self.segtree.values[self.i][self.j]
         }
     }
    -impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O> {
    +impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O> {
         fn deref_mut(&mut self) -> &mut Self::Target {
             &mut self.segtree.values[self.i][self.j]
         }
    diff --git a/src/skew_heap/lib.rs.html b/src/skew_heap/lib.rs.html
    index fb930f41..f3d70fcc 100644
    --- a/src/skew_heap/lib.rs.html
    +++ b/src/skew_heap/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -367,8 +367,8 @@
             Self::new()
         }
     }
    -impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A> {
    -    fn extend<T: IntoIterator<Item = &'a A>>(&mut self, iter: T) {
    +impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A> {
    +    fn extend<T: IntoIterator<Item = &'a A>>(&mut self, iter: T) {
             iter.into_iter().copied().for_each(|x| self.push(x));
         }
     }
    @@ -385,7 +385,7 @@
         }
     }
     impl<T: fmt::Debug + Ord> fmt::Debug for SkewHeap<T> {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
             let mut f = f.debug_list();
             if let Some(heap) = self.0.as_ref() {
                 push_entries(heap, &mut f);
    @@ -466,7 +466,7 @@
         value: T,
     }
     impl<T: Ord + fmt::Debug> fmt::Debug for SkeyHeapNode<T> {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
             let mut f = f.debug_list();
             push_entries(self, &mut f);
             f.finish()
    diff --git a/src/slicemore/lib.rs.html b/src/slicemore/lib.rs.html
    deleted file mode 100644
    index 9f38bdfd..00000000
    --- a/src/slicemore/lib.rs.html
    +++ /dev/null
    @@ -1,339 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -
    //! `{lower,upper}_bound` and `partition_point`
    -
    -use std::cmp::Ordering::Equal;
    -use std::cmp::Ordering::Greater;
    -use std::cmp::Ordering::Less;
    -use std::cmp::Ordering::{self};
    -
    -/// Method versions of functions.
    -pub trait SliceMore<T> {
    -    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize;
    -    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize;
    -    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize;
    -    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize;
    -    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize;
    -    fn lower_bound(&self, x: &T) -> usize
    -    where
    -        T: Ord;
    -    fn upper_bound(&self, x: &T) -> usize
    -    where
    -        T: Ord;
    -}
    -impl<T> SliceMore<T> for [T] {
    -    /// Method version of [`partition_point()`].
    -    fn partition_point<F: FnMut(&T) -> bool>(&self, pred: F) -> usize {
    -        partition_point(self, pred)
    -    }
    -
    -    /// Method version of [`lower_bound_by()`].
    -    fn lower_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize {
    -        lower_bound_by(self, f)
    -    }
    -
    -    /// Method version of [`upper_bound_by()`].
    -    fn upper_bound_by<F: FnMut(&T) -> Ordering>(&self, f: F) -> usize {
    -        upper_bound_by(self, f)
    -    }
    -
    -    /// Method version of [`lower_bound_by_key()`].
    -    fn lower_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize {
    -        lower_bound_by_key(self, b, f)
    -    }
    -
    -    /// Method version of [`upper_bound_by_key()`].
    -    fn upper_bound_by_key<B: Ord, F: FnMut(&T) -> B>(&self, b: &B, f: F) -> usize {
    -        upper_bound_by_key(self, b, f)
    -    }
    -
    -    /// Method version of [`lower_bound()`].
    -    fn lower_bound(&self, x: &T) -> usize
    -    where
    -        T: Ord,
    -    {
    -        lower_bound(self, x)
    -    }
    -
    -    /// Method version of [`upper_bound()`].
    -    fn upper_bound(&self, x: &T) -> usize
    -    where
    -        T: Ord,
    -    {
    -        upper_bound(self, x)
    -    }
    -}
    -
    -/// Find $i$ s.t. $f ( a _ { i - 1 } ) \land \neg f ( a _ i )$.
    -///
    -/// Espacially, if $a$ is partitioned, it count the `true`'s from the head.
    -///
    -/// The same implementation as [in the standard library of Rust 1.52.0](https://doc.rust-lang.org/std/primitive.slice.html#method.partition_point).
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::partition_point;
    -/// assert_eq!(partition_point(&[true, false], |&x| x), 1);
    -/// ```
    -pub fn partition_point<T, F: FnMut(&T) -> bool>(slice: &[T], mut pred: F) -> usize {
    -    slice
    -        .binary_search_by(|x| if pred(x) { Less } else { Greater })
    -        .unwrap_err()
    -}
    -
    -/// Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{Less} \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Equal }, \mathtt { Greater } \right \rbrace$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::lower_bound_by;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(lower_bound_by(&[Less, Equal, Greater], |&x| x), 1);
    -/// ```
    -pub fn lower_bound_by<T, F: FnMut(&T) -> Ordering>(slice: &[T], mut f: F) -> usize {
    -    partition_point(slice, |x| matches!(f(x), Less))
    -}
    -
    -/// Find $i$ s.t. $f ( a _ { i - 1 } ) \in \left \lbrace \mathtt{ Less }, \mathtt { Equal } \right \rbrace \land f ( a _ i ) \in \left \lbrace \mathtt { Greater } \right \rbrace$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::upper_bound_by;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(upper_bound_by(&[Less, Equal, Greater], |&x| x), 2);
    -/// ```
    -pub fn upper_bound_by<T, F: FnMut(&T) -> Ordering>(slice: &[T], mut f: F) -> usize {
    -    partition_point(slice, |x| matches!(f(x), Less | Equal))
    -}
    -
    -/// Find $i$ s.t. $f ( a _ { i - 1 } ) \lt b \le f ( a _ i )$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::lower_bound_by_key;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(lower_bound_by_key(&[9, 10, 11, 12], &5, |&x| x / 2), 1);
    -/// ```
    -pub fn lower_bound_by_key<T, B: Ord, F: FnMut(&T) -> B>(slice: &[T], b: &B, mut f: F) -> usize {
    -    lower_bound_by(slice, |x| f(x).cmp(b))
    -}
    -
    -/// Find $i$ s.t. $f ( a _ { i - 1 } ) \le b \lt f ( a _ i )$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::upper_bound_by_key;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(upper_bound_by_key(&[9, 10, 11, 12], &5, |&x| x / 2), 3);
    -/// ```
    -pub fn upper_bound_by_key<T, B: Ord, F: FnMut(&T) -> B>(slice: &[T], b: &B, mut f: F) -> usize {
    -    upper_bound_by(slice, |x| f(x).cmp(b))
    -}
    -
    -/// Find $i$ s.t. $a _ { i - 1 } \lt b \le a _ i$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::lower_bound;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(lower_bound(&[10, 11, 12], &11), 1);
    -/// ```
    -pub fn lower_bound<T: Ord>(slice: &[T], x: &T) -> usize {
    -    lower_bound_by(slice, |p| p.cmp(x))
    -}
    -
    -/// Find $i$ s.t. $a _ { i - 1 } \le b \lt a _ i$.
    -///
    -/// # Examples
    -/// ```
    -/// # use slicemore::upper_bound;
    -/// # use std::cmp::Ordering::*;
    -/// assert_eq!(upper_bound(&[10, 11, 12], &11), 2);
    -/// ```
    -pub fn upper_bound<T: Ord>(slice: &[T], x: &T) -> usize {
    -    upper_bound_by(slice, |p| p.cmp(x))
    -}
    -
    \ No newline at end of file diff --git a/src/snippetter/main.rs.html b/src/snippetter/main.rs.html index a24f5d0a..d1ec7b90 100644 --- a/src/snippetter/main.rs.html +++ b/src/snippetter/main.rs.html @@ -1,4 +1,4 @@ -main.rs - sourcemain.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -162,7 +162,7 @@
     }
     
     // TODO: use crates.js etc. in target/doc/{crates.js,source-files.js} to bundle files
    -// TODO: or use `.packages | map({ "name": .name, "dependencies": .dependencies })` of `cargo
    +// TODO: or use `.packages | map({ "name": .name, "dependencies": .dependencies })` of `cargo
     // metadata
     fn main() {
         PROJECT_ROOT.set(find_project_root_path()).unwrap();
    @@ -171,7 +171,7 @@
                 PROJECT_ROOT
                     .get()
                     .unwrap()
    -                .join(Path::new("libs"))
    +                .join(Path::new("libs"))
                     .read_dir()
                     .unwrap()
                     .filter_map(Result::ok)
    @@ -183,7 +183,7 @@
                             .filter_map(Result::ok)
                             .find(|crate_entry| {
                                 crate_entry.path().as_path().file_name()
    -                                == Some(OsStr::new("Cargo.toml"))
    +                                == Some(OsStr::new("Cargo.toml"))
                             })
                             .map(|cargo_toml_entry| {
                                 (
    @@ -207,15 +207,15 @@
             .unwrap();
     
         let json = serde_json::to_string(CRATE_METADATAS.get().unwrap()).unwrap();
    -    fs::create_dir_all(PROJECT_ROOT.get().unwrap().join("target").join("doc")).unwrap();
    +    fs::create_dir_all(PROJECT_ROOT.get().unwrap().join("target").join("doc")).unwrap();
         fs::write(
             PROJECT_ROOT
                 .get()
                 .unwrap()
    -            .join("target")
    -            .join("doc")
    -            .join("dependencies.js"),
    -        format!("dependencies = {}", json),
    +            .join("target")
    +            .join("doc")
    +            .join("dependencies.js"),
    +        format!("dependencies = {}", json),
         )
         .unwrap();
     }
    @@ -226,7 +226,7 @@
             .ancestors()
             .find(|&ancestor| {
                 ancestor.read_dir().unwrap().any(|entry| {
    -                entry.unwrap().path().as_path().file_name() == Some(OsStr::new("Cargo.lock"))
    +                entry.unwrap().path().as_path().file_name() == Some(OsStr::new("Cargo.lock"))
                 })
             })
             .unwrap()
    @@ -235,20 +235,20 @@
     
     fn parse_local_dependencies_from_cargo_toml(file_content: &str) -> Vec<String> {
         match toml::from_str::<toml::Value>(file_content).unwrap() {
    -        toml::Value::Table(table) => match table.get("dependencies") {
    +        toml::Value::Table(table) => match table.get("dependencies") {
                 None => Vec::new(),
                 Some(toml::Value::Table(table)) => table
                     .iter()
                     .filter_map(|(key, value)| -> Option<String> {
                         (match value {
    -                        toml::Value::Table(table) => table.get("path").map(|value| match value {
    +                        toml::Value::Table(table) => table.get("path").map(|value| match value {
                                 toml::Value::String(path) => path,
                                 _ => unreachable!(),
                             }),
                             toml::Value::String(path) => Some(path),
                             _ => unreachable!(),
                         })
    -                    .and_then(|path| path.starts_with("../").then(|| key.clone()))
    +                    .and_then(|path| path.starts_with("../").then(|| key.clone()))
                     })
                     .collect_vec(),
                 _ => unreachable!(),
    diff --git a/src/sort_tree/lib.rs.html b/src/sort_tree/lib.rs.html
    deleted file mode 100644
    index 97803c76..00000000
    --- a/src/sort_tree/lib.rs.html
    +++ /dev/null
    @@ -1,205 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -
    //! 根付き木をトポロジカルソートします。
    -
    -/// 親を消します
    -pub fn remove_parent(g: &mut [Vec<usize>], parent: &[usize]) {
    -    g.iter_mut().enumerate().for_each(|(x, gx)| {
    -        if let Some(i) = gx.iter().position(|&y| y == parent[x]) {
    -            gx.swap_remove(i);
    -        };
    -    });
    -}
    -
    -/// 根付き木をトポロジカルソートして、親を消します。
    -pub fn sort_tree_remove_parent(root: usize, g: &mut [Vec<usize>]) -> [Vec<usize>; 2] {
    -    let [ord, parent] = sort_tree(root, g);
    -    remove_parent(g, &parent);
    -    [ord, parent]
    -}
    -
    -/// 根付き木をトポロジカルソートします。
    -pub fn sort_tree(root: usize, g: &[Vec<usize>]) -> [Vec<usize>; 2] {
    -    sort_tree_by(root, g, |x| *x)
    -}
    -
    -/// 根付き木をトポロジカルソートします。
    -pub fn sort_tree_by<E>(root: usize, g: &[Vec<E>], to: impl Fn(&E) -> usize) -> [Vec<usize>; 2] {
    -    let mut ord = Vec::new();
    -    let mut parent = vec![root; g.len()];
    -    sort_tree_impl(root, root, g, &to, &mut parent, &mut ord);
    -    [ord, parent]
    -}
    -
    -fn sort_tree_impl<E>(
    -    x: usize,
    -    p: usize,
    -    g: &[Vec<E>],
    -    to: &impl Fn(&E) -> usize,
    -    parent: &mut [usize],
    -    ord: &mut Vec<usize>,
    -) {
    -    ord.push(x);
    -    parent[x] = p;
    -    g[x].iter()
    -        .map(to)
    -        .filter(|&y| y != p)
    -        .for_each(|y| sort_tree_impl(y, x, g, to, parent, ord))
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    use super::sort_tree_remove_parent;
    -    use rand::prelude::StdRng;
    -    use rand::Rng;
    -    use rand::SeedableRng;
    -    use randtools::Tree;
    -
    -    #[test]
    -    fn test_sort_tree_remove_parent() {
    -        let mut rng = StdRng::seed_from_u64(42);
    -        for _ in 0..20 {
    -            let n = rng.gen_range(1..=5);
    -            let g = rng.sample(Tree(n));
    -            for root in 0..n {
    -                let mut g = g.clone();
    -                let [ord, parent] = sort_tree_remove_parent(root, &mut g);
    -                assert_eq!(ord.len(), n);
    -                assert_eq!(parent.len(), n);
    -                assert_eq!(root, parent[root]);
    -                assert_eq!(ord[0], root);
    -                let mut pos = vec![usize::MAX; n];
    -                for (i, &o) in ord.iter().enumerate() {
    -                    pos[o] = i;
    -                }
    -                assert!(pos.iter().all(|&x| x != usize::MAX));
    -                for (x, y) in g
    -                    .iter()
    -                    .enumerate()
    -                    .flat_map(|(x, gx)| gx.iter().map(move |&y| (x, y)))
    -                {
    -                    assert!(pos[x] < pos[y]);
    -                    assert_eq!(x, parent[y]);
    -                }
    -            }
    -        }
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/sparse_table/lib.rs.html b/src/sparse_table/lib.rs.html index 11851c4b..28d2e910 100644 --- a/src/sparse_table/lib.rs.html +++ b/src/sparse_table/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -466,9 +466,9 @@
     where
         O::Value: Debug,
     {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        f.debug_struct("SparseTable")
    -            .field("table", &self.table)
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        f.debug_struct("SparseTable")
    +            .field("table", &self.table)
                 .finish()
         }
     }
    @@ -492,11 +492,11 @@
         }
     }
     
    -impl<'a, O: Op> From<&'a [O::Value]> for SparseTable<O>
    +impl<'a, O: Op> From<&'a [O::Value]> for SparseTable<O>
     where
         O::Value: Clone,
     {
    -    fn from(values: &'a [O::Value]) -> Self {
    +    fn from(values: &'a [O::Value]) -> Self {
             values.to_vec().into()
         }
     }
    @@ -582,9 +582,9 @@
     where
         O::Value: Debug,
     {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        f.debug_struct("SparseTable2d")
    -            .field("table", &self.table)
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        f.debug_struct("SparseTable2d")
    +            .field("table", &self.table)
                 .finish()
         }
     }
    @@ -633,11 +633,11 @@
         }
     }
     
    -impl<'a, O: Op> From<&'a [Vec<O::Value>]> for SparseTable2d<O>
    +impl<'a, O: Op> From<&'a [Vec<O::Value>]> for SparseTable2d<O>
     where
         O::Value: Clone,
     {
    -    fn from(values: &'a [Vec<O::Value>]) -> Self {
    +    fn from(values: &'a [Vec<O::Value>]) -> Self {
             values.to_vec().into()
         }
     }
    diff --git a/src/splay_tree/lib.rs.html b/src/splay_tree/lib.rs.html
    index ca9c4522..d7aa8b79 100644
    --- a/src/splay_tree/lib.rs.html
    +++ b/src/splay_tree/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1187,7 +1187,7 @@
         /// *splay.entry(0).unwrap() += 10;
         /// assert_eq!(splay.iter().copied().collect::<Vec<_>>(), vec![20, 11, 12]);
         /// ```
    -    pub fn entry(&mut self, i: usize) -> Option<Entry<'_, O>> {
    +    pub fn entry(&mut self, i: usize) -> Option<Entry<'_, O>> {
             if self.len() <= i {
                 return None;
             }
    @@ -1263,7 +1263,7 @@
         /// assert_eq!(iter.next(), Some(&11));
         /// assert_eq!(iter.next_back(), None);
         /// ```
    -    pub fn iter(&self) -> Iter<'_, O> {
    +    pub fn iter(&self) -> Iter<'_, O> {
             Iter {
                 splay: self,
                 start: 0,
    @@ -1287,7 +1287,7 @@
         /// assert_eq!(iter.next(), Some(&11));
         /// assert_eq!(iter.next_back(), None);
         /// ```
    -    pub fn range(&self, range: impl RangeBounds<usize>) -> Iter<'_, O> {
    +    pub fn range(&self, range: impl RangeBounds<usize>) -> Iter<'_, O> {
             let Range { start, end } = into_range(self.len(), range);
             Iter {
                 splay: self,
    @@ -1298,12 +1298,12 @@
     
         /// 内部情報をダンプします。
         pub fn dump(&self) {
    -        println!("    === start dump ===    ");
    +        println!("    === start dump ===    ");
             match unsafe { self.0.get().as_ref() } {
    -            None => println!("empty"),
    +            None => println!("empty"),
                 Some(root) => root.dump(),
             }
    -        println!("    ===  end  dump ===    ");
    +        println!("    ===  end  dump ===    ");
         }
     }
     
    @@ -1325,9 +1325,9 @@
         }
     }
     
    -impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O> {
    -    type IntoIter = Iter<'a, O>;
    -    type Item = &'a O::Value;
    +impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O> {
    +    type IntoIter = Iter<'a, O>;
    +    type Item = &'a O::Value;
     
         fn into_iter(self) -> Self::IntoIter {
             self.iter()
    @@ -1335,7 +1335,7 @@
     }
     
     impl<O: LazyOps> Debug for SplayTree<O> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list().entries(self.iter()).finish()
         }
     }
    @@ -1407,13 +1407,13 @@
     }
     
     /// [`SplayTree::iter`], [`SplayTree::range`] の戻り値型です。
    -pub struct Iter<'a, O: LazyOps> {
    -    splay: &'a SplayTree<O>,
    +pub struct Iter<'a, O: LazyOps> {
    +    splay: &'a SplayTree<O>,
         start: usize,
         end: usize,
     }
    -impl<'a, O: LazyOps> Iterator for Iter<'a, O> {
    -    type Item = &'a O::Value;
    +impl<'a, O: LazyOps> Iterator for Iter<'a, O> {
    +    type Item = &'a O::Value;
     
         fn next(&mut self) -> Option<Self::Item> {
             if self.start == self.end {
    @@ -1425,7 +1425,7 @@
             }
         }
     }
    -impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O> {
    +impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O> {
         fn next_back(&mut self) -> Option<Self::Item> {
             if self.start == self.end {
                 None
    @@ -1438,15 +1438,15 @@
     }
     
     /// [`SplayTree::entry`] の戻り値型です。
    -pub struct Entry<'a, O: LazyOps>(&'a mut SplayTree<O>);
    -impl<O: LazyOps> Deref for Entry<'_, O> {
    +pub struct Entry<'a, O: LazyOps>(&'a mut SplayTree<O>);
    +impl<O: LazyOps> Deref for Entry<'_, O> {
         type Target = O::Value;
     
         fn deref(&self) -> &Self::Target {
             &unsafe { &*self.0 .0.get() }.value
         }
     }
    -impl<O: LazyOps> DerefMut for Entry<'_, O> {
    +impl<O: LazyOps> DerefMut for Entry<'_, O> {
         fn deref_mut(&mut self) -> &mut Self::Target {
             &mut unsafe { &mut *self.0 .0.get() }.value
         }
    @@ -1481,23 +1481,23 @@
     }
     fn splay_tree_index_out_of_range_fail(index: usize, len: usize) -> ! {
         panic!(
    -        "range index {} out of range for splay tree of length {}",
    +        "range index {} out of range for splay tree of length {}",
             index, len
         );
     }
     fn splay_tree_start_index_len_fail(index: usize, len: usize) -> ! {
         panic!(
    -        "range start index {} out of range for splay tree of length {}",
    +        "range start index {} out of range for splay tree of length {}",
             index, len
         );
     }
     fn splay_tree_end_index_len_fail(index: usize, len: usize) -> ! {
         panic!(
    -        "range end index {} out of range for splay tree of length {}",
    +        "range end index {} out of range for splay tree of length {}",
             index, len
         );
     }
     fn splay_tree_index_order_fail(index: usize, end: usize) -> ! {
    -    panic!("splay tree index starts at {} but ends at {}", index, end);
    +    panic!("splay tree index starts at {} but ends at {}", index, end);
     }
     
    \ No newline at end of file diff --git a/src/splay_tree/node.rs.html b/src/splay_tree/node.rs.html index 82662b0f..127575a6 100644 --- a/src/splay_tree/node.rs.html +++ b/src/splay_tree/node.rs.html @@ -1,4 +1,4 @@ -node.rs - sourcenode.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -357,9 +357,9 @@
                 left.dump();
             }
             println!(
    -            "{:?}: parent = {:?},  left = {:?}, right = {:?}, len = {}, rev = {}, value = {:?}, \
    -             acc = {:?}, lazy = {:?}",
    -            std::ptr::from_ref(self),
    +            "{:?}: parent = {:?},  left = {:?}, right = {:?}, len = {}, rev = {}, value = {:?}, \
    +             acc = {:?}, lazy = {:?}",
    +            self as *const _,
                 self.parent,
                 self.left,
                 self.right,
    diff --git a/src/suffix_array/lib.rs.html b/src/suffix_array/lib.rs.html
    index a8a9836d..cc2894ec 100644
    --- a/src/suffix_array/lib.rs.html
    +++ b/src/suffix_array/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -207,7 +207,7 @@
     ///
     /// ```
     /// use suffix_array::suffix_array;
    -/// let s = "abracadabra";
    +/// let s = "abracadabra";
     /// let sa = suffix_array(s.as_bytes());
     /// assert_eq!(sa, vec![10, 7, 0, 3, 5, 8, 1, 4, 6, 9, 2]);
     /// ```
    @@ -327,10 +327,10 @@
         }
     
         #[allow(clippy::unused_unit)]
    -    #[test_case("abcbcba"; "yosupo 1")]
    -    #[test_case("mississippi"; "yosupo 2")]
    -    #[test_case("ababacaca"; "yosupo 3")]
    -    #[test_case("aaaaa"; "yosupo 4")]
    +    #[test_case("abcbcba"; "yosupo 1")]
    +    #[test_case("mississippi"; "yosupo 2")]
    +    #[test_case("ababacaca"; "yosupo 3")]
    +    #[test_case("aaaaa"; "yosupo 4")]
         fn test_hand(s: &str) {
             let expected = sa_brute(s.as_bytes());
             let result = suffix_array(s.as_bytes());
    @@ -350,7 +350,7 @@
                     .map(|c| c as char)
                     .take(n)
                     .collect::<String>();
    -            println!("s = {}", s);
    +            println!("s = {}", s);
     
                 let expected = sa_brute(s.as_bytes());
                 let result = suffix_array(s.as_bytes());
    diff --git a/src/suffix_sum/lib.rs.html b/src/suffix_sum/lib.rs.html
    deleted file mode 100644
    index 3c894b58..00000000
    --- a/src/suffix_sum/lib.rs.html
    +++ /dev/null
    @@ -1,777 +0,0 @@
    -lib.rs - source
    -
    -
    -
    -
    -
    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -275
    -276
    -277
    -278
    -279
    -280
    -281
    -282
    -283
    -284
    -285
    -286
    -287
    -288
    -289
    -290
    -291
    -292
    -293
    -294
    -295
    -296
    -297
    -298
    -299
    -300
    -301
    -302
    -303
    -304
    -305
    -306
    -307
    -308
    -309
    -310
    -311
    -312
    -313
    -314
    -315
    -316
    -317
    -318
    -319
    -320
    -321
    -322
    -323
    -324
    -325
    -326
    -327
    -328
    -329
    -330
    -331
    -332
    -333
    -334
    -335
    -336
    -337
    -338
    -339
    -340
    -341
    -342
    -343
    -344
    -345
    -346
    -347
    -348
    -349
    -350
    -351
    -352
    -353
    -354
    -355
    -356
    -357
    -358
    -359
    -360
    -361
    -362
    -363
    -364
    -365
    -366
    -367
    -368
    -369
    -370
    -371
    -
    //! # Suffix Sum
    -//!
    -//! # [`Op`] trait
    -//!
    -//! * [`Op::identity`]: Returns the identity value $e$.
    -//! * [`Op::mul`]: Multiplies two values: $x \cdot y$.
    -//! * [`Op::div`]: Divides two values: $x \cdot y^{-1}$.
    -//!
    -//! The multiplication must be associative and invertible (divisible).
    -//!
    -//! Furthermore, the multiplication must be commutative for [`SuffixSum2d`].
    -use std::fmt;
    -use std::iter::repeat_with;
    -use std::ops::RangeBounds;
    -
    -/// A trait for segment tree operations.
    -pub trait Op {
    -    /// The value type.
    -    type Value;
    -
    -    /// Returns the identity value $e$.
    -    fn identity() -> Self::Value;
    -    /// Multiplies two values: $x \cdot y$.
    -    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
    -    /// Divides two values: $x \cdot y^{-1}$.
    -    fn div(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
    -}
    -
    -/// A structure that stores the suffix sum of a sequence.
    -pub struct SuffixSum<O: Op> {
    -    values: Vec<O::Value>,
    -}
    -impl<O: Op> SuffixSum<O> {
    -    /// Constructs a new instance.
    -    pub fn new(values: &[O::Value]) -> Self
    -    where
    -        O::Value: Clone,
    -    {
    -        Self::from(values.to_vec())
    -    }
    -
    -    /// Returns $x_i$.
    -    pub fn get(&self, index: usize) -> O::Value {
    -        assert!(index < self.values.len() - 1);
    -        O::div(&self.values[index], &self.values[index + 1])
    -    }
    -
    -    /// Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$.
    -    pub fn fold(&self, range: impl RangeBounds<usize>) -> O::Value {
    -        let (start, end) = open(range, self.values.len() - 1);
    -        assert!(start <= end && end < self.values.len());
    -        O::div(&self.values[start], &self.values[end])
    -    }
    -
    -    /// Collects the values to a vector.
    -    pub fn collect_vec(&self) -> Vec<O::Value>
    -    where
    -        O::Value: Clone,
    -    {
    -        let mut values = self.values.clone();
    -        values.pop();
    -        let n = values.len();
    -        if n != 0 {
    -            for i in 0..n - 1 {
    -                values[i] = O::div(&values[i], &values[i + 1]);
    -            }
    -        }
    -        values
    -    }
    -
    -    /// Returns a reference to the inner values.
    -    pub fn inner(&self) -> &[O::Value] {
    -        &self.values
    -    }
    -}
    -
    -impl<O: Op> fmt::Debug for SuffixSum<O>
    -where
    -    O::Value: fmt::Debug,
    -{
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_tuple("SuffixSum").field(&self.values).finish()
    -    }
    -}
    -
    -impl<O: Op> FromIterator<O::Value> for SuffixSum<O> {
    -    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self {
    -        Self::from(iter.into_iter().collect::<Vec<_>>())
    -    }
    -}
    -
    -impl<O: Op> From<Vec<O::Value>> for SuffixSum<O> {
    -    fn from(mut values: Vec<O::Value>) -> Self {
    -        let n = values.len();
    -        values.push(O::identity());
    -        if n != 0 {
    -            for i in (0..n - 1).rev() {
    -                values[i] = O::mul(&values[i], &values[i + 1]);
    -            }
    -        }
    -        Self { values }
    -    }
    -}
    -
    -/// A structure that stores the suffix sum of a 2D sequence.
    -///
    -/// The multiplication must be commutative.
    -pub struct SuffixSum2d<O: Op> {
    -    values: Vec<Vec<O::Value>>,
    -}
    -impl<O: Op> SuffixSum2d<O> {
    -    /// Constructs a new instance.
    -    pub fn new(values: &[Vec<O::Value>]) -> Self
    -    where
    -        O::Value: Clone,
    -    {
    -        Self::from(values.to_vec())
    -    }
    -
    -    /// Returns $x_{i,j}$.
    -    pub fn get(&self, i: usize, j: usize) -> O::Value {
    -        assert!(i < self.values.len() - 1);
    -        assert!(j < self.values[0].len() - 1);
    -        O::div(
    -            &O::mul(&self.values[i][j], &self.values[i + 1][j + 1]),
    -            &O::mul(&self.values[i][j + 1], &self.values[i + 1][j]),
    -        )
    -    }
    -
    -    /// Returns $\left ( x_{i_0, j_0} \cdot \dots \cdot x_{i_0, j_1-1} \right ) \cdot \left ( x_{i_1, j_0} \cdot \dots \cdot x_{i_1-1, j_0} \right )$.
    -    pub fn fold(&self, i: impl RangeBounds<usize>, j: impl RangeBounds<usize>) -> O::Value {
    -        let (i0, i1) = open(i, self.values.len() - 1);
    -        let (j0, j1) = open(j, self.values[0].len());
    -        assert!(i0 <= i1 && i1 < self.values.len());
    -        assert!(j0 <= j1 && j1 <= self.values.first().map_or(0, Vec::len));
    -        O::div(
    -            &O::mul(&self.values[i0][j0], &self.values[i1][j1]),
    -            &O::mul(&self.values[i0][j1], &self.values[i1][j0]),
    -        )
    -    }
    -
    -    /// Collects the values to a vector.
    -    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>
    -    where
    -        O::Value: Clone,
    -    {
    -        let mut values = self.values.clone();
    -        let h = values.len();
    -        let w = values[0].len();
    -        for values in &mut values {
    -            for j in 0..w - 1 {
    -                values[j] = O::div(&values[j], &values[j + 1]);
    -            }
    -        }
    -        for i in 0..h - 1 {
    -            for j in 0..w {
    -                values[i][j] = O::div(&values[i][j], &values[i + 1][j]);
    -            }
    -        }
    -        for values in &mut values {
    -            values.pop().unwrap();
    -        }
    -        values.pop().unwrap();
    -        values
    -    }
    -
    -    /// Returns a reference to the inner values.
    -    pub fn inner(&self) -> &Vec<Vec<O::Value>> {
    -        &self.values
    -    }
    -}
    -
    -impl<O: Op> fmt::Debug for SuffixSum2d<O>
    -where
    -    O::Value: fmt::Debug,
    -{
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        f.debug_tuple("SuffixSum2d").field(&self.values).finish()
    -    }
    -}
    -
    -impl<O: Op> From<Vec<Vec<O::Value>>> for SuffixSum2d<O> {
    -    fn from(mut values: Vec<Vec<O::Value>>) -> Self {
    -        let h = values.len();
    -        let w = values.first().map_or(0, Vec::len);
    -        values.push(repeat_with(O::identity).take(w).collect());
    -        for values in &mut values {
    -            values.push(O::identity());
    -        }
    -        for i in (0..=h).rev() {
    -            for j in (0..w).rev() {
    -                values[i][j] = O::mul(&values[i][j], &values[i][j + 1]);
    -            }
    -        }
    -        for i in (0..h).rev() {
    -            for j in (0..=w).rev() {
    -                values[i][j] = O::mul(&values[i][j], &values[i + 1][j]);
    -            }
    -        }
    -        Self { values }
    -    }
    -}
    -
    -fn open<B: RangeBounds<usize>>(bounds: B, n: usize) -> (usize, usize) {
    -    use std::ops::Bound;
    -    let start = match bounds.start_bound() {
    -        Bound::Unbounded => 0,
    -        Bound::Included(&x) => x,
    -        Bound::Excluded(&x) => x + 1,
    -    };
    -    let end = match bounds.end_bound() {
    -        Bound::Unbounded => n,
    -        Bound::Included(&x) => x + 1,
    -        Bound::Excluded(&x) => x,
    -    };
    -    (start, end)
    -}
    -
    -#[cfg(test)]
    -mod tests {
    -    use super::*;
    -    use rand::rngs::StdRng;
    -    use rand::Rng;
    -    use rand::SeedableRng;
    -    use std::ops::Bound;
    -    use std::ops::Range;
    -
    -    const P: u64 = 998244353;
    -    enum O {}
    -    impl Op for O {
    -        type Value = u64;
    -
    -        fn identity() -> Self::Value {
    -            0
    -        }
    -
    -        fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value {
    -            (lhs + rhs) % P
    -        }
    -
    -        fn div(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value {
    -            (lhs + P - rhs) % P
    -        }
    -    }
    -
    -    #[test]
    -    fn test_suffix_sum() {
    -        let mut rng = StdRng::seed_from_u64(42);
    -        for _ in 0..100 {
    -            let n = rng.gen_range(1..=100);
    -            let q = rng.gen_range(1..=100);
    -            let values: Vec<_> = (0..n).map(|_| rng.gen_range(0..P)).collect();
    -            let suffix_sum = SuffixSum::<O>::new(&values);
    -            assert_eq!(suffix_sum.collect_vec(), values);
    -            for _ in 0..q {
    -                match rng.gen_range(0..2) {
    -                    // get
    -                    0 => {
    -                        let index = rng.gen_range(0..n);
    -                        let expected = values[index];
    -                        assert_eq!(suffix_sum.get(index), expected);
    -                    }
    -                    // fold
    -                    1 => {
    -                        let range = random_range(&mut rng, n);
    -                        let expected = values[range.clone()]
    -                            .iter()
    -                            .fold(0, |acc, &x| (acc + x) % P);
    -                        assert_eq!(suffix_sum.fold(range), expected);
    -                    }
    -                    _ => unreachable!(),
    -                }
    -            }
    -        }
    -    }
    -
    -    #[test]
    -    fn test_suffix_sum_usability() {
    -        let _ = SuffixSum::<O>::new(&[1, 2, 3, 4, 5]);
    -        let _ = SuffixSum::<O>::from(vec![1, 2, 3, 4, 5]);
    -        let _ = [1, 2, 3, 4, 5].into_iter().collect::<SuffixSum<O>>();
    -        let _ = SuffixSum::<O>::new(&[1, 2, 3, 4, 5]).collect_vec();
    -        let _ = SuffixSum::<O>::new(&[1, 2, 3, 4, 5]).fold(..);
    -    }
    -
    -    #[test]
    -    fn test_suffix_sum_various_ranges() {
    -        let values = vec![1, 2, 3, 4, 5];
    -        let suffix_sum = SuffixSum::<O>::new(&values);
    -        assert_eq!(suffix_sum.fold(..), 15);
    -        assert_eq!(suffix_sum.fold(..2), 3);
    -        assert_eq!(suffix_sum.fold(1..), 14);
    -        assert_eq!(suffix_sum.fold(1..3), 5);
    -        assert_eq!(suffix_sum.fold(1..=3), 9);
    -        assert_eq!(suffix_sum.fold((Bound::Included(1), Bound::Excluded(3))), 5);
    -    }
    -
    -    #[test]
    -    fn test_suffix_sum_empty() {
    -        let values = vec![];
    -        let suffix_sum = SuffixSum::<O>::new(&values);
    -        assert_eq!(suffix_sum.collect_vec(), values);
    -        assert_eq!(suffix_sum.fold(..), 0);
    -    }
    -
    -    #[test]
    -    #[allow(clippy::should_panic_without_expect)]
    -    #[should_panic]
    -    #[allow(clippy::reversed_empty_ranges)]
    -    fn test_suffix_sum_invalid_range() {
    -        let values = vec![1, 2, 3, 4, 5];
    -        let suffix_sum = SuffixSum::<O>::new(&values);
    -        suffix_sum.fold(3..1);
    -    }
    -
    -    #[test]
    -    #[allow(clippy::should_panic_without_expect)]
    -    #[should_panic]
    -    fn test_suffix_sum_out_of_range() {
    -        let values = vec![1, 2, 3, 4, 5];
    -        let suffix_sum = SuffixSum::<O>::new(&values);
    -        suffix_sum.fold(0..6);
    -    }
    -
    -    #[test]
    -    fn test_suffix_sum_2d() {
    -        let mut rng = StdRng::seed_from_u64(42);
    -        for _ in 0..100 {
    -            let h = rng.gen_range(1..=10);
    -            let w = rng.gen_range(1..=10);
    -            let q = rng.gen_range(1..=100);
    -            let values: Vec<Vec<_>> = (0..h)
    -                .map(|_| (0..w).map(|_| rng.gen_range(0..P)).collect())
    -                .collect();
    -            let suffix_sum = SuffixSum2d::<O>::new(&values);
    -            assert_eq!(suffix_sum.collect_vec(), values);
    -            for _ in 0..q {
    -                match rng.gen_range(0..2) {
    -                    // get
    -                    0 => {
    -                        let i = rng.gen_range(0..h);
    -                        let j = rng.gen_range(0..w);
    -                        let expected = values[i][j];
    -                        assert_eq!(suffix_sum.get(i, j), expected);
    -                    }
    -                    // fold
    -                    1 => {
    -                        let row = random_range(&mut rng, h);
    -                        let col = random_range(&mut rng, w);
    -                        let expected = values[row.clone()]
    -                            .iter()
    -                            .flat_map(|row| &row[col.clone()])
    -                            .fold(0, |acc, x| (acc + x) % P);
    -                        assert_eq!(suffix_sum.fold(row, col), expected);
    -                    }
    -                    _ => unreachable!(),
    -                }
    -            }
    -        }
    -    }
    -
    -    fn random_range(rng: &mut StdRng, n: usize) -> Range<usize> {
    -        let start = rng.gen_range(0..=n + 1);
    -        let end = rng.gen_range(0..=n);
    -        if start <= end {
    -            start..end
    -        } else {
    -            end..start - 1
    -        }
    -    }
    -}
    -
    \ No newline at end of file diff --git a/src/swag/lib.rs.html b/src/swag/lib.rs.html index 48add5a9..b2b7c7f7 100644 --- a/src/swag/lib.rs.html +++ b/src/swag/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -764,12 +764,12 @@
     where
         O::Value: std::fmt::Debug,
     {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        f.debug_struct("DequeueSwag")
    -            .field("front", &self.front)
    -            .field("back", &self.back)
    -            .field("front_sum", &self.front_sum)
    -            .field("back_sum", &self.back_sum)
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        f.debug_struct("DequeueSwag")
    +            .field("front", &self.front)
    +            .field("back", &self.back)
    +            .field("front_sum", &self.front_sum)
    +            .field("back_sum", &self.back_sum)
                 .finish()
         }
     }
    @@ -799,16 +799,16 @@
         type Item = O::Value;
     
         fn into_iter(self) -> Self::IntoIter {
    -        self.front.into_iter().rev().chain(self.back)
    +        self.front.into_iter().rev().chain(self.back.into_iter())
         }
     }
     
    -impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O> {
    +impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O> {
         type IntoIter = std::iter::Chain<
    -        std::iter::Rev<std::slice::Iter<'a, O::Value>>,
    -        std::slice::Iter<'a, O::Value>,
    +        std::iter::Rev<std::slice::Iter<'a, O::Value>>,
    +        std::slice::Iter<'a, O::Value>,
         >;
    -    type Item = &'a O::Value;
    +    type Item = &'a O::Value;
     
         fn into_iter(self) -> Self::IntoIter {
             self.front.iter().rev().chain(self.back.iter())
    @@ -851,8 +851,8 @@
         #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
         struct Fp(u64);
         impl Debug for Fp {
    -        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -            write!(f, "{}", self.0)
    +        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +            write!(f, "{}", self.0)
             }
         }
         impl Add for Fp {
    @@ -892,29 +892,29 @@
                         0 => {
                             let a = Fp(rng.gen_range(0..4));
                             let b = Fp(rng.gen_range(0..4));
    -                        eprintln!("push_front {:?}", (a, b));
    +                        eprintln!("push_front {:?}", (a, b));
                             swag.push_front((a, b));
                             deque.push_front((a, b));
                         }
                         1 => {
                             let a = Fp(rng.gen_range(0..4));
                             let b = Fp(rng.gen_range(0..4));
    -                        eprintln!("push_back {:?}", (a, b));
    +                        eprintln!("push_back {:?}", (a, b));
                             swag.push_back((a, b));
                             deque.push_back((a, b));
                         }
                         2 => {
    -                        eprintln!("pop_front");
    +                        eprintln!("pop_front");
                             assert_eq!(swag.pop_front(), deque.pop_front());
                         }
                         3 => {
    -                        eprintln!("pop_back");
    +                        eprintln!("pop_back");
                             assert_eq!(swag.pop_back(), deque.pop_back());
                         }
                         _ => unreachable!(),
                     }
    -                eprintln!("{:?}", deque);
    -                eprintln!("{:?}", swag);
    +                eprintln!("{:?}", deque);
    +                eprintln!("{:?}", swag);
                     let result = swag.fold().unwrap_or((Fp(1), Fp(0)));
                     let expected = deque
                         .iter()
    @@ -923,7 +923,7 @@
                     let result = swag.collect_vec();
                     let expected = deque.iter().copied().collect::<Vec<_>>();
                     assert_eq!(result, expected);
    -                eprintln!("---");
    +                eprintln!("---");
                 }
             }
         }
    diff --git a/src/tree_fold/lib.rs.html b/src/tree_fold/lib.rs.html
    index 8349b94d..7ef8937f 100644
    --- a/src/tree_fold/lib.rs.html
    +++ b/src/tree_fold/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -477,8 +477,8 @@
                 child: Vec<Self>,
             }
             impl std::fmt::Debug for Tree {
    -            fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -                f.debug_tuple("")
    +            fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +                f.debug_tuple("")
                         .field(&self.root)
                         .field(&self.child)
                         .finish()
    diff --git a/src/trial/divisors.rs.html b/src/trial/divisors.rs.html
    index 806db9d7..431cc5c9 100644
    --- a/src/trial/divisors.rs.html
    +++ b/src/trial/divisors.rs.html
    @@ -1,4 +1,4 @@
    -divisors.rs - sourcedivisors.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -186,7 +186,7 @@
     ///
     /// # Note
     ///
    -/// The order of the return value is not necessarily ascending, but ordered in "alternating" order.
    +/// The order of the return value is not necessarily ascending, but ordered in "alternating" order.
     /// (eg. 1, 36, 2, 18, 3, 12, 4, 9)
     ///
     /// # Example
    diff --git a/src/trial/lib.rs.html b/src/trial/lib.rs.html
    index ffb5b2ea..ba772bec 100644
    --- a/src/trial/lib.rs.html
    +++ b/src/trial/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -164,7 +164,7 @@
         }
     }
     
    -macro_rules! impl_value {
    +macro_rules! impl_value {
         ($($t:ty),* $(,)?) => {$(
             impl Value for $t {
                 fn zero() -> Self {
    @@ -179,7 +179,7 @@
             }
         )*}
     }
    -impl_value! {
    +impl_value! {
         usize, u8, u16, u32, u64, u128,
     }
     
    \ No newline at end of file diff --git a/src/trial/prime_factors.rs.html b/src/trial/prime_factors.rs.html index bb7f4852..6380ef1d 100644 --- a/src/trial/prime_factors.rs.html +++ b/src/trial/prime_factors.rs.html @@ -1,4 +1,4 @@ -prime_factors.rs - sourceprime_factors.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -191,7 +191,7 @@
     /// assert_eq!(iter.next(), None);
     /// ```
     pub fn prime_factors_rle<T: Value>(n: T) -> PrimeFactorsRle<T> {
    -    assert_ne!(n, T::zero(), "Cannot call `prime_factors_rle` by `0`.");
    +    assert_ne!(n, T::zero(), "Cannot call `prime_factors_rle` by `0`.");
         PrimeFactorsRle { n, p: T::one() }
     }
     
    @@ -245,7 +245,7 @@
         assert_ne!(
             n,
             T::zero(),
    -        "Cannot call `prime_factorprime_factors` by `0`."
    +        "Cannot call `prime_factorprime_factors` by `0`."
         );
         PrimeFactors { n, p: T::one() }
     }
    diff --git a/src/trie/lib.rs.html b/src/trie/lib.rs.html
    index 0d82fe53..72bfdd26 100644
    --- a/src/trie/lib.rs.html
    +++ b/src/trie/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    diff --git a/src/trie/trie_map.rs.html b/src/trie/trie_map.rs.html
    index 9a0e4deb..df2b873d 100644
    --- a/src/trie/trie_map.rs.html
    +++ b/src/trie/trie_map.rs.html
    @@ -1,4 +1,4 @@
    -trie_map.rs - sourcetrie_map.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -440,7 +440,7 @@
     pub struct TrieMap<V>(Option<Box<Node<V>>>);
     
     impl<V: Debug> Debug for TrieMap<V> {
    -    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
             let mut f = w.debug_map();
             self.for_each_kv(|k, v| {
                 f.key(&k.to_vec()).value(v);
    @@ -471,7 +471,7 @@
         /// let mut map = TrieMap::new();
         ///
         /// // entries can now be inserted into the empty map
    -    /// map.insert(once(1), "a");
    +    /// map.insert(once(1), "a");
         /// ```
         pub fn new() -> Self {
             Self(None)
    @@ -493,12 +493,12 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// assert_eq!(map.insert(once(17), "a"), None);
    +    /// assert_eq!(map.insert(once(17), "a"), None);
         /// // assert_eq!(map.is_empty(), false); TODO: unimplemented
         ///
    -    /// map.insert(once(17), "b");
    -    /// assert_eq!(map.insert(once(17), "c"), Some("b"));
    -    /// // assert_eq!(map[&37], "c"); TODO: unimplemented
    +    /// map.insert(once(17), "b");
    +    /// assert_eq!(map.insert(once(17), "c"), Some("b"));
    +    /// // assert_eq!(map[&37], "c"); TODO: unimplemented
         /// ```
         pub fn insert(&mut self, key: impl IntoIterator<Item = usize>, value: V) -> Option<V> {
             let mut key = key.into_iter();
    @@ -521,8 +521,8 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(once(1), "a");
    -    /// assert_eq!(map.remove(once(1)), Some("a"));
    +    /// map.insert(once(1), "a");
    +    /// assert_eq!(map.remove(once(1)), Some("a"));
         /// assert_eq!(map.remove(once(1)), None);
         /// ```
         pub fn remove(&mut self, key: impl IntoIterator<Item = usize>) -> Option<V> {
    @@ -547,8 +547,8 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(once(1), "a");
    -    /// assert_eq!(map.get(once(1)), Some(&"a"));
    +    /// map.insert(once(1), "a");
    +    /// assert_eq!(map.get(once(1)), Some(&"a"));
         /// assert_eq!(map.get(once(2)), None);
         /// ```
         pub fn get(&self, key: impl IntoIterator<Item = usize>) -> Option<&V> {
    @@ -571,12 +571,12 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(once(1), "a");
    +    /// map.insert(once(1), "a");
         /// if let Some(x) = map.get_mut(once(1)) {
    -    ///     *x = "b";
    +    ///     *x = "b";
         /// }
    -    /// assert_eq!(map.get(once(1)), Some(&"b"));
    -    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
    +    /// assert_eq!(map.get(once(1)), Some(&"b"));
    +    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
         /// ```
         pub fn get_mut(&mut self, key: impl IntoIterator<Item = usize>) -> Option<&mut V> {
             let mut key = key.into_iter();
    @@ -597,17 +597,17 @@
         /// use std::iter::once;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(once(1), "a");
    +    /// map.insert(once(1), "a");
         ///
         /// // Existing
    -    /// map.get_or_insert(once(1), "b");
    -    /// assert_eq!(map.get(once(1)), Some(&"a"));
    +    /// map.get_or_insert(once(1), "b");
    +    /// assert_eq!(map.get(once(1)), Some(&"a"));
         ///
         /// // New
    -    /// map.get_or_insert(once(2), "c");
    -    /// assert_eq!(map.get(once(2)), Some(&"c"));
    +    /// map.get_or_insert(once(2), "c");
    +    /// assert_eq!(map.get(once(2)), Some(&"c"));
         ///
    -    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
    +    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
         pub fn get_or_insert(&mut self, key: impl IntoIterator<Item = usize>, value: V) -> &mut V {
             let mut key = key.into_iter();
             let me = self.0.get_or_insert_with(|| Box::new(Node::new()));
    @@ -627,17 +627,17 @@
         /// use std::iter::once;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(once(1), "a");
    +    /// map.insert(once(1), "a");
         ///
         /// // Existing
    -    /// map.get_or_insert_with(once(1), || "b");
    -    /// assert_eq!(map.get(once(1)), Some(&"a"));
    +    /// map.get_or_insert_with(once(1), || "b");
    +    /// assert_eq!(map.get(once(1)), Some(&"a"));
         ///
         /// // New
    -    /// map.get_or_insert_with(once(2), || "c");
    -    /// assert_eq!(map.get(once(2)), Some(&"c"));
    +    /// map.get_or_insert_with(once(2), || "c");
    +    /// assert_eq!(map.get(once(2)), Some(&"c"));
         ///
    -    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
    +    /// // assert_eq!(map[&1], "b"); TODO: unimplemented
         pub fn get_or_insert_with(
             &mut self,
             key: impl IntoIterator<Item = usize>,
    @@ -651,7 +651,7 @@
             }
         }
     
    -    /// Visits all the "existing" nodes corresponding to the preficies of the key.
    +    /// Visits all the "existing" nodes corresponding to the preficies of the key.
         ///
         /// # Examples
         ///
    @@ -662,25 +662,25 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(vec![1], "a");
    -    /// map.insert(vec![1, 1, 1], "c");
    +    /// map.insert(vec![1], "a");
    +    /// map.insert(vec![1, 1, 1], "c");
         ///
         /// // Corresponding an existing key.
    -    /// let mut expected = [None, Some("a"), None, Some("c")].iter();
    +    /// let mut expected = [None, Some("a"), None, Some("c")].iter();
         /// map.for_each_prefix(vec![1, 1, 1].into_iter(), |trie| {
         ///     let expected = expected.next().unwrap().as_ref();
         ///     assert_eq!(trie.get(None.into_iter()), expected);
         /// });
         ///
         /// // No, but falls within the trie.
    -    /// let mut expected = [None, Some("a"), None].iter();
    +    /// let mut expected = [None, Some("a"), None].iter();
         /// map.for_each_prefix(vec![1, 1].into_iter(), |trie| {
         ///     let expected = expected.next().unwrap().as_ref();
         ///     assert_eq!(trie.get(None.into_iter()), expected);
         /// });
         ///
         /// // Runs off thte trie.
    -    /// let mut expected = [None, Some("a"), None, Some("c")].iter();
    +    /// let mut expected = [None, Some("a"), None, Some("c")].iter();
         /// map.for_each_prefix(vec![1, 1, 1, 1].into_iter(), |trie| {
         ///     let expected = expected.next().unwrap().as_ref();
         ///     assert_eq!(trie.get(None.into_iter()), expected);
    @@ -712,16 +712,16 @@
         /// use trie::TrieMap;
         ///
         /// let mut map = TrieMap::new();
    -    /// map.insert(vec![1, 2, 2], "a");
    -    /// map.insert(vec![2], "b");
    -    /// map.insert(vec![1], "c");
    -    /// map.insert(vec![1, 1, 1], "d");
    +    /// map.insert(vec![1, 2, 2], "a");
    +    /// map.insert(vec![2], "b");
    +    /// map.insert(vec![1], "c");
    +    /// map.insert(vec![1, 1, 1], "d");
         ///
         /// let mut expected = vec![
    -    ///     (vec![1], "c"),
    -    ///     (vec![1, 1, 1], "d"),
    -    ///     (vec![1, 2, 2], "a"),
    -    ///     (vec![2], "b"),
    +    ///     (vec![1], "c"),
    +    ///     (vec![1, 1, 1], "d"),
    +    ///     (vec![1, 2, 2], "a"),
    +    ///     (vec![2], "b"),
         /// ]
         /// .into_iter();
         /// map.for_each_kv(|k, &v| {
    @@ -777,9 +777,9 @@
         use test_case::test_case;
     
         #[allow(clippy::unused_unit)]
    -    #[test_case(200, 2; "short")]
    -    #[test_case(200, 10; "mid")]
    -    #[test_case(200, 100; "long")]
    +    #[test_case(200, 2; "short")]
    +    #[test_case(200, 10; "mid")]
    +    #[test_case(200, 100; "long")]
         fn test_trie_map_rand(iter: usize, len_max: usize) {
             let mut rng = StdRng::seed_from_u64(42);
             let mut trie = TrieMap::new();
    @@ -822,8 +822,8 @@
                     _ => unreachable!(),
                 }
     
    -            println!("trie = {:?}", trie);
    -            println!("btree_map = {:?}", btree_map);
    +            println!("trie = {:?}", trie);
    +            println!("btree_map = {:?}", btree_map);
                 println!();
             }
         }
    diff --git a/src/trie/trie_set.rs.html b/src/trie/trie_set.rs.html
    index 176ee93f..b0732f03 100644
    --- a/src/trie/trie_set.rs.html
    +++ b/src/trie/trie_set.rs.html
    @@ -1,4 +1,4 @@
    -trie_set.rs - sourcetrie_set.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -278,7 +278,7 @@
     }
     
     impl Debug for TrieSet {
    -    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, w: &mut Formatter<'_>) -> fmt::Result {
             let mut f = w.debug_set();
             self.for_each(|k| {
                 f.entry(&k.to_vec());
    @@ -380,7 +380,7 @@
             self.map.remove(value).is_some()
         }
     
    -    /// Visits all the "existing" nodes corresponding to the preficies of the value.
    +    /// Visits all the "existing" nodes corresponding to the preficies of the value.
         ///
         /// # Examples
         ///
    @@ -458,9 +458,9 @@
         use test_case::test_case;
     
         #[allow(clippy::unused_unit)]
    -    #[test_case(200, 2; "short")]
    -    #[test_case(200, 10; "mid")]
    -    #[test_case(200, 100; "long")]
    +    #[test_case(200, 2; "short")]
    +    #[test_case(200, 10; "mid")]
    +    #[test_case(200, 100; "long")]
         fn test_trie_set_rand(iter: usize, len_max: usize) {
             let mut rng = StdRng::seed_from_u64(42);
             let mut trie = TrieSet::new();
    @@ -494,8 +494,8 @@
                     _ => unreachable!(),
                 }
     
    -            println!("trie = {:?}", trie);
    -            println!("btree_set = {:?}", btree_set);
    +            println!("trie = {:?}", trie);
    +            println!("btree_set = {:?}", btree_set);
                 println!();
             }
         }
    diff --git a/src/two_sat/lib.rs.html b/src/two_sat/lib.rs.html
    index 778ae002..a95cb73e 100644
    --- a/src/two_sat/lib.rs.html
    +++ b/src/two_sat/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -203,8 +203,8 @@
     //! two_sat.build();
     //!
     //! // Debug がきれいです。
    -//! let expected = "[0→1, 0→¬2, ¬1→¬0, 1→2, 1→¬2, ¬2→¬1, 2→¬0, 2→¬1]";
    -//! assert_eq!(format!("{:?}", &two_sat).as_str(), expected);
    +//! let expected = "[0→1, 0→¬2, ¬1→¬0, 1→2, 1→¬2, ¬2→¬1, 2→¬0, 2→¬1]";
    +//! assert_eq!(format!("{:?}", &two_sat).as_str(), expected);
     //!
     //! // 解きます。
     //! assert_eq!(Some(vec![false, false, true]), two_sat.solve());
    @@ -253,7 +253,7 @@
         }
     }
     impl Debug for TwoSat {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list()
                 .entries(
                     self.scc
    @@ -271,13 +271,13 @@
         y: usize,
     }
     impl Debug for DebugImplication {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             write!(
                 f,
    -            "{}{}→{}{}",
    -            "¬".repeat(1 - self.x % 2),
    +            "{}{}→{}{}",
    +            "¬".repeat(1 - self.x % 2),
                 self.x / 2,
    -            "¬".repeat(1 - self.y % 2),
    +            "¬".repeat(1 - self.y % 2),
                 self.y / 2
             )
         }
    diff --git a/src/uf_checklist/lib.rs.html b/src/uf_checklist/lib.rs.html
    index b51fc530..ab31719e 100644
    --- a/src/uf_checklist/lib.rs.html
    +++ b/src/uf_checklist/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -390,6 +390,8 @@
     356
     357
     358
    +359
    +360
     
    //! Union-find を用いて、「一度処理したところを処理しない」区間クエリを線形で処理します。
     //!
     //! # データ構造の定義
    @@ -421,7 +423,9 @@
     //!
     //! ## クエリ
     //!
    -//! * [`lower_bound`](UfChecklist::lower_bound): 指定した場所と同じかもっと右にある未チェックな項を探します。
    +//! * [`lower_bound`](UfChecklist::lower_bound):
    +//! 指定した場所と同じかもっと右にある未チェックな項
    +//! を探します。
     //! * [`is_checked`](UfChecklist::is_checked): 指定した位置がチェック済みかどうかを判定します。
     //!
     //!
    @@ -515,12 +519,12 @@
         /// assert_eq!(rc.range_check(3..5).collect::<Vec<_>>(), vec![3, 4]);
         /// assert_eq!(rc.range_check(4..6).collect::<Vec<_>>(), vec![5]);
         /// ```
    -    pub fn range_check(&mut self, range: impl RangeBounds<usize>) -> Iter<'_> {
    +    pub fn range_check(&mut self, range: impl RangeBounds<usize>) -> Iter<'_> {
             let n = self.rightmost.len() - 1;
             let Range { mut start, end } = open(range, n);
             assert!(
                 start <= end && end <= n,
    -            "範囲外です。start = {}, end = {}, n = {}",
    +            "範囲外です。start = {}, end = {}, n = {}",
                 start,
                 end,
                 n
    @@ -563,7 +567,7 @@
         /// ```
         pub fn lower_bound(&self, i: usize) -> Option<usize> {
             let n = self.rightmost.len() - 1;
    -        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
    +        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
             let i = __next_unckecked_cell(self, i);
             if i == self.rightmost.len() - 1 {
                 None
    @@ -601,7 +605,7 @@
         /// ```
         pub fn is_checked(&self, i: usize) -> bool {
             let n = self.rightmost.len() - 1;
    -        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
    +        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
             self.rightmost[self.uf.find(i)] != i
         }
     
    @@ -640,7 +644,7 @@
         /// ```
         pub fn check(&mut self, i: usize) -> bool {
             let n = self.rightmost.len() - 1;
    -        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
    +        assert!(i < n, "範囲外です。 i = {}, n = {}", i, n);
             if self.rightmost[self.uf.find(i)] == i {
                 let next = __next_unckecked_cell(self, i + 1);
                 self.uf.union(i, next);
    @@ -658,12 +662,12 @@
     
     /// [`UfChecklist::range_check`] が返すイテレータです。
     #[derive(Debug)]
    -pub struct Iter<'a> {
    -    range_check: &'a mut UfChecklist,
    +pub struct Iter<'a> {
    +    range_check: &'a mut UfChecklist,
         start: usize,
         end: usize,
     }
    -impl Iterator for Iter<'_> {
    +impl Iterator for Iter<'_> {
         type Item = usize;
     
         fn next(&mut self) -> Option<Self::Item> {
    diff --git a/src/union_find/lib.rs.html b/src/union_find/lib.rs.html
    index b9691e30..42457f0c 100644
    --- a/src/union_find/lib.rs.html
    +++ b/src/union_find/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -435,7 +435,7 @@
     //!
     //! // `Debug` トレイトを実装しています。
     //! // 頂点重みを持つ場合と実装を分岐できないため、`()` がついて悲しいです。
    -//! assert_eq!(&format!("{:?}", &uf), "[((), [0]), ((), [1]), ((), [2])]");
    +//! assert_eq!(&format!("{:?}", &uf), "[((), [0]), ((), [1]), ((), [2])]");
     //!
     //! // union-find 操作です。
     //! assert_eq!(uf.same(0, 1), false);
    @@ -465,8 +465,8 @@
     //! // `Debug` トレイトを実装しています。
     //! // (重み, メンバー) の形でプリントします。
     //! assert_eq!(
    -//!     &format!("{:?}", &uf),
    -//!     "[((0, false), [0]), ((0, false), [1]), ((0, false), [2])]"
    +//!     &format!("{:?}", &uf),
    +//!     "[((0, false), [0]), ((0, false), [1]), ((0, false), [2])]"
     //! );
     //!
     //! // union-find 操作と、頂点重みの取得です。
    @@ -607,7 +607,7 @@
     
         pub fn from_values(values: Vec<O::Value>) -> Self {
             let n = values.len();
    -        assert!(n <= usize::MAX / 2);
    +        assert!(n <= std::usize::MAX / 2);
             Self {
                 parent_or_size: vec![-1; n],
                 values,
    @@ -689,7 +689,7 @@
     where
         O::Value: Debug,
     {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
             let n = self.parent_or_size.len();
             let mut groups = vec![Vec::new(); n];
             for i in 0..n {
    diff --git a/src/veb/lib.rs.html b/src/veb/lib.rs.html
    index 45dfe567..14812288 100644
    --- a/src/veb/lib.rs.html
    +++ b/src/veb/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -1045,7 +1045,7 @@
     
     use std::collections::HashMap;
     
    -macro_rules! multi_or_else {
    +macro_rules! multi_or_else {
         ($e:expr, $($f:expr),+) => {
             $e.or_else(|| multi_or_else!($($f),+))
         };
    @@ -1060,14 +1060,14 @@
     /// # Example
     /// ```
     /// use veb::VebMap;
    -/// let mut veb = VebMap::from_iter(vec![(42, "foo"), (43, "bar")]);
    -/// assert_eq!(veb.get(42), Some(&"foo"));
    -/// assert_eq!(veb.get(43), Some(&"bar"));
    +/// let mut veb = VebMap::from_iter(vec![(42, "foo"), (43, "bar")]);
    +/// assert_eq!(veb.get(42), Some(&"foo"));
    +/// assert_eq!(veb.get(43), Some(&"bar"));
     /// assert_eq!(veb.get(44), None);
     ///
    -/// assert_eq!(veb.min(), Some((42, &"foo")));
    +/// assert_eq!(veb.min(), Some((42, &"foo")));
     /// assert_eq!(veb.min_key(), Some(42));
    -/// assert_eq!(veb.min_value(), Some(&"foo"));
    +/// assert_eq!(veb.min_value(), Some(&"foo"));
     /// ```
     pub struct VebMap<V> {
         veb: VebSet,
    @@ -1095,8 +1095,8 @@
         /// ```
         /// # use veb::VebMap;
         /// let mut veb = VebMap::new(1000);
    -    /// assert_eq!(veb.insert(42, "foo"), None);
    -    /// assert_eq!(veb.insert(42, "bar"), Some("foo"));
    +    /// assert_eq!(veb.insert(42, "foo"), None);
    +    /// assert_eq!(veb.insert(42, "bar"), Some("foo"));
         /// ```
         pub fn insert(&mut self, i: usize, v: V) -> Option<V> {
             self.veb.insert(i);
    @@ -1109,8 +1109,8 @@
         /// ```
         /// # use veb::VebMap;
         /// let mut veb = VebMap::new(1000);
    -    /// veb.insert(42, "foo");
    -    /// assert_eq!(veb.remove(42), Some("foo"));
    +    /// veb.insert(42, "foo");
    +    /// assert_eq!(veb.remove(42), Some("foo"));
         /// assert_eq!(veb.remove(42), None);
         /// ```
         pub fn remove(&mut self, i: usize) -> Option<V> {
    @@ -1123,8 +1123,8 @@
         /// ```
         /// # use veb::VebMap;
         /// let mut veb = VebMap::new(1000);
    -    /// veb.insert(42, "foo");
    -    /// assert_eq!(veb.get(42), Some(&"foo"));
    +    /// veb.insert(42, "foo");
    +    /// assert_eq!(veb.get(42), Some(&"foo"));
         /// assert_eq!(veb.get(43), None);
         /// ```
         pub fn get(&self, i: usize) -> Option<&V> {
    @@ -1137,8 +1137,8 @@
         /// ```
         /// # use veb::VebMap;
         /// let mut veb = VebMap::new(1000);
    -    /// veb.insert(42, "foo");
    -    /// assert_eq!(veb.get_mut(42), Some(&mut "foo"));
    +    /// veb.insert(42, "foo");
    +    /// assert_eq!(veb.get_mut(42), Some(&mut "foo"));
         /// assert_eq!(veb.get_mut(43), None);
         /// ```
         pub fn get_mut(&mut self, i: usize) -> Option<&mut V> {
    @@ -1152,8 +1152,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.min(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.min(), Some((42, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.min(), Some((42, &"foo")));
         /// ```
         pub fn min_key(&self) -> Option<usize> {
             self.veb.min()
    @@ -1166,8 +1166,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.min_value(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.min_value(), Some(&"foo"));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.min_value(), Some(&"foo"));
         /// ```
         pub fn min_value(&self) -> Option<&V> {
             self.veb.min().and_then(|i| self.map.get(&i))
    @@ -1180,8 +1180,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.min(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.min(), Some((42, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.min(), Some((42, &"foo")));
         /// ```
         pub fn min(&self) -> Option<(usize, &V)> {
             self.veb
    @@ -1196,8 +1196,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.max(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.max(), Some((42, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.max(), Some((42, &"foo")));
         /// ```
         pub fn max_key(&self) -> Option<usize> {
             self.veb.max()
    @@ -1210,8 +1210,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.max_value(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.max_value(), Some(&"foo"));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.max_value(), Some(&"foo"));
         /// ```
         pub fn max_value(&self) -> Option<&V> {
             self.veb.max().and_then(|i| self.map.get(&i))
    @@ -1224,8 +1224,8 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.max(), None);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    -    /// assert_eq!(veb.max(), Some((42, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// assert_eq!(veb.max(), Some((42, &"foo")));
         /// ```
         pub fn max(&self) -> Option<(usize, &V)> {
             self.veb
    @@ -1238,10 +1238,10 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
         /// assert_eq!(veb.succ_key(34), Some(56));
    -    /// assert_eq!(veb.succ_value(34), Some(&"baz"));
    -    /// assert_eq!(veb.succ(34), Some((56, &"baz")));
    +    /// assert_eq!(veb.succ_value(34), Some(&"baz"));
    +    /// assert_eq!(veb.succ(34), Some((56, &"baz")));
         /// assert_eq!(veb.succ(78), None);
         /// ```
         pub fn succ_key(&self, i: usize) -> Option<usize> {
    @@ -1253,8 +1253,8 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.succ_value(34), Some(&"baz"));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.succ_value(34), Some(&"baz"));
         /// assert_eq!(veb.succ_value(78), None);
         /// ```
         pub fn succ_value(&self, i: usize) -> Option<&V> {
    @@ -1266,8 +1266,8 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.succ(34), Some((56, &"baz")));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.succ(34), Some((56, &"baz")));
         /// assert_eq!(veb.succ(78), None);
         /// ```
         pub fn succ(&self, i: usize) -> Option<(usize, &V)> {
    @@ -1281,7 +1281,7 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
         /// assert_eq!(veb.succ_eq_key(34), Some(34));
         /// assert_eq!(veb.succ_eq_key(35), Some(56));
         /// ```
    @@ -1297,9 +1297,9 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.succ_eq_value(34), Some(&"bar"));
    -    /// assert_eq!(veb.succ_eq_value(35), Some(&"baz"));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.succ_eq_value(34), Some(&"bar"));
    +    /// assert_eq!(veb.succ_eq_value(35), Some(&"baz"));
         /// ```
         pub fn succ_eq_value(&self, i: usize) -> Option<&V> {
             if let Some(v) = self.get(i) {
    @@ -1313,9 +1313,9 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.succ_eq(34), Some((34, &"bar")));
    -    /// assert_eq!(veb.succ_eq(35), Some((56, &"baz")));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.succ_eq(34), Some((34, &"bar")));
    +    /// assert_eq!(veb.succ_eq(35), Some((56, &"baz")));
         /// ```
         pub fn succ_eq(&self, i: usize) -> Option<(usize, &V)> {
             if let Some(v) = self.get(i) {
    @@ -1329,10 +1329,10 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
         /// assert_eq!(veb.pred_key(34), Some(12));
    -    /// assert_eq!(veb.pred_value(34), Some(&"foo"));
    -    /// assert_eq!(veb.pred(34), Some((12, &"foo")));
    +    /// assert_eq!(veb.pred_value(34), Some(&"foo"));
    +    /// assert_eq!(veb.pred(34), Some((12, &"foo")));
         /// assert_eq!(veb.pred(12), None);
         /// ```
         pub fn pred_key(&self, i: usize) -> Option<usize> {
    @@ -1344,8 +1344,8 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.pred_value(34), Some(&"foo"));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.pred_value(34), Some(&"foo"));
         /// assert_eq!(veb.pred_value(12), None);
         /// ```
         pub fn pred_value(&self, i: usize) -> Option<&V> {
    @@ -1357,8 +1357,8 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.pred(34), Some((12, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.pred(34), Some((12, &"foo")));
         /// assert_eq!(veb.pred(12), None);
         /// ```
         pub fn pred(&self, i: usize) -> Option<(usize, &V)> {
    @@ -1372,7 +1372,7 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
         /// assert_eq!(veb.pred_eq_key(34), Some(34));
         /// assert_eq!(veb.pred_eq_key(33), Some(12));
         /// ```
    @@ -1388,9 +1388,9 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.pred_eq_value(34), Some(&"bar"));
    -    /// assert_eq!(veb.pred_eq_value(33), Some(&"foo"));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.pred_eq_value(34), Some(&"bar"));
    +    /// assert_eq!(veb.pred_eq_value(33), Some(&"foo"));
         /// ```
         pub fn pred_eq_value(&self, i: usize) -> Option<&V> {
             if let Some(v) = self.get(i) {
    @@ -1404,9 +1404,9 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -    /// assert_eq!(veb.pred_eq(34), Some((34, &"bar")));
    -    /// assert_eq!(veb.pred_eq(33), Some((12, &"foo")));
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// assert_eq!(veb.pred_eq(34), Some((34, &"bar")));
    +    /// assert_eq!(veb.pred_eq(33), Some((12, &"foo")));
         /// ```
         pub fn pred_eq(&self, i: usize) -> Option<(usize, &V)> {
             if let Some(v) = self.get(i) {
    @@ -1422,7 +1422,7 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.len(), 0);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
         /// assert_eq!(veb.len(), 1);
         /// ```
         pub fn len(&self) -> usize {
    @@ -1435,7 +1435,7 @@
         /// # use veb::VebMap;
         /// let veb = VebMap::<()>::from_iter(vec![]);
         /// assert_eq!(veb.is_empty(), true);
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
         /// assert_eq!(veb.is_empty(), false);
         /// ```
         pub fn is_empty(&self) -> bool {
    @@ -1446,7 +1446,7 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
    +    /// let veb = VebMap::from_iter(vec![(42, "foo")]);
         /// assert_eq!(veb.contains_key(42), true);
         /// assert_eq!(veb.contains_key(43), false);
         /// ```
    @@ -1459,12 +1459,12 @@
         /// # Example
         /// ```
         /// # use veb::VebMap;
    -    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +    /// let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
         /// assert_eq!(veb.collect(), vec![
    -    ///     (12, &"foo"),
    -    ///     (34, &"bar"),
    -    ///     (56, &"baz"),
    -    ///     (78, &"qux")
    +    ///     (12, &"foo"),
    +    ///     (34, &"bar"),
    +    ///     (56, &"baz"),
    +    ///     (78, &"qux")
         /// ]);
         /// ```
         pub fn collect(&self) -> Vec<(usize, &V)> {
    @@ -1477,7 +1477,7 @@
     }
     
     impl<V: std::fmt::Debug> std::fmt::Debug for VebMap<V> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_map().entries(self.collect()).finish()
         }
     }
    @@ -1865,7 +1865,7 @@
     }
     
     impl std::fmt::Debug for VebSet {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_set().entries(self.collect()).finish()
         }
     }
    @@ -1907,19 +1907,19 @@
                 for _ in 0..200 {
                     let i = rng.gen_range(0..n);
                     match rng.gen_range(0..5) {
    -                    0 => assert_eq!(veb.insert(i), set.insert(i), "insert({i})"),
    -                    1 => assert_eq!(veb.remove(i), set.remove(&i), "remove({i})"),
    -                    2 => assert_eq!(veb.succ(i), set.range(i + 1..).next().copied(), "succ({i})"),
    +                    0 => assert_eq!(veb.insert(i), set.insert(i), "insert({i})"),
    +                    1 => assert_eq!(veb.remove(i), set.remove(&i), "remove({i})"),
    +                    2 => assert_eq!(veb.succ(i), set.range(i + 1..).next().copied(), "succ({i})"),
                         3 => assert_eq!(
                             veb.pred(i),
                             set.range(..i).next_back().copied(),
    -                        "pred({i})"
    +                        "pred({i})"
                         ),
    -                    4 => assert_eq!(veb.contains(i), set.contains(&i), "contains({i})"),
    +                    4 => assert_eq!(veb.contains(i), set.contains(&i), "contains({i})"),
                         _ => unreachable!(),
                     }
    -                assert_eq!(veb.min(), set.iter().next().copied(), "min");
    -                assert_eq!(veb.max(), set.iter().next_back().copied(), "max");
    +                assert_eq!(veb.min(), set.iter().next().copied(), "min");
    +                assert_eq!(veb.max(), set.iter().next_back().copied(), "max");
                 }
             }
         }
    @@ -1936,27 +1936,27 @@
                     match rng.gen_range(0..5) {
                         0 => {
                             let v = rng.gen_range(0..1_000);
    -                        assert_eq!(veb.insert(i, v), map.insert(i, v), "insert({i})");
    +                        assert_eq!(veb.insert(i, v), map.insert(i, v), "insert({i})");
                         }
    -                    1 => assert_eq!(veb.remove(i), map.remove(&i), "remove({i})"),
    +                    1 => assert_eq!(veb.remove(i), map.remove(&i), "remove({i})"),
                         2 => assert_eq!(
                             veb.succ(i),
                             map.range(i + 1..).next().map(|(&i, v)| (i, v)),
    -                        "succ({i})"
    +                        "succ({i})"
                         ),
                         3 => assert_eq!(
                             veb.pred(i),
                             map.range(..i).next_back().map(|(&i, v)| (i, v)),
    -                        "pred({i})"
    +                        "pred({i})"
                         ),
    -                    4 => assert_eq!(veb.get(i), map.get(&i), "get({i})"),
    +                    4 => assert_eq!(veb.get(i), map.get(&i), "get({i})"),
                         _ => unreachable!(),
                     }
    -                assert_eq!(veb.min(), map.iter().next().map(|(&i, v)| (i, v)), "min");
    +                assert_eq!(veb.min(), map.iter().next().map(|(&i, v)| (i, v)), "min");
                     assert_eq!(
                         veb.max(),
                         map.iter().next_back().map(|(&i, v)| (i, v)),
    -                    "max"
    +                    "max"
                     );
                 }
             }
    diff --git a/src/vec_lines/lib.rs.html b/src/vec_lines/lib.rs.html
    index 1012deef..4c26f712 100644
    --- a/src/vec_lines/lib.rs.html
    +++ b/src/vec_lines/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -692,7 +692,7 @@
                 self.lines
                     .last()
                     .map_or(true, |prv| C::ok(*prv, Line(line))),
    -            "傾きの単調性に違反しています。"
    +            "傾きの単調性に違反しています。"
             );
             if let Some(&Line(prv)) = self.lines.last() {
                 if prv[0] == line[0] {
    @@ -775,7 +775,7 @@
         ///     .collect::<Vec<_>>();
         /// assert_eq!(lines, vec![[1, 0], [0, 10], [-1, 30]]);
         /// ```
    -    pub fn iter_copied(&self) -> impl '_ + Iterator<Item = Line<T>> {
    +    pub fn iter_copied(&self) -> impl '_ + Iterator<Item = Line<T>> {
             self.lines.iter().copied()
         }
     }
    @@ -865,12 +865,12 @@
         + Mul<Output = Self>
     {
     }
    -macro_rules! impl_signed {
    +macro_rules! impl_signed {
         ($($T:ty),* $(,)?) => {$(
             impl Signed for $T {}
         )*}
     }
    -impl_signed! { i8, i16, i32, i64, i128, isize }
    +impl_signed! { i8, i16, i32, i64, i128, isize }
     
     impl<T: Signed, C: Constraint> Default for VecLines<T, C> {
         fn default() -> Self {
    diff --git a/src/wavelet_matrix/lib.rs.html b/src/wavelet_matrix/lib.rs.html
    index 57d2c14e..082e646d 100644
    --- a/src/wavelet_matrix/lib.rs.html
    +++ b/src/wavelet_matrix/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -885,8 +885,8 @@
     //!   - 制約: N, Q ≤ 100,000
     //!   - 使用するメソッド: [`range_freq`](WaveletMatrix::range_freq)
     //!   - コメント: 様々な解法があるよう。
    -//!     [こちらのブログ](https://blog.hamayanhamayan.com/entry/2017/06/13/103254)
    -//!     に各種手法お名前だけ言及ありです。
    +//!   [こちらのブログ](https://blog.hamayanhamayan.com/entry/2017/06/13/103254)
    +//!   に各種手法お名前だけ言及ありです。
     //! - yukicoder No.738 - 平らな農地
     //!   - 問題: <https://yukicoder.me/problems/no/738>
     //!   - 提出 (895 ms): <https://yukicoder.me/submissions/727730>
    @@ -894,10 +894,10 @@
     //!   - 難易度: そこそこ。
     //!   - 制約: N, Q ≤ 100,000
     //!   - 使用するメソッド: [`range_freq`](WaveletMatrix::range_freq),
    -//!     [`spans`](WaveletMatrix::spans)
    +//!   [`spans`](WaveletMatrix::spans)
     //!   - コメント: ヒープ4本でも解けてそちらのほうが一般的?
    -//!     ウェーブレット行列を使うなら累積和が必要で、ちょっと面倒です。
    -//!     ([自由度の高いメソッド `spans` が活躍します。](WaveletMatrix::spans))
    +//!   ウェーブレット行列を使うなら累積和が必要で、ちょっと面倒です。
    +//!   ([自由度の高いメソッド `spans` が活躍します。](WaveletMatrix::spans))
     //! - yukicoder No.919 - You Are A Project Manager
     //!   - 問題: <https://yukicoder.me/problems/no/919>
     //!   - 提出 (256 ms): <https://yukicoder.me/submissions/727758>
    @@ -905,7 +905,7 @@
     //!   - 難易度: そこそこ。
     //!   - 制約: N, Q ≤ 100,000
     //!   - 使用するメソッド: [`range_freq`](WaveletMatrix::range_freq),
    -//!     [`spans`](WaveletMatrix::spans)
    +//!   [`spans`](WaveletMatrix::spans)
     //!   - コメント: Mo でもできて、それもそれできれいです。
     //! - Library Checker - Range Kth Smallest
     //!   - 問題: <https://judge.yosupo.jp/problem/range_kth_smallest>
    @@ -921,7 +921,7 @@
     //!   - 難易度: 簡単。
     //!   - 制約: N ≤ 100,000
     //!   - 使う構造体: [`quantile`](WaveletMatrix::quantile),
    -//!     [`range_freq`](WaveletMatrix::range_freq)
    +//!   [`range_freq`](WaveletMatrix::range_freq)
     //!   - 他の解法:
     //!     - ヒープ4本 (90 ms): <https://onlinejudge.u-aizu.ac.jp/beta/review.html#OUPC2020/6171242>
     //!   - コメント: ヒープ4本のほうが楽です。
    @@ -966,7 +966,7 @@
         table: Vec<StaticBitVec>,
     }
     impl Debug for WaveletMatrix {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             f.debug_list()
                 .entries((0..self.len()).map(|i| self.access(i)))
                 .finish()
    @@ -1192,7 +1192,7 @@
             &self,
             index: impl RangeBounds<usize>,
             value: impl RangeBounds<usize>,
    -    ) -> Spans<'_> {
    +    ) -> Spans<'_> {
             let index = open(index, self.len());
             let target = open(value, self.lim());
             if target.len() == 0 {
    @@ -1220,7 +1220,7 @@
             1 << self.table.len()
         }
     
    -    fn root(&self, index: Range<usize>) -> SpanInNode<'_> {
    +    fn root(&self, index: Range<usize>) -> SpanInNode<'_> {
             SpanInNode {
                 wm: self,
                 depth: 0,
    @@ -1271,13 +1271,13 @@
             let mut rank_c = 0;
             let mut pattern_c = 0;
             let mut len = 0;
    -        'OUTER: loop {
    +        'OUTER: loop {
                 rank.push(rank_c);
                 for i in 0..UNIT {
                     match iter.next() {
                         None => {
                             pattern.push(pattern_c);
    -                        break 'OUTER;
    +                        break 'OUTER;
                         }
                         Some(false) => (),
                         Some(true) => {
    @@ -1344,12 +1344,12 @@
     
     /// イテレータです [詳しくは `WaveletMatrix::spans` をご覧ください。](WaveletMatrix::spans)
     #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    -pub struct Spans<'a> {
    -    stack: Vec<SpanInNode<'a>>,
    +pub struct Spans<'a> {
    +    stack: Vec<SpanInNode<'a>>,
         target: Range<usize>,
     }
    -impl<'a> Iterator for Spans<'a> {
    -    type Item = SpanInNode<'a>;
    +impl<'a> Iterator for Spans<'a> {
    +    type Item = SpanInNode<'a>;
     
         fn next(&mut self) -> Option<Self::Item> {
             let ans = self.stack.pop()?;
    @@ -1370,8 +1370,8 @@
     
     /// [`Spans`] のアイテム型です。[詳しくは `WaveletMatrix::spans` をご覧ください。](WaveletMatrix::spans)
     #[derive(Clone, Debug, Hash, PartialEq, Eq)]
    -pub struct SpanInNode<'a> {
    -    wm: &'a WaveletMatrix,
    +pub struct SpanInNode<'a> {
    +    wm: &'a WaveletMatrix,
         /// ウェーブレット行列内の `i` 座標
         pub depth: usize,
         /// ウェーブレット行列内の `j` 座標の範囲
    @@ -1379,7 +1379,7 @@
         /// 現在のノードの担当する値の範囲
         pub value: Range<usize>,
     }
    -impl<'a> SpanInNode<'a> {
    +impl<'a> SpanInNode<'a> {
         fn left_down(&self) -> Self {
             Self {
                 wm: self.wm,
    @@ -1561,13 +1561,13 @@
         fn test_wavelet_matrix_construction() {
             #[rustfmt::skip]
             let expected = [
    -            "111100110010",
    -            "100100000010",
    -            "110101111010",
    +            "111100110010",
    +            "100100000010",
    +            "110101111010",
             ];
             let expected = expected
                 .iter()
    -            .map(|row| row.chars().map(|c| c == '1').collect_vec())
    +            .map(|row| row.chars().map(|c| c == '1').collect_vec())
                 .collect_vec();
             let (wm, table) = WaveletMatrix::from_iter_collect_vec2(SAMPLE.iter().copied());
             assert_eq!(table, SAMPLE_ROWS);
    diff --git a/src/z_algo/lib.rs.html b/src/z_algo/lib.rs.html
    index 2699d7ab..db5a226b 100644
    --- a/src/z_algo/lib.rs.html
    +++ b/src/z_algo/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -176,9 +176,9 @@
         }
     
         #[allow(clippy::unused_unit)]
    -    #[test_case("abcabca")]
    -    #[test_case("abracadabra")]
    -    #[test_case("mississippi")]
    +    #[test_case("abcabca")]
    +    #[test_case("abracadabra")]
    +    #[test_case("mississippi")]
         fn test_hand(s: &str) {
             let expected = z_brute(s.as_bytes());
             let result = z_algo(s.as_bytes());
    @@ -194,7 +194,7 @@
                     .map(|c| c as char)
                     .take(n)
                     .collect::<String>();
    -            println!("s = {}", s);
    +            println!("s = {}", s);
     
                 let expected = z_brute(s.as_bytes());
                 let result = z_algo(s.as_bytes());
    diff --git a/src/zeta/lib.rs.html b/src/zeta/lib.rs.html
    index b8045cd1..a741e737 100644
    --- a/src/zeta/lib.rs.html
    +++ b/src/zeta/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - sourcelib.rs - source
    -
    1
    +
    1
     2
     3
     4
    @@ -563,17 +563,17 @@
     
         #[allow(clippy::unused_unit)]
         #[test_case(Add::add, 0, add, Dir::Sub)]
    -    #[test_case(cmp::max, u32::MIN, max, Dir::Sub)]
    -    #[test_case(cmp::min, u32::MAX, min, Dir::Sub)]
    +    #[test_case(cmp::max, std::u32::MIN, max, Dir::Sub)]
    +    #[test_case(cmp::min, std::u32::MAX, min, Dir::Sub)]
         #[test_case(BitXor::bitxor, 0, bitxor, Dir::Sub)]
         #[test_case(BitOr::bitor, 0, bitor, Dir::Sub)]
    -    #[test_case(BitAnd::bitand, u32::MAX, bitand, Dir::Sub)]
    +    #[test_case(BitAnd::bitand, std::u32::MAX, bitand, Dir::Sub)]
         #[test_case(Add::add, 0, radd, Dir::Super)]
    -    #[test_case(cmp::max, u32::MIN, rmax, Dir::Super)]
    -    #[test_case(cmp::min, u32::MAX, rmin, Dir::Super)]
    +    #[test_case(cmp::max, std::u32::MIN, rmax, Dir::Super)]
    +    #[test_case(cmp::min, std::u32::MAX, rmin, Dir::Super)]
         #[test_case(BitXor::bitxor, 0, rbitxor, Dir::Super)]
         #[test_case(BitOr::bitor, 0, rbitor, Dir::Super)]
    -    #[test_case(BitAnd::bitand, u32::MAX, rbitand, Dir::Super)]
    +    #[test_case(BitAnd::bitand, std::u32::MAX, rbitand, Dir::Super)]
         fn test_zeta_ops(f: fn(u32, u32) -> u32, e: u32, g: fn(&mut [u32]), dir: Dir) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..20 {
    @@ -604,11 +604,11 @@
     
         #[allow(clippy::unused_unit)]
         #[test_case(Add::add, 0)]
    -    #[test_case(cmp::max, u32::MIN)]
    -    #[test_case(cmp::min, u32::MAX)]
    +    #[test_case(cmp::max, std::u32::MIN)]
    +    #[test_case(cmp::min, std::u32::MAX)]
         #[test_case(BitXor::bitxor, 0)]
         #[test_case(BitOr::bitor, 0)]
    -    #[test_case(BitAnd::bitand, u32::MAX)]
    +    #[test_case(BitAnd::bitand, std::u32::MAX)]
         fn test_aggr(f: fn(u32, u32) -> u32, e: u32) {
             let mut rng = StdRng::seed_from_u64(42);
             for _ in 0..20 {
    diff --git a/static.files/ayu-614652228113ac93.css b/static.files/ayu-614652228113ac93.css
    new file mode 100644
    index 00000000..8fd09c9e
    --- /dev/null
    +++ b/static.files/ayu-614652228113ac93.css
    @@ -0,0 +1 @@
    + :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--source-sidebar-background-selected:#14191f;--source-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);}h1,h2,h3,h4,h1 a,.sidebar h2 a,.sidebar h3 a,#source-sidebar>.title{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.docblock a>code{color:#39AFD7 !important;}.code-header,.docblock pre>code,pre,pre>code,.item-info code,.rustdoc.source .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover,#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus,#source-sidebar div.files>a.selected{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}.search-results a:hover,.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}#search-tabs>button:not(.selected){border:none;background-color:transparent !important;}#search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#settings-menu>a img{filter:invert(100);}
    \ No newline at end of file
    diff --git a/static.files/clipboard-7571035ce49a181d.svg b/static.files/clipboard-7571035ce49a181d.svg
    new file mode 100644
    index 00000000..8adbd996
    --- /dev/null
    +++ b/static.files/clipboard-7571035ce49a181d.svg
    @@ -0,0 +1 @@
    +
    diff --git a/static.files/dark-1097f8e92a01e3cf.css b/static.files/dark-1097f8e92a01e3cf.css
    new file mode 100644
    index 00000000..1e5e7d19
    --- /dev/null
    +++ b/static.files/dark-1097f8e92a01e3cf.css
    @@ -0,0 +1 @@
    +:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--source-sidebar-background-selected:#333;--source-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:rgb(91,59,1);--scrape-example-code-line-highlight-focus:rgb(124,75,15);--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);}
    \ No newline at end of file
    diff --git a/static.files/favicon-16x16-8b506e7a72182f1c.png b/static.files/favicon-16x16-8b506e7a72182f1c.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..ea4b45cae1618e6e20e6d61897da953f34b66b30
    GIT binary patch
    literal 715
    zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa
    z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP
    zfk$L9P|ym58ULAS1_A}yOFVsD*`G1;@(QxEEoEaloaX$3oUhmn3B1b>^
    zXS8u>Ub4$r*u2F1FEiJ>rQJ&x%nC}Q!>*kacg*^JAVaGgCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UT
    zt3o15f)dLW3X1a6GILTDN-7Id6*3D-k{K8(<~;ty!%-Nfp>fLp^cl~mK@7~w+${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElems=document.querySelectorAll(`details > summary > section[id^="${implId}"]`,);onEachLazy(implElems,implElem=>{const numbered=/^(.+?)-([0-9]+)$/.exec(implElem.id);if(implElem.id!==implId&&(!numbered||numbered[1]!==implId)){return false}return onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/^(.+?)-([0-9]+)$/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0);return true}},)})}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":case"/":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;link.textContent=name;const li=document.createElement("li");if(link.href===current_page){li.classList.add("current")}li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";document.body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}document.body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ -the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S / /","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for functions that accept or return \ - slices and \ - arrays by writing \ - square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){function copyContentToClipboard(content){const el=document.createElement("textarea");el.value=content;el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el)}function copyButtonAnimation(button){button.classList.add("clicked");if(button.reset_button_timeout!==undefined){window.clearTimeout(button.reset_button_timeout)}button.reset_button_timeout=window.setTimeout(()=>{button.reset_button_timeout=undefined;button.classList.remove("clicked")},1000)}const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});copyContentToClipboard(path.join("::"));copyButtonAnimation(but)};function copyCode(codeElem){if(!codeElem){return}copyContentToClipboard(codeElem.textContent)}function getExampleWrap(event){let elem=event.target;while(!hasClass(elem,"example-wrap")){if(elem===document.body||elem.tagName==="A"||elem.tagName==="BUTTON"||hasClass(elem,"docblock")){return null}elem=elem.parentElement}return elem}function addCopyButton(event){const elem=getExampleWrap(event);if(elem===null){return}elem.removeEventListener("mouseover",addCopyButton);const parent=document.createElement("div");parent.className="button-holder";const runButton=elem.querySelector(".test-arrow");if(runButton!==null){parent.appendChild(runButton)}elem.appendChild(parent);const copyButton=document.createElement("button");copyButton.className="copy-button";copyButton.title="Copy code to clipboard";copyButton.addEventListener("click",()=>{copyCode(elem.querySelector("pre > code"));copyButtonAnimation(copyButton)});parent.appendChild(copyButton)}function showHideCodeExampleButtons(event){const elem=getExampleWrap(event);if(elem===null){return}let buttons=elem.querySelector(".button-holder");if(buttons===null){addCopyButton(event);buttons=elem.querySelector(".button-holder");if(buttons===null){return}}buttons.classList.toggle("keep-visible")}onEachLazy(document.querySelectorAll(".docblock .example-wrap"),elem=>{elem.addEventListener("mouseover",addCopyButton);elem.addEventListener("click",showHideCodeExampleButtons)})}()) \ No newline at end of file diff --git a/static.files/main-f61008743c98d196.js b/static.files/main-f61008743c98d196.js new file mode 100644 index 00000000..18fb9381 --- /dev/null +++ b/static.files/main-f61008743c98d196.js @@ -0,0 +1,7 @@ +"use strict";function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"));preLoadCss(getVar("static-root-path")+getVar("theme-light-css"));preLoadCss(getVar("static-root-path")+getVar("theme-dark-css"));preLoadCss(getVar("static-root-path")+getVar("theme-ayu-css"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:()=>{switchDisplayedElement(null);document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();switchDisplayedElement(null);if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=script?script.getAttribute("data-ignore-extern-crates"):"";for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.indexOf(lib)!==-1){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else if(e.getAttribute("title")!==undefined){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("title")));wrapper.appendChild(titleContent)}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,e)){hideTooltip(true)}}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=function(){this.TOOLTIP_FORCE_VISIBLE=this.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!this.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(this);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}showTooltip(this)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){hideTooltip(true)}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ + the rustdoc book.";const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/static.files/noscript-13285aec31fa243e.css b/static.files/noscript-13285aec31fa243e.css new file mode 100644 index 00000000..c32e0cb1 --- /dev/null +++ b/static.files/noscript-13285aec31fa243e.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.source .sidebar{display:none;}.notable-traits{display:none;} \ No newline at end of file diff --git a/static.files/noscript-3b12f09e550e0385.css b/static.files/noscript-3b12f09e550e0385.css deleted file mode 100644 index befe4163..00000000 --- a/static.files/noscript-3b12f09e550e0385.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--settings-menu-filter:none;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/static.files/rustdoc-492a78a4a87dcc01.css b/static.files/rustdoc-492a78a4a87dcc01.css deleted file mode 100644 index e9199f95..00000000 --- a/static.files/rustdoc-492a78a4a87dcc01.css +++ /dev/null @@ -1,47 +0,0 @@ - :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;--sidebar-elems-left-padding:24px;--clipboard-image:url('data:image/svg+xml,\ -\ -\ -');--copy-path-height:34px;--copy-path-width:33px;--checkmark-image:url('data:image/svg+xml,\ -\ -');--button-left-margin:4px;--button-border-radius:2px;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-right:0.25rem;border-left:solid var(--sidebar-elems-left-padding) transparent;margin-left:calc(-0.25rem - var(--sidebar-elems-left-padding));background-clip:border-box;}.sidebar h2{text-wrap:balance;overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{text-wrap:balance;overflow-wrap:anywhere;font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:var(--sidebar-elems-left-padding);}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 calc(-16px - var(--sidebar-elems-left-padding));padding:0 var(--sidebar-elems-left-padding);text-align:center;}.sidebar-crate .logo-container img{margin-top:-16px;border-top:solid 16px transparent;box-sizing:content-box;position:relative;background-clip:border-box;z-index:1;}.sidebar-crate h2 a{display:block;border-left:solid var(--sidebar-elems-left-padding) transparent;background-clip:border-box;margin:0 calc(-24px + 0.25rem) 0 calc(-0.2rem - var(--sidebar-elems-left-padding));padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap>pre{border-radius:6px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.docblock .stab,.docblock-short .stab{display:inline-block;}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:10px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;width:100%;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ - ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ - \ - ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}.example-wrap>a.test-arrow,.example-wrap .button-holder{visibility:hidden;position:absolute;top:4px;right:4px;z-index:1;}a.test-arrow{height:var(--copy-path-height);padding:6px 4px 0 11px;}a.test-arrow::before{content:url('data:image/svg+xml,');}.example-wrap .button-holder{display:flex;}@media not (pointer:coarse){.example-wrap:hover>a.test-arrow,.example-wrap:hover>.button-holder{visibility:visible;}}.example-wrap .button-holder.keep-visible{visibility:visible;}.example-wrap .button-holder .copy-button,.example-wrap .test-arrow{background:var(--main-background-color);cursor:pointer;border-radius:var(--button-border-radius);height:var(--copy-path-height);width:var(--copy-path-width);}.example-wrap .button-holder .copy-button{margin-left:var(--button-left-margin);padding:2px 0 0 4px;border:0;}.example-wrap .button-holder .copy-button::before,.example-wrap .test-arrow::before{filter:var(--copy-path-img-filter);}.example-wrap .button-holder .copy-button::before{content:var(--clipboard-image);}.example-wrap .button-holder .copy-button:hover::before,.example-wrap .test-arrow:hover::before{filter:var(--copy-path-img-hover-filter);}.example-wrap .button-holder .copy-button.clicked::before{content:var(--checkmark-image);padding-right:5px;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}@keyframes targetfadein{from{background-color:var(--main-background-color);}10%{background-color:var(--target-border-color);}to{background-color:var(--target-background-color);}}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);animation:0.65s cubic-bezier(0,0,0.1,1.0) 0.1s targetfadein;}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:var(--button-left-margin);display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:var(--button-border-radius);color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#settings-menu>a{line-height:0;font-size:0;}#settings-menu>a:before{content:url('data:image/svg+xml,\ - ');width:22px;height:22px;filter:var(--settings-menu-filter);}#sidebar-button>a:before{content:url('data:image/svg+xml,\ - \ - \ - ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:var(--copy-path-height);width:var(--copy-path-width);margin-left:10px;padding:0;padding-left:2px;border:0;font-size:0;}#copy-path::before{filter:var(--copy-path-img-filter);content:var(--clipboard-image);}#copy-path:hover::before{filter:var(--copy-path-img-hover-filter);}#copy-path.clicked::before{content:var(--checkmark-image);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ - ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ - \ - \ - ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ - \ - \ - ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}.item-table>li>.item-name{width:33%;}.item-table>li>div{overflow-wrap:anywhere;}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--settings-menu-filter:none;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:none;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--settings-menu-filter:invert(100%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/static.files/rustdoc-ba5701c5741a7b69.css b/static.files/rustdoc-ba5701c5741a7b69.css new file mode 100644 index 00000000..55584a76 --- /dev/null +++ b/static.files/rustdoc-ba5701c5741a7b69.css @@ -0,0 +1,8 @@ + :root{--nav-sub-mobile-padding:8px;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.srclink,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name .primitive>i,.result-name .keyword>i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.source .content pre{padding:20px;}.rustdoc.source .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;z-index:1;}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#source-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.source .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.source-sidebar-expanded .source .sidebar{overflow-y:auto;flex-basis:300px;}.source-sidebar-expanded .source .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.source) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.source .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.source nav.sub{margin:0 0 15px 0;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}@-moz-document url-prefix(){#crate-search{padding-left:0px;padding-right:19px;}}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div{flex:1;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name span.alias{color:var(--search-results-alias-color);}.search-results .result-name span.grey{color:var(--search-results-grey-color);}.popover{position:absolute;top:100%;right:0;z-index:2;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;align-items:center;white-space:pre-wrap;border-radius:3px;display:inline-flex;vertical-align:text-bottom;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.source .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#source-sidebar{width:100%;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--source-sidebar-background-hover);}#source-sidebar div.files>a.selected{background-color:var(--source-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.source main,.rustdoc.source .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.source-sidebar-expanded .source .sidebar,.rustdoc:not(.source) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#search-tabs .count{display:block;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.source-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.source-sidebar-expanded .source .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.source nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.srclink,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;margin-bottom:var(--nav-sub-mobile-padding);}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/static.files/search-a99f1315e7cc5121.js b/static.files/search-a99f1315e7cc5121.js deleted file mode 100644 index aee0fc77..00000000 --- a/static.files/search-a99f1315e7cc5121.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;const REGEX_IDENT=/\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy;const REGEX_INVALID_TYPE_FILTER=/[^a-z]/ui;const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function isSeparatorCharacter(c){return c===","||c==="="}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function skipWhitespace(parserState){while(parserState.pos0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isPathSeparator(c){return c===":"||c===" "}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==125){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){let n=0;let c=this.string.charCodeAt(this.offset);if(c===123){this.offset+=1;return this.decodeList()}while(c<96){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);if(c>=48&&c<64){this.offset+=1;return this.backrefQueue[c-48]}if(c===96){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}class DocSearch{constructor(rawSearchIndex,rootPath,searchState){this.searchIndexDeprecated=new Map();this.searchIndexEmptyDesc=new Map();this.functionTypeFingerprint=null;this.typeNameIdMap=new Map();this.ALIASES=new Map();this.rootPath=rootPath;this.searchState=searchState;this.typeNameIdOfArray=this.buildTypeMapIndex("array");this.typeNameIdOfSlice=this.buildTypeMapIndex("slice");this.typeNameIdOfArrayOrSlice=this.buildTypeMapIndex("[]");this.typeNameIdOfTuple=this.buildTypeMapIndex("tuple");this.typeNameIdOfUnit=this.buildTypeMapIndex("unit");this.typeNameIdOfTupleOrUnit=this.buildTypeMapIndex("()");this.typeNameIdOfFn=this.buildTypeMapIndex("fn");this.typeNameIdOfFnMut=this.buildTypeMapIndex("fnmut");this.typeNameIdOfFnOnce=this.buildTypeMapIndex("fnonce");this.typeNameIdOfHof=this.buildTypeMapIndex("->");this.EMPTY_BINDINGS_MAP=new Map();this.EMPTY_GENERICS_ARRAY=[];this.TYPES_POOL=new Map();this.searchIndex=this.buildIndex(rawSearchIndex)}buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(this.typeNameIdMap.has(name)){const obj=this.typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=this.typeNameIdMap.size;this.typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>this.buildItemSearchType(type,lowercasePaths)):this.EMPTY_GENERICS_ARRAY}buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=this.EMPTY_GENERICS_ARRAY;bindings=this.EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=this.buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[this.buildItemSearchType(assocType,lowercasePaths,true).id,this.buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=this.EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:this.buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=this.TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}this.TYPES_POOL.set(result.id,result);return result}buildFunctionTypeFingerprint(type,output,fps){let input=type.id;if(input===this.typeNameIdOfArray||input===this.typeNameIdOfSlice){input=this.typeNameIdOfArrayOrSlice}if(input===this.typeNameIdOfTuple||input===this.typeNameIdOfUnit){input=this.typeNameIdOfTupleOrUnit}if(input===this.typeNameIdOfFn||input===this.typeNameIdOfFnMut||input===this.typeNameIdOfFnOnce){input=this.typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){this.buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:this.EMPTY_GENERICS_ARRAY,bindings:this.EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;this.buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}buildIndex(rawSearchIndex){const buildFunctionSearchTypeCallback=lowercasePaths=>{return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[this.buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths),]}else{inputs=this.buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[this.buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths,),]}else{output=this.buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;inoop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];this.searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));this.searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!this.searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxDecoder=new VlqHexDecoder(crateCorpus.i,noop=>noop);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;let lastName="";let lastWord="";for(let i=0;i=descShard.len&&!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}const name=itemNames[i]===""?lastName:itemNames[i];const word=itemNames[i]===""?lastWord:itemNames[i].toLowerCase();const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=this.functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){this.buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){this.buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){this.buildFunctionTypeFingerprint(t,fp,fps)}}}}const itemParentIdx=itemParentIdxDecoder.next();const row={crate,ty:itemTypes.charCodeAt(i)-65,name,path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdx>0?paths[itemParentIdx-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}lastName=name;lastWord=word}if(aliases){const currentCrateAliases=new Map();this.ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;this.searchState.descShards.set(crate,descShardList)}this.TYPES_POOL=new Map();return searchIndex}static parseQuery(userQuery){function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}async execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}const buildHrefAndPath=item=>{let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=this.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=this.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=this.rootPath+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=this.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]};function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}const transformResults=results=>{const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=this.searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out};const sortResults=async(results,isType,preferredCrate)=>{const userQuery=parsedQuery.userQuery;const casedUserQuery=parsedQuery.original;const result_list=[];for(const result of results.values()){result.item=this.searchIndex[result.id];result.word=this.searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.item.name!==casedUserQuery);b=(bbb.item.name!==casedUserQuery);if(a!==b){return a-b}a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=this.searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=this.searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)};function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}const unifyFunctionTypeIsMatchCandidate=(fnType,queryElem,mgensIn)=>{if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===this.typeNameIdOfArrayOrSlice&&(fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfArray)){}else if(queryElem.id===this.typeNameIdOfTupleOrUnit&&(fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit)){}else if(queryElem.id===this.typeNameIdOfHof&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}const checkType=(row,elem,whereClause,mgens,unboxingDepth)=>{if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==this.typeNameIdOfArrayOrSlice&&elem.id!==this.typeNameIdOfTupleOrUnit&&elem.id!==this.typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)};function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}const handleAliases=async(ret,query,filterCrates,currentCrate)=>{const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(this.ALIASES.has(filterCrates)&&this.ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=this.ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(this.searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of this.ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(this.searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return this.searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":this.searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)};function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}const compareTypeFingerprints=(fullId,queryFingerprint)=>{const fh0=this.functionTypeFingerprint[fullId*4];const fh1=this.functionTypeFingerprint[(fullId*4)+1];const fh2=this.functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return this.functionTypeFingerprint[(fullId*4)+3]};const innerRunQuery=()=>{const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();const convertNameToId=(elem,isAssocType)=>{const loweredName=elem.pathLast.toLowerCase();if(this.typeNameIdMap.has(loweredName)&&(isAssocType||!this.typeNameIdMap.get(loweredName).assocOnly)){elem.id=this.typeNameIdMap.get(loweredName).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of this.typeNameIdMap){const dist=Math.min(editDistance(name,loweredName,maxEditDistance),editDistance(name,elem.normalizedPathLast,maxEditDistance),);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of this.typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!this.typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[this.typeNameIdMap.get(name).id,constraints]}),)};const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];const length=this.searchIndex.length;for(let i=0,nSearchIndex=length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=this.searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return this.searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":this.searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}}let rawSearchIndex;let docSearch;const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];let currentResults;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&window.searchIndex.has(elem.value)){return elem.value}return null}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ -${item.alias} - see \ -
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ -${item.displayPath}${name}\ -
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=DocSearch.parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=DocSearch.parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="\""+query.original+"\" Search - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await docSearch.execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}function initSearch(searchIndx){rawSearchIndex=searchIndx;if(typeof window!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}else if(typeof exports!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);exports.docSearch=docSearch;exports.parseQuery=DocSearch.parseQuery}}if(typeof exports!=="undefined"){exports.initSearch=initSearch}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/static.files/search-e077946657036a58.js b/static.files/search-e077946657036a58.js new file mode 100644 index 00000000..3b21179b --- /dev/null +++ b/static.files/search-e077946657036a58.js @@ -0,0 +1 @@ +"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let currentResults;const ALIASES=new Map();function isWhitespace(c){return" \t\n\r".indexOf(c)!==-1}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return",>-".indexOf(c)!==-1}function isStopCharacter(c){return isWhitespace(c)||isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||isWhitespaceCharacter(c)}function isWhitespaceCharacter(c){return c===" "||c==="\t"}function createQueryElement(query,parserState,name,generics,isInGenerics){if(name==="*"||(name.length===0&&generics.length===0)){return}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["You cannot have more than one element if you use quotes"]}const pathSegments=name.split("::");if(pathSegments.length>1){for(let i=0,len=pathSegments.length;i=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;while(parserState.pos"){extra="<"}else if(endChar===""){extra="->"}else{extra=endChar}throw["Unexpected ",c," after ",extra]}if(!foundStopChar){if(endChar!==""){throw["Expected ",",",", "," "," or ",endChar,", found ",c,]}throw["Expected ",","," or "," ",", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar===">");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ","<"]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ","<"]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery;for(let pos=start;pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"]}if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["You cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}if(!foundStopChar){if(parserState.typeFilter!==null){throw["Expected ",",",", "," "," or ","->",", found ",c,]}throw["Expected ",",",", "," ",", ",":"," or ","->",", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter)"]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,literalSearch:false,error:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}}userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of result_list){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(result_list)}function checkGenerics(row,elem,defaultDistance,maxEditDistance){if(row.generics.length===0){return elem.generics.length===0?defaultDistance:maxEditDistance+1}else if(row.generics.length>0&&row.generics[0].name===null){return checkGenerics(row.generics[0],elem,defaultDistance,maxEditDistance)}if(elem.generics.length>0&&row.generics.length>=elem.generics.length){const elems=new Map();for(const entry of row.generics){if(entry.name===""){if(checkGenerics(entry,elem,maxEditDistance+1,maxEditDistance)!==0){return maxEditDistance+1}continue}let currentEntryElems;if(elems.has(entry.name)){currentEntryElems=elems.get(entry.name)}else{currentEntryElems=[];elems.set(entry.name,currentEntryElems)}currentEntryElems.push(entry)}const handleGeneric=generic=>{if(!elems.has(generic.name)){return false}const matchElems=elems.get(generic.name);const matchIdx=matchElems.findIndex(tmp_elem=>{if(checkGenerics(tmp_elem,generic,0,maxEditDistance)!==0){return false}return typePassesFilter(generic.typeFilter,tmp_elem.ty)});if(matchIdx===-1){return false}matchElems.splice(matchIdx,1);if(matchElems.length===0){elems.delete(generic.name)}return true};for(const generic of elem.generics){if(generic.typeFilter!==-1&&!handleGeneric(generic)){return maxEditDistance+1}}for(const generic of elem.generics){if(generic.typeFilter===-1&&!handleGeneric(generic)){return maxEditDistance+1}}return 0}return maxEditDistance+1}function checkIfInGenerics(row,elem,maxEditDistance){let dist=maxEditDistance+1;for(const entry of row.generics){dist=Math.min(checkType(entry,elem,true,maxEditDistance),dist);if(dist===0){break}}return dist}function checkType(row,elem,literalSearch,maxEditDistance){if(row.name===null){if(row.generics.length>0){return checkIfInGenerics(row,elem,maxEditDistance)}return maxEditDistance+1}let dist;if(typePassesFilter(elem.typeFilter,row.ty)){dist=editDistance(row.name,elem.name,maxEditDistance)}else{dist=maxEditDistance+1}if(literalSearch){if(dist!==0){if(elem.generics.length===0){const checkGeneric=row.generics.length>0;if(checkGeneric&&row.generics.findIndex(tmp_elem=>tmp_elem.name===elem.name&&typePassesFilter(elem.typeFilter,tmp_elem.ty))!==-1){return 0}}return maxEditDistance+1}else if(elem.generics.length>0){return checkGenerics(row,elem,maxEditDistance+1,maxEditDistance)}return 0}else if(row.generics.length>0){if(elem.generics.length===0){if(dist===0){return 0}dist=Math.min(dist,checkIfInGenerics(row,elem,maxEditDistance));return dist}else if(dist>maxEditDistance){return checkIfInGenerics(row,elem,maxEditDistance)}else{const tmp_dist=checkGenerics(row,elem,dist,maxEditDistance);if(tmp_dist>maxEditDistance){return maxEditDistance+1}return(tmp_dist+dist)/2}}else if(elem.generics.length>0){return maxEditDistance+1}return dist}function findArg(row,elem,maxEditDistance,skipPositions){let dist=maxEditDistance+1;let position=-1;if(row&&row.type&&row.type.inputs&&row.type.inputs.length>0){let i=0;for(const input of row.type.inputs){if(skipPositions.indexOf(i)!==-1){i+=1;continue}const typeDist=checkType(input,elem,parsedQuery.literalSearch,maxEditDistance);if(typeDist===0){return{dist:0,position:i}}if(typeDist0){const ret=row.type.output;let i=0;for(const ret_ty of ret){if(skipPositions.indexOf(i)!==-1){i+=1;continue}const typeDist=checkType(ret_ty,elem,parsedQuery.literalSearch,maxEditDistance);if(typeDist===0){return{dist:0,position:i}}if(typeDistlength){return maxEditDistance+1}for(let i=0;ilength){break}let dist_total=0;let aborted=false;for(let x=0;xmaxEditDistance){aborted=true;break}dist_total+=dist}if(!aborted){ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}}return ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){const inBounds=dist<=maxEditDistance||index!==-1;if(dist===0||(!parsedQuery.literalSearch&&inBounds)){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let dist,index=-1,path_dist=0;const fullId=row.id;const searchWord=searchWords[pos];const in_args=findArg(row,elem,maxEditDistance,[]);const returned=checkReturned(row,elem,maxEditDistance,[]);addIntoResults(results_in_args,fullId,pos,-1,in_args.dist,0,maxEditDistance);addIntoResults(results_returned,fullId,pos,-1,returned.dist,0,maxEditDistance);if(!typePassesFilter(elem.typeFilter,row.ty)){return}const row_index=row.normalizedName.indexOf(elem.pathLast);const word_index=searchWord.indexOf(elem.pathLast);if(row_index===-1){index=word_index}else if(word_index===-1){index=row_index}else if(word_index1){path_dist=checkPath(elem.pathWithoutLast,row,maxEditDistance);if(path_dist>maxEditDistance){return}}if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}dist=editDistance(searchWord,elem.pathLast,maxEditDistance);if(index===-1&&dist+path_dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let totalDist=0;let nbDist=0;function checkArgs(elems,callback){const skipPositions=[];for(const elem of elems){const{dist,position}=callback(row,elem,maxEditDistance,skipPositions);if(dist<=1){nbDist+=1;totalDist+=dist;skipPositions.push(position)}else{return false}}return true}if(!checkArgs(parsedQuery.elems,findArg)){return}if(!checkArgs(parsedQuery.returned,checkReturned)){return}if(nbDist===0){return}const dist=Math.round(totalDist/nbDist);addIntoResults(results,row.id,pos,0,dist,0,maxEditDistance)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxEditDistance=Math.floor(queryLen/3);if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||editDistance(name,key,maxEditDistance)<=maxEditDistance)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];length+=1;let extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){const alias=document.createElement("span");alias.className="alias";const bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");link.appendChild(resultName);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";if(browserSupportsHistoryApi()){const newURL=buildUrl(query.original,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),deprecated:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const deprecatedItems=new Set(crateCorpus.c);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const params=searchState.getQueryStringParams();const query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/static.files/settings-298e1ea74db45b39.js b/static.files/settings-298e1ea74db45b39.js new file mode 100644 index 00000000..a426aef3 --- /dev/null +++ b/static.files/settings-298e1ea74db45b39.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
    +
    ${setting_name}
    +
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
    +
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
    \ + \ +
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=function(event){event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=function(event){if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/static.files/settings-4313503d2e1961c2.js b/static.files/settings-4313503d2e1961c2.js deleted file mode 100644 index ab425fe4..00000000 --- a/static.files/settings-4313503d2e1961c2.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ -
    -
    ${setting_name}
    -
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ - `});output+=`\ -
    -
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ -
    \ - \ -
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/static.files/settings-7bfb4c59cc6bc502.css b/static.files/settings-7bfb4c59cc6bc502.css new file mode 100644 index 00000000..79ad2158 --- /dev/null +++ b/static.files/settings-7bfb4c59cc6bc502.css @@ -0,0 +1,3 @@ +.setting-line{margin:1.2em 0.6em;position:relative;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;color:inherit;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-check input:checked{content:url('data:image/svg+xml,\ + \ + ');}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;} \ No newline at end of file diff --git a/static.files/source-script-905937fbbdc8e9ea.js b/static.files/source-script-905937fbbdc8e9ea.js new file mode 100644 index 00000000..fc508099 --- /dev/null +++ b/static.files/source-script-905937fbbdc8e9ea.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=document.getElementById("rustdoc-vars").attributes["data-root-path"].value;const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth"){addClass(document.documentElement,"source-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{removeClass(document.documentElement,"source-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="source-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(key=>{sourcesIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSourceHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/static.files/src-script-e66d777a5a92e9b2.js b/static.files/src-script-e66d777a5a92e9b2.js deleted file mode 100644 index d0aebb85..00000000 --- a/static.files/src-script-e66d777a5a92e9b2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/static.files/storage-118b08c4c78b968e.js b/static.files/storage-118b08c4c78b968e.js deleted file mode 100644 index 98189467..00000000 --- a/static.files/storage-118b08c4c78b968e.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}});class RustdocSearchElement extends HTMLElement{constructor(){super()}connectedCallback(){const rootPath=getVar("root-path");const currentCrate=getVar("current-crate");this.innerHTML=``}}window.customElements.define("rustdoc-search",RustdocSearchElement) \ No newline at end of file diff --git a/static.files/storage-62ce34ea385b278a.js b/static.files/storage-62ce34ea385b278a.js new file mode 100644 index 00000000..6f4ec2e5 --- /dev/null +++ b/static.files/storage-62ce34ea385b278a.js @@ -0,0 +1 @@ +"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func,reversed){if(arr&&arr.length>0){if(reversed){for(let i=arr.length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.getElementById("rustdoc-vars");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}let newHref;if(newThemeName==="light"||newThemeName==="dark"||newThemeName==="ayu"){newHref=getVar("static-root-path")+getVar("theme-"+newThemeName+"-css")}else{newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css"}if(!window.currentTheme){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"source-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0)}}) \ No newline at end of file diff --git a/static.files/wheel-7b819b6101059cd0.svg b/static.files/wheel-7b819b6101059cd0.svg new file mode 100644 index 00000000..83c07f63 --- /dev/null +++ b/static.files/wheel-7b819b6101059cd0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/suffix_array/all.html b/suffix_array/all.html index f03e9e46..2e9c711d 100644 --- a/suffix_array/all.html +++ b/suffix_array/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Functions

    \ No newline at end of file +

    List of all items

    Functions

    \ No newline at end of file diff --git a/suffix_array/fn.lcp_array.html b/suffix_array/fn.lcp_array.html index 2e7985f3..4b56bd8e 100644 --- a/suffix_array/fn.lcp_array.html +++ b/suffix_array/fn.lcp_array.html @@ -1,4 +1,4 @@ -lcp_array in suffix_array - Rustlcp_array in suffix_array - Rust
    -

    Function suffix_array::lcp_array

    source ·
    pub fn lcp_array<T: Ord>(s: &[T], sa: &[usize]) -> Vec<usize>
    Expand description

    LCP 配列を計算します。

    -

    §戻り値

    +

    Function suffix_array::lcp_array

    source ·
    pub fn lcp_array<T: Ord>(s: &[T], sa: &[usize]) -> Vec<usize>
    Expand description

    LCP 配列を計算します。

    +

    戻り値

    s[sa[i]..]s[sa[i + 1]..] の最小共通部分列のの長さ lcp[i] を並べた、長さ n - 1 の配列 lcp を返します。

    \ No newline at end of file diff --git a/suffix_array/fn.suffix_array.html b/suffix_array/fn.suffix_array.html index 967042cc..c7be9faa 100644 --- a/suffix_array/fn.suffix_array.html +++ b/suffix_array/fn.suffix_array.html @@ -1,4 +1,4 @@ -suffix_array in suffix_array - Rustsuffix_array in suffix_array - Rust
    -

    Function suffix_array::suffix_array

    source ·
    pub fn suffix_array<T: Ord>(s: &[T]) -> Vec<usize>
    Expand description

    Surrix Array を計算します。

    +

    Function suffix_array::suffix_array

    source ·
    pub fn suffix_array<T: Ord>(s: &[T]) -> Vec<usize>
    Expand description

    Surrix Array を計算します。

    TODO: 実装を短くできるような気がします。

    -

    §Examples

    +

    Examples

    use suffix_array::suffix_array;
    -let s = "abracadabra";
    +let s = "abracadabra";
     let sa = suffix_array(s.as_bytes());
     assert_eq!(sa, vec![10, 7, 0, 3, 5, 8, 1, 4, 6, 9, 2]);
    \ No newline at end of file diff --git a/suffix_array/index.html b/suffix_array/index.html index f732f8ba..23aac54c 100644 --- a/suffix_array/index.html +++ b/suffix_array/index.html @@ -1,4 +1,4 @@ -suffix_array - Rustsuffix_array - Rust
    -

    Crate suffix_array

    source ·
    Expand description

    Suffix Array を計算します。

    -

    Functions§

    \ No newline at end of file +

    Crate suffix_array

    source ·
    Expand description

    Suffix Array を計算します。

    +

    Functions

    \ No newline at end of file diff --git a/suffix_sum/all.html b/suffix_sum/all.html deleted file mode 100644 index 156753c2..00000000 --- a/suffix_sum/all.html +++ /dev/null @@ -1,35 +0,0 @@ -List of all items in this crate - - - - - -

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/suffix_sum/index.html b/suffix_sum/index.html deleted file mode 100644 index 36909cfa..00000000 --- a/suffix_sum/index.html +++ /dev/null @@ -1,43 +0,0 @@ -suffix_sum - Rust - - - - - -

    Crate suffix_sum

    source ·
    Expand description

    §Suffix Sum

    §Op trait

    -
      -
    • Op::identity: Returns the identity value $e$.
    • -
    • Op::mul: Multiplies two values: $x \cdot y$.
    • -
    • Op::div: Divides two values: $x \cdot y^{-1}$.
    • -
    -

    The multiplication must be associative and invertible (divisible).

    -

    Furthermore, the multiplication must be commutative for SuffixSum2d.

    -

    Structs§

    • A structure that stores the suffix sum of a sequence.
    • A structure that stores the suffix sum of a 2D sequence.

    Traits§

    • A trait for segment tree operations.
    \ No newline at end of file diff --git a/suffix_sum/sidebar-items.js b/suffix_sum/sidebar-items.js deleted file mode 100644 index ad194159..00000000 --- a/suffix_sum/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"struct":["SuffixSum","SuffixSum2d"],"trait":["Op"]}; \ No newline at end of file diff --git a/suffix_sum/struct.SuffixSum.html b/suffix_sum/struct.SuffixSum.html deleted file mode 100644 index 4abf63c7..00000000 --- a/suffix_sum/struct.SuffixSum.html +++ /dev/null @@ -1,59 +0,0 @@ -SuffixSum in suffix_sum - Rust - - - - - -

    Struct suffix_sum::SuffixSum

    source ·
    pub struct SuffixSum<O: Op> { /* private fields */ }
    Expand description

    A structure that stores the suffix sum of a sequence.

    -

    Implementations§

    source§

    impl<O: Op> SuffixSum<O>

    source

    pub fn new(values: &[O::Value]) -> Self
    where - O::Value: Clone,

    Constructs a new instance.

    -
    source

    pub fn get(&self, index: usize) -> O::Value

    Returns $x_i$.

    -
    source

    pub fn fold(&self, range: impl RangeBounds<usize>) -> O::Value

    Returns $x_l \cdot x_{l+1} \cdot \ldots \cdot x_{r-1}$.

    -
    source

    pub fn collect_vec(&self) -> Vec<O::Value>
    where - O::Value: Clone,

    Collects the values to a vector.

    -
    source

    pub fn inner(&self) -> &[O::Value]

    Returns a reference to the inner values.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for SuffixSum<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> From<Vec<<O as Op>::Value>> for SuffixSum<O>

    source§

    fn from(values: Vec<O::Value>) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for SuffixSum<O>

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for SuffixSum<O>

    §

    impl<O> RefUnwindSafe for SuffixSum<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SuffixSum<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for SuffixSum<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SuffixSum<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SuffixSum<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/suffix_sum/struct.SuffixSum2d.html b/suffix_sum/struct.SuffixSum2d.html deleted file mode 100644 index bd47b195..00000000 --- a/suffix_sum/struct.SuffixSum2d.html +++ /dev/null @@ -1,64 +0,0 @@ -SuffixSum2d in suffix_sum - Rust - - - - - -

    Struct suffix_sum::SuffixSum2d

    source ·
    pub struct SuffixSum2d<O: Op> { /* private fields */ }
    Expand description

    A structure that stores the suffix sum of a 2D sequence.

    -

    The multiplication must be commutative.

    -

    Implementations§

    source§

    impl<O: Op> SuffixSum2d<O>

    source

    pub fn new(values: &[Vec<O::Value>]) -> Self
    where - O::Value: Clone,

    Constructs a new instance.

    -
    source

    pub fn get(&self, i: usize, j: usize) -> O::Value

    Returns $x_{i,j}$.

    -
    source

    pub fn fold( - &self, - i: impl RangeBounds<usize>, - j: impl RangeBounds<usize>, -) -> O::Value

    Returns $\left ( x_{i_0, j_0} \cdot \dots \cdot x_{i_0, j_1-1} \right ) \cdot \left ( x_{i_1, j_0} \cdot \dots \cdot x_{i_1-1, j_0} \right )$.

    -
    source

    pub fn collect_vec(&self) -> Vec<Vec<O::Value>>
    where - O::Value: Clone,

    Collects the values to a vector.

    -
    source

    pub fn inner(&self) -> &Vec<Vec<O::Value>>

    Returns a reference to the inner values.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for SuffixSum2d<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> From<Vec<Vec<<O as Op>::Value>>> for SuffixSum2d<O>

    source§

    fn from(values: Vec<Vec<O::Value>>) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl<O> Freeze for SuffixSum2d<O>

    §

    impl<O> RefUnwindSafe for SuffixSum2d<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for SuffixSum2d<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for SuffixSum2d<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for SuffixSum2d<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for SuffixSum2d<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/suffix_sum/trait.Op.html b/suffix_sum/trait.Op.html deleted file mode 100644 index 04ab8dc4..00000000 --- a/suffix_sum/trait.Op.html +++ /dev/null @@ -1,47 +0,0 @@ -Op in suffix_sum - Rust - - - - - -

    Trait suffix_sum::Op

    source ·
    pub trait Op {
    -    type Value;
    -
    -    // Required methods
    -    fn identity() -> Self::Value;
    -    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
    -    fn div(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
    -}
    Expand description

    A trait for segment tree operations.

    -

    Required Associated Types§

    source

    type Value

    The value type.

    -

    Required Methods§

    source

    fn identity() -> Self::Value

    Returns the identity value $e$.

    -
    source

    fn mul(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Multiplies two values: $x \cdot y$.

    -
    source

    fn div(lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    Divides two values: $x \cdot y^{-1}$.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/swag/all.html b/swag/all.html index a446d786..6fe55f38 100644 --- a/swag/all.html +++ b/swag/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/swag/index.html b/swag/index.html index f47da2ab..3a26bb92 100644 --- a/swag/index.html +++ b/swag/index.html @@ -1,4 +1,4 @@ -swag - Rustswag - Rust
    -

    Crate swag

    source ·
    Expand description

    §Sliding Window Aggregation (SWAG)

    +

    Crate swag

    source ·
    Expand description

    Structs§

    Traits§

    • Operations
    \ No newline at end of file +

    Structs

    Traits

    • Operations
    \ No newline at end of file diff --git a/swag/struct.DequeueSwag.html b/swag/struct.DequeueSwag.html index bfde0ef2..83eb3195 100644 --- a/swag/struct.DequeueSwag.html +++ b/swag/struct.DequeueSwag.html @@ -1,4 +1,4 @@ -DequeueSwag in swag - RustDequeueSwag in swag - Rust
    -

    Struct swag::DequeueSwag

    source ·
    pub struct DequeueSwag<O: Op> { /* private fields */ }
    Expand description

    DequeueSwag

    -

    Implementations§

    source§

    impl<O: Op> DequeueSwag<O>

    source

    pub fn new() -> Self

    Constructs a new DequeueSwag.

    -
    source

    pub fn get(&self, i: usize) -> Option<&O::Value>

    Returns the element at the index.

    -
    source

    pub fn len(&self) -> usize

    Returns the length of the DequeueSwag.

    -
    source

    pub fn is_empty(&self) -> bool

    Returns whether the DequeueSwag is empty.

    -
    source

    pub fn push_front(&mut self, x: O::Value)
    where - O::Value: Clone,

    Append an element to the front.

    -
    §Example
    +

    Struct swag::DequeueSwag

    source ·
    pub struct DequeueSwag<O: Op> { /* private fields */ }
    Expand description

    DequeueSwag

    +

    Implementations§

    source§

    impl<O: Op> DequeueSwag<O>

    source

    pub fn new() -> Self

    Constructs a new DequeueSwag.

    +
    source

    pub fn get(&self, i: usize) -> Option<&O::Value>

    Returns the element at the index.

    +
    source

    pub fn len(&self) -> usize

    Returns the length of the DequeueSwag.

    +
    source

    pub fn is_empty(&self) -> bool

    Returns whether the DequeueSwag is empty.

    +
    source

    pub fn push_front(&mut self, x: O::Value)where + O::Value: Clone,

    Append an element to the front.

    +
    Example
    use swag::DequeueSwag;
     enum O {}
     impl swag::Op for O {
    @@ -52,9 +52,9 @@ 
    §Example
    let mut swag = DequeueSwag::<O>::copy_from_slice(&[2, 3, 4]); swag.push_front(1); assert_eq!(swag.collect_vec(), vec![1, 2, 3, 4]);
    -
    source

    pub fn push_back(&mut self, x: O::Value)
    where - O::Value: Clone,

    Append an element to the back.

    -
    §Example
    +
    source

    pub fn push_back(&mut self, x: O::Value)where + O::Value: Clone,

    Append an element to the back.

    +
    Example
    use swag::DequeueSwag;
     enum O {}
     impl swag::Op for O {
    @@ -67,18 +67,18 @@ 
    §Example
    let mut swag = DequeueSwag::<O>::copy_from_slice(&[1, 2, 3]); swag.push_back(4); assert_eq!(swag.collect_vec(), vec![1, 2, 3, 4]);
    -
    source

    pub fn pop_front(&mut self) -> Option<O::Value>
    where - O::Value: Clone,

    Pop an element from the front. +

    source

    pub fn pop_front(&mut self) -> Option<O::Value>where + O::Value: Clone,

    Pop an element from the front. Returns None if the DequeueSwag is empty.

    -
    §Example
    +
    Example
    use swag::DequeueSwag;
     let mut swag = DequeueSwag::<O>::copy_from_slice(&[1, 2, 3]);
     assert_eq!(swag.pop_front(), Some(1));
     assert_eq!(swag.collect_vec(), vec![2, 3]);
    -
    source

    pub fn pop_back(&mut self) -> Option<O::Value>
    where - O::Value: Clone,

    Pop an element from the back. +

    source

    pub fn pop_back(&mut self) -> Option<O::Value>where + O::Value: Clone,

    Pop an element from the back. Returns None if the DequeueSwag is empty.

    -
    §Example
    +
    Example
    use swag::DequeueSwag;
     enum O {}
     impl swag::Op for O {
    @@ -91,10 +91,10 @@ 
    §Example
    let mut swag = DequeueSwag::<O>::copy_from_slice(&[1, 2, 3]); assert_eq!(swag.pop_back(), Some(3)); assert_eq!(swag.collect_vec(), vec![1, 2]);
    -
    source

    pub fn fold(&self) -> Option<O::Value>
    where - O::Value: Clone,

    Fold the DequeueSwag. +

    source

    pub fn fold(&self) -> Option<O::Value>where + O::Value: Clone,

    Fold the DequeueSwag. Returns None if the DequeueSwag is empty.

    -
    §Example
    +
    Example
    use swag::DequeueSwag;
     enum O {}
     impl swag::Op for O {
    @@ -106,31 +106,31 @@ 
    §Example
    } let mut swag = DequeueSwag::<O>::copy_from_slice(&[1, 2, 3]); assert_eq!(swag.fold(), Some(6));
    -
    source

    pub fn iter(&self) -> impl Iterator<Item = &O::Value>

    Returns an iterator over the DequeueSwag.

    -
    source

    pub fn collect_vec(&self) -> Vec<O::Value>
    where - O::Value: Clone,

    Collects the DequeueSwag into a Vec.

    -
    source

    pub fn as_two_slices(&self) -> (&[O::Value], &[O::Value])

    Returns two slices, joining that is exactly the all elements.

    -
    source

    pub fn clone_from_slice(slice: &[O::Value]) -> Self
    where - O::Value: Clone,

    Constructs a new DequeueSwag from a slice.

    -
    source

    pub fn copy_from_slice(slice: &[O::Value]) -> Self
    where - O::Value: Copy,

    Constructs a new DequeueSwag from a slice.

    -

    Trait Implementations§

    source§

    impl<O: Op> Debug for DequeueSwag<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Default for DequeueSwag<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: Op> Extend<<O as Op>::Value> for DequeueSwag<O>
    where - O::Value: Clone,

    source§

    fn extend<T: IntoIterator<Item = O::Value>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<O: Op> From<Vec<<O as Op>::Value>> for DequeueSwag<O>
    where - O::Value: Clone,

    source§

    fn from(values: Vec<O::Value>) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for DequeueSwag<O>
    where - O::Value: Clone,

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for DequeueSwag<O>

    source§

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O>

    source§

    type IntoIter = Chain<Rev<Iter<'a, <O as Op>::Value>>, Iter<'a, <O as Op>::Value>>

    Which kind of iterator are we turning this into?
    source§

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<O: Op> IntoIterator for DequeueSwag<O>

    source§

    type IntoIter = Chain<Rev<IntoIter<<O as Op>::Value>>, IntoIter<<O as Op>::Value>>

    Which kind of iterator are we turning this into?
    source§

    type Item = <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<O> Freeze for DequeueSwag<O>

    §

    impl<O> RefUnwindSafe for DequeueSwag<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for DequeueSwag<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for DequeueSwag<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for DequeueSwag<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for DequeueSwag<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn iter(&self) -> impl Iterator<Item = &O::Value>

    Returns an iterator over the DequeueSwag.

    +
    source

    pub fn collect_vec(&self) -> Vec<O::Value>where + O::Value: Clone,

    Collects the DequeueSwag into a Vec.

    +
    source

    pub fn as_two_slices(&self) -> (&[O::Value], &[O::Value])

    Returns two slices, joining that is exactly the all elements.

    +
    source

    pub fn clone_from_slice(slice: &[O::Value]) -> Selfwhere + O::Value: Clone,

    Constructs a new DequeueSwag from a slice.

    +
    source

    pub fn copy_from_slice(slice: &[O::Value]) -> Selfwhere + O::Value: Copy,

    Constructs a new DequeueSwag from a slice.

    +

    Trait Implementations§

    source§

    impl<O: Op> Debug for DequeueSwag<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Op> Default for DequeueSwag<O>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<O: Op> Extend<<O as Op>::Value> for DequeueSwag<O>where + O::Value: Clone,

    source§

    fn extend<T: IntoIterator<Item = O::Value>>(&mut self, iter: T)

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: A)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    source§

    impl<O: Op> From<Vec<<O as Op>::Value, Global>> for DequeueSwag<O>where + O::Value: Clone,

    source§

    fn from(values: Vec<O::Value>) -> Self

    Converts to this type from the input type.
    source§

    impl<O: Op> FromIterator<<O as Op>::Value> for DequeueSwag<O>where + O::Value: Clone,

    source§

    fn from_iter<T: IntoIterator<Item = O::Value>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<O: Op> Index<usize> for DequeueSwag<O>

    §

    type Output = <O as Op>::Value

    The returned type after indexing.
    source§

    fn index(&self, index: usize) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O>

    §

    type IntoIter = Chain<Rev<Iter<'a, <O as Op>::Value>>, Iter<'a, <O as Op>::Value>>

    Which kind of iterator are we turning this into?
    §

    type Item = &'a <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl<O: Op> IntoIterator for DequeueSwag<O>

    §

    type IntoIter = Chain<Rev<IntoIter<<O as Op>::Value, Global>>, IntoIter<<O as Op>::Value, Global>>

    Which kind of iterator are we turning this into?
    §

    type Item = <O as Op>::Value

    The type of the elements being iterated over.
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for DequeueSwag<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for DequeueSwag<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for DequeueSwag<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for DequeueSwag<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for DequeueSwag<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/swag/trait.Op.html b/swag/trait.Op.html index 6061224d..4a4d216b 100644 --- a/swag/trait.Op.html +++ b/swag/trait.Op.html @@ -1,4 +1,4 @@ -Op in swag - RustOp in swag - Rust
    -

    Trait swag::Op

    source ·
    pub trait Op {
    +

    Trait swag::Op

    source ·
    pub trait Op {
         type Value;
     
         // Required method
         fn op(a: &Self::Value, b: &Self::Value) -> Self::Value;
     }
    Expand description

    Operations

    -

    Required Associated Types§

    source

    type Value

    Value type

    -

    Required Methods§

    source

    fn op(a: &Self::Value, b: &Self::Value) -> Self::Value

    Associative operation

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value

    Value type

    +

    Required Methods§

    source

    fn op(a: &Self::Value, b: &Self::Value) -> Self::Value

    Associative operation

    +

    Implementors§

    \ No newline at end of file diff --git a/trait.impl/binary/trait.Pow.js b/trait.impl/binary/trait.Pow.js deleted file mode 100644 index defd135e..00000000 --- a/trait.impl/binary/trait.Pow.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["binary",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[13]} \ No newline at end of file diff --git a/trait.impl/bitutils/trait.Unsigned.js b/trait.impl/bitutils/trait.Unsigned.js deleted file mode 100644 index fe1c16f9..00000000 --- a/trait.impl/bitutils/trait.Unsigned.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitutils",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/cht/trait.ConvexOrConcave.js b/trait.impl/cht/trait.ConvexOrConcave.js deleted file mode 100644 index 3298d55f..00000000 --- a/trait.impl/cht/trait.ConvexOrConcave.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/cipolla/trait.Unsigned.js b/trait.impl/cipolla/trait.Unsigned.js deleted file mode 100644 index 6ecf0874..00000000 --- a/trait.impl/cipolla/trait.Unsigned.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cipolla",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[14]} \ No newline at end of file diff --git a/trait.impl/cmpmore/trait.CmpMore.js b/trait.impl/cmpmore/trait.CmpMore.js deleted file mode 100644 index 50ba251c..00000000 --- a/trait.impl/cmpmore/trait.CmpMore.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cmpmore",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[14]} \ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js deleted file mode 100644 index 54d78b06..00000000 --- a/trait.impl/core/clone/trait.Clone.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: Clone, F: Clone, I: Clone> Clone for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T: Clone> Clone for AvlTree<T>"]]],["bfs01",[["impl Clone for Weight"]]],["bitutils",[["impl<T: Clone> Clone for Combinations<T>"],["impl<T: Clone> Clone for Subsets<T>"]]],["bitvec",[["impl Clone for BitVec"]]],["bsgs",[["impl<T: Clone, Mul: Clone> Clone for Bsgs<T, Mul>"]]],["cht",[["impl Clone for Concave"],["impl Clone for Convex"],["impl Clone for Quadratic"],["impl<C: Clone> Clone for BTreeCht<C>"],["impl<C: Clone> Clone for VecCht<C>"]]],["dinic",[["impl Clone for EdgeKey"],["impl<T: Clone> Clone for Dinic<T>"],["impl<T: Clone> Clone for Edge<T>"]]],["dual_segtree",[["impl<O: Clone + Ops> Clone for DualSegtree<O>
    where\n O::Value: Clone,
    "]]],["erato",[["impl Clone for LpdSieve"],["impl Clone for Sieve"]]],["fp",[["impl<const P: u64> Clone for Fp<P>"]]],["gco",[["impl Clone for Gco"],["impl Clone for GcoResult"]]],["heap_slope_trick",[["impl Clone for HeapSlopeTrick"],["impl Clone for Summary"]]],["heap_tricks",[["impl Clone for Nop"],["impl<T: Clone> Clone for RemovableHeap<T>"],["impl<T: Clone> Clone for Sum<T>"],["impl<T: Clone, H: Clone> Clone for DoubleHeap<T, H>"]]],["hopkarp",[["impl Clone for HopkarpResult"]]],["hungarian",[["impl<T: Clone + Value> Clone for HungarianResult<T>"]]],["interval_heap",[["impl<T: Clone + Ord> Clone for IntervalHeap<T>"]]],["lazy_segbeats",[["impl<T: Clone> Clone for Segbeats<T>"]]],["lazy_segtree",[["impl<O: Clone + Op> Clone for LazySegtree<O>
    where\n O::Value: Clone,\n O::Operator: Clone,
    "]]],["lin_ineq",[["impl<T: Clone> Clone for Interval<T>"]]],["low_link",[["impl Clone for LowLink"]]],["mincost_flow",[["impl Clone for Edge"],["impl Clone for MinCostFlow"]]],["partially_persistent_union_find",[["impl Clone for PartiallyPersistentUnionFind"]]],["radix_heap",[["impl<T: Clone> Clone for RadixHeap<T>"]]],["rational",[["impl<T: Clone + Signed> Clone for Rational<T>"]]],["rbtree",[["impl<T: Clone, O: Op<Value = T>> Clone for RbTree<T, O>
    where\n O::Summary: Clone,
    "]]],["scc",[["impl Clone for Scc"]]],["segbeats",[["impl<T: Clone> Clone for Segbeats<T>"]]],["segbeats_task3",[["impl<T: Clone> Clone for Segbeats<T>"]]],["skew_heap",[["impl<T: Clone> Clone for SkewHeap<T>"]]],["snippetter",[["impl Clone for CrateMetadata"]]],["splay_tree",[["impl<O: LazyOps> Clone for SplayTree<O>"]]],["trie",[["impl Clone for TrieSet"],["impl<V: Clone> Clone for TrieMap<V>"]]],["two_sat",[["impl Clone for TwoSat"]]],["uf_checklist",[["impl Clone for UfChecklist"]]],["union_find",[["impl<O: Clone + Op> Clone for UnionFind<O>
    where\n O::Value: Clone,
    "]]],["vec_lines",[["impl Clone for DecreasingTilt"],["impl Clone for IncreasingTilt"],["impl<T: Clone> Clone for Line<T>"],["impl<T: Clone, C: Clone> Clone for VecLines<T, C>"]]],["wavelet_matrix",[["impl Clone for StaticBitVec"],["impl Clone for WaveletMatrix"],["impl<'a> Clone for SpanInNode<'a>"],["impl<'a> Clone for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[700,420,249,840,258,544,1517,1041,856,501,355,488,580,1653,282,547,576,438,1138,423,267,542,399,432,524,822,240,423,441,426,291,404,652,261,291,831,1503,1153]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js deleted file mode 100644 index d11dad59..00000000 --- a/trait.impl/core/cmp/trait.Eq.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: Eq, F: Eq, I: Eq> Eq for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T: Eq> Eq for AvlTree<T>"]]],["bfs01",[["impl Eq for Weight"]]],["bitutils",[["impl<T: Eq> Eq for Combinations<T>"],["impl<T: Eq> Eq for Subsets<T>"]]],["bitvec",[["impl Eq for BitVec"]]],["cht",[["impl Eq for Quadratic"],["impl<C: Eq> Eq for BTreeCht<C>"],["impl<C: Eq> Eq for VecCht<C>"]]],["dinic",[["impl Eq for EdgeKey"],["impl<T: Eq> Eq for Edge<T>"]]],["fp",[["impl<const P: u64> Eq for Fp<P>"]]],["gco",[["impl Eq for GcoResult"]]],["heap_slope_trick",[["impl Eq for Summary"]]],["heap_tricks",[["impl Eq for Nop"],["impl<T: Eq> Eq for Sum<T>"]]],["hopkarp",[["impl Eq for HopkarpResult"]]],["hungarian",[["impl<T: Eq + Value> Eq for HungarianResult<T>"]]],["interval_heap",[["impl<T: Eq + Ord> Eq for IntervalHeap<T>"]]],["lazy_segbeats",[["impl<T: Eq> Eq for Segbeats<T>"]]],["low_link",[["impl Eq for LowLink"]]],["mincost_flow",[["impl Eq for Edge"]]],["radix_heap",[["impl<T: Eq> Eq for RadixHeap<T>"]]],["rational",[["impl<T: Signed> Eq for Rational<T>"]]],["scc",[["impl Eq for Scc"]]],["segbeats",[["impl<T: Eq> Eq for Segbeats<T>"]]],["segbeats_task3",[["impl<T: Eq> Eq for Segbeats<T>"]]],["splay_tree",[["impl<O: LazyOps> Eq for SplayTree<O>
    where\n O::Value: Eq,
    "]]],["two_sat",[["impl Eq for TwoSat"]]],["vec_lines",[["impl Eq for DecreasingTilt"],["impl Eq for IncreasingTilt"],["impl<T: Eq> Eq for Line<T>"],["impl<T: Eq, C: Eq> Eq for VecLines<T, C>"]]],["wavelet_matrix",[["impl Eq for StaticBitVec"],["impl Eq for WaveletMatrix"],["impl<'a> Eq for SpanInNode<'a>"],["impl<'a> Eq for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[648,394,236,788,245,983,609,342,245,278,624,269,521,550,412,254,257,406,375,227,397,415,694,248,1412,1101]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Ord.js b/trait.impl/core/cmp/trait.Ord.js deleted file mode 100644 index 293004cd..00000000 --- a/trait.impl/core/cmp/trait.Ord.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<T: Ord> Ord for AvlTree<T>"]]],["rational",[["impl<T: Signed> Ord for Rational<T>"]]],["splay_tree",[["impl<O: LazyOps> Ord for SplayTree<O>
    where\n O::Value: Ord,
    "]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[399,378,700]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js deleted file mode 100644 index 2681f6c0..00000000 --- a/trait.impl/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: PartialEq, F: PartialEq, I: PartialEq> PartialEq for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T, A> PartialEq<[A]> for AvlTree<T>
    where\n T: PartialEq<A> + PartialEq,
    "],["impl<T: PartialEq> PartialEq for AvlTree<T>"]]],["bfs01",[["impl PartialEq for Weight"]]],["bitutils",[["impl<T: PartialEq> PartialEq for Combinations<T>"],["impl<T: PartialEq> PartialEq for Subsets<T>"]]],["bitvec",[["impl PartialEq for BitVec"]]],["cht",[["impl PartialEq for Quadratic"],["impl<C: PartialEq> PartialEq for BTreeCht<C>"],["impl<C: PartialEq> PartialEq for VecCht<C>"]]],["dinic",[["impl PartialEq for EdgeKey"],["impl<T: PartialEq> PartialEq for Dinic<T>"],["impl<T: PartialEq> PartialEq for Edge<T>"]]],["dual_segtree",[["impl<O: PartialEq + Ops> PartialEq for DualSegtree<O>
    where\n O::Value: PartialEq,
    "]]],["erato",[["impl PartialEq for LpdSieve"],["impl PartialEq for Sieve"]]],["fp",[["impl<const P: u64> PartialEq for Fp<P>"]]],["gco",[["impl PartialEq for Gco"],["impl PartialEq for GcoResult"]]],["heap_slope_trick",[["impl PartialEq for Summary"]]],["heap_tricks",[["impl PartialEq for Nop"],["impl<T: PartialEq> PartialEq for Sum<T>"]]],["hopkarp",[["impl PartialEq for HopkarpResult"]]],["hungarian",[["impl<T: PartialEq + Value> PartialEq for HungarianResult<T>"]]],["interval_heap",[["impl<T: PartialEq + Ord> PartialEq for IntervalHeap<T>"]]],["lazy_segbeats",[["impl<T: PartialEq> PartialEq for Segbeats<T>"]]],["low_link",[["impl PartialEq for LowLink"]]],["mincost_flow",[["impl PartialEq for Edge"],["impl PartialEq for MinCostFlow"]]],["radix_heap",[["impl<T: PartialEq> PartialEq for RadixHeap<T>"]]],["rational",[["impl<T: Signed> PartialEq for Rational<T>"]]],["rbtree",[["impl<T: PartialEq, O: Op<Value = T>> PartialEq for RbTree<T, O>
    where\n O::Summary: PartialEq,
    "]]],["scc",[["impl PartialEq for Scc"]]],["segbeats",[["impl<T: PartialEq> PartialEq for Segbeats<T>"]]],["segbeats_task3",[["impl<T: PartialEq> PartialEq for Segbeats<T>"]]],["skew_heap",[["impl<T: PartialEq> PartialEq for SkewHeap<T>"]]],["snippetter",[["impl PartialEq for CrateMetadata"]]],["splay_tree",[["impl<O: LazyOps> PartialEq for SplayTree<O>
    where\n O::Value: PartialEq,
    "]]],["trie",[["impl PartialEq for TrieSet"],["impl<V: PartialEq> PartialEq for TrieMap<V>"]]],["two_sat",[["impl PartialEq for TwoSat"]]],["union_find",[["impl<O: PartialEq + Op> PartialEq for UnionFind<O>
    where\n O::Value: PartialEq,
    "]]],["vec_lines",[["impl PartialEq for DecreasingTilt"],["impl PartialEq for IncreasingTilt"],["impl<T: PartialEq> PartialEq for Line<T>"],["impl<T: PartialEq, C: PartialEq> PartialEq for VecLines<T, C>"]]],["wavelet_matrix",[["impl PartialEq for StaticBitVec"],["impl PartialEq for WaveletMatrix"],["impl<'a> PartialEq for SpanInNode<'a>"],["impl<'a> PartialEq for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[732,1158,257,872,266,1088,1081,880,517,363,504,299,687,290,563,592,454,275,558,448,396,846,248,439,457,442,299,736,676,269,855,1559,1185]} \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialOrd.js b/trait.impl/core/cmp/trait.PartialOrd.js deleted file mode 100644 index 0deafdbe..00000000 --- a/trait.impl/core/cmp/trait.PartialOrd.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<T: PartialOrd> PartialOrd for AvlTree<T>"]]],["rational",[["impl<T: Signed> PartialOrd for Rational<T>"]]],["splay_tree",[["impl<O: LazyOps> PartialOrd for SplayTree<O>
    where\n O::Value: PartialOrd,
    "]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[441,399,742]} \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js deleted file mode 100644 index e1fcd8b2..00000000 --- a/trait.impl/core/convert/trait.From.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[["impl From<i64> for Quadratic"]]],["dual_segtree",[["impl<O: Ops> From<Vec<<O as Ops>::Value>> for DualSegtree<O>"]]],["fp",[["impl<const P: u64> From<i128> for Fp<P>"],["impl<const P: u64> From<i16> for Fp<P>"],["impl<const P: u64> From<i32> for Fp<P>"],["impl<const P: u64> From<i64> for Fp<P>"],["impl<const P: u64> From<i8> for Fp<P>"],["impl<const P: u64> From<isize> for Fp<P>"],["impl<const P: u64> From<u128> for Fp<P>"],["impl<const P: u64> From<u16> for Fp<P>"],["impl<const P: u64> From<u32> for Fp<P>"],["impl<const P: u64> From<u64> for Fp<P>"],["impl<const P: u64> From<u8> for Fp<P>"],["impl<const P: u64> From<usize> for Fp<P>"]]],["interval_heap",[["impl<T: Ord> From<Vec<T>> for IntervalHeap<T>"]]],["sparse_table",[["impl<'a, O: Op> From<&'a [<O as Op>::Value]> for SparseTable<O>
    where\n O::Value: Clone,
    "],["impl<'a, O: Op> From<&'a [Vec<<O as Op>::Value>]> for SparseTable2d<O>
    where\n O::Value: Clone,
    "],["impl<O: Op> From<Vec<<O as Op>::Value>> for SparseTable<O>"],["impl<O: Op> From<Vec<Vec<<O as Op>::Value>>> for SparseTable2d<O>"]]],["suffix_sum",[["impl<O: Op> From<Vec<<O as Op>::Value>> for SuffixSum<O>"],["impl<O: Op> From<Vec<Vec<<O as Op>::Value>>> for SuffixSum2d<O>"]]],["swag",[["impl<O: Op> From<Vec<<O as Op>::Value>> for DequeueSwag<O>
    where\n O::Value: Clone,
    "]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[361,800,5417,586,3771,1661,1014]} \ No newline at end of file diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js deleted file mode 100644 index d5ae6470..00000000 --- a/trait.impl/core/default/trait.Default.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: Default, F: Default, I: Default> Default for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T> Default for AvlTree<T>"]]],["bitutils",[["impl<T: Default> Default for Combinations<T>"],["impl<T: Default> Default for Subsets<T>"]]],["bitvec",[["impl Default for BitVec"]]],["cht",[["impl Default for Quadratic"],["impl<C: Default> Default for BTreeCht<C>"],["impl<C: Default> Default for VecCht<C>"]]],["dual_segtree",[["impl<O: Default + Ops> Default for DualSegtree<O>
    where\n O::Value: Default,
    "]]],["erato",[["impl Default for LpdSieve"],["impl Default for Sieve"]]],["gco",[["impl Default for Gco"],["impl Default for GcoResult"]]],["heap_slope_trick",[["impl Default for HeapSlopeTrick"],["impl Default for Summary"]]],["heap_tricks",[["impl Default for Nop"],["impl<T> Default for DoubleHeap<T, Nop>
    where\n T: Copy + Ord + Hash,
    "],["impl<T: Default> Default for Sum<T>"],["impl<T: Copy + Ord + Hash> Default for RemovableHeap<T>"]]],["hopkarp",[["impl Default for HopkarpResult"]]],["interval_heap",[["impl<T: Ord> Default for IntervalHeap<T>"]]],["low_link",[["impl Default for LowLink"]]],["mincost_flow",[["impl Default for Edge"],["impl Default for MinCostFlow"]]],["radix_heap",[["impl<T: Debug> Default for RadixHeap<T>"]]],["rational",[["impl<T: Default + Signed> Default for Rational<T>"]]],["rb",[["impl<K: Ord> Default for Multiset<K>"],["impl<K: Ord, O: MultimapOp> Default for MultimapSeg<K, O>"],["impl<K: Ord, V> Default for Multimap<K, V>"],["impl<O: Op> Default for Seg<O>"]]],["rbtree",[["impl<T, O: Op<Value = T>> Default for RbTree<T, O>"]]],["scc",[["impl Default for Scc"]]],["skew_heap",[["impl<T: Ord> Default for SkewHeap<T>"]]],["splay_tree",[["impl<O: LazyOps> Default for SplayTree<O>"]]],["swag",[["impl<O: Op> Default for DequeueSwag<O>"]]],["trie",[["impl Default for TrieSet"],["impl<V> Default for TrieMap<V>"]]],["two_sat",[["impl Default for TwoSat"]]],["union_find",[["impl<O: Default + Op> Default for UnionFind<O>
    where\n O::Value: Default,
    "]]],["vec_lines",[["impl<T: Default> Default for Line<T>"],["impl<T: Signed, C: Constraint> Default for VecLines<T, C>"]]],["wavelet_matrix",[["impl Default for StaticBitVec"],["impl Default for WaveletMatrix"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[740,295,880,268,1098,886,521,508,600,2214,292,450,277,562,438,544,1650,393,250,426,414,375,537,271,861,941,602]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js deleted file mode 100644 index 03cdb0eb..00000000 --- a/trait.impl/core/fmt/trait.Debug.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: Debug, F: Debug, I: Debug> Debug for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T: Debug> Debug for AvlTree<T>"]]],["bfs01",[["impl Debug for Weight"]]],["bitutils",[["impl<T: Debug> Debug for Combinations<T>"],["impl<T: Debug> Debug for Subsets<T>"]]],["bitvec",[["impl Debug for BitVec"]]],["bsgs",[["impl<T: Debug, Mul> Debug for Bsgs<T, Mul>"]]],["cht",[["impl Debug for Concave"],["impl Debug for Convex"],["impl Debug for Quadratic"],["impl<C: Debug> Debug for BTreeCht<C>"],["impl<C: Debug> Debug for VecCht<C>"]]],["dinic",[["impl Debug for EdgeKey"],["impl<T: Value> Debug for Dinic<T>"],["impl<T: Debug> Debug for Edge<T>"]]],["dual_segtree",[["impl<O: Ops> Debug for DualSegtree<O>"]]],["erato",[["impl Debug for LpdSieve"],["impl Debug for Sieve"]]],["fp",[["impl<const P: u64> Debug for Fp<P>"]]],["gco",[["impl Debug for Gco"],["impl Debug for GcoResult"]]],["heap_slope_trick",[["impl Debug for HeapSlopeTrick"],["impl Debug for Summary"]]],["heap_tricks",[["impl Debug for Nop"],["impl<T, H> Debug for DoubleHeap<T, H>
    where\n T: Copy + Ord + Hash + Debug,\n H: Handler<T> + Debug,
    "],["impl<T: Debug> Debug for Sum<T>"],["impl<T: Copy + Ord + Hash + Debug> Debug for RemovableHeap<T>"]]],["hopkarp",[["impl Debug for HopkarpResult"]]],["hungarian",[["impl<T: Debug + Value> Debug for HungarianResult<T>"]]],["interval_heap",[["impl<T: Debug + Ord> Debug for IntervalHeap<T>"]]],["lazy_segbeats",[["impl<T: Debug> Debug for Segbeats<T>"]]],["lazy_segtree",[["impl<O: Debug + Op> Debug for LazySegtree<O>
    where\n O::Value: Debug,\n O::Operator: Debug,
    "]]],["lin_ineq",[["impl<T: Debug + Signed> Debug for Interval<T>"]]],["low_link",[["impl Debug for LowLink"]]],["mincost_flow",[["impl Debug for Edge"],["impl Debug for MinCostFlow"]]],["partially_persistent_union_find",[["impl Debug for PartiallyPersistentUnionFind"]]],["radix_heap",[["impl<T: Debug> Debug for RadixHeap<T>"]]],["randtools",[["impl Debug for DistinctTwo"],["impl Debug for LogUniform"],["impl Debug for NonEmptySubRange"],["impl Debug for SimpleDigraph"],["impl Debug for SimpleDigraphEdges"],["impl Debug for SimpleGraph"],["impl Debug for SimpleGraphEdges"],["impl Debug for SubRange"],["impl Debug for Tree"]]],["rational",[["impl<T: Signed> Debug for Rational<T>"]]],["rb",[["impl<K: Ord + Debug> Debug for Multiset<K>"],["impl<K: Ord + Debug, V: Debug> Debug for Multimap<K, V>"],["impl<O: Op> Debug for Seg<O>
    where\n O::Value: Debug,
    "]]],["rbtree",[["impl<T: Debug, O: Op<Value = T>> Debug for RbTree<T, O>"]]],["scc",[["impl Debug for Scc"]]],["segbeats",[["impl<T: Debug> Debug for Segbeats<T>"]]],["segbeats_task3",[["impl<T: Elm> Debug for Segbeats<T>"]]],["segtree",[["impl<'a, O: Op> Debug for Entry<'a, O>
    where\n O::Value: Debug,
    "],["impl<K, L, O: Op> Debug for Sparse2dSegtree<K, L, O>
    where\n K: Debug,\n L: Debug,\n O::Value: Debug,
    "],["impl<K, O: Op> Debug for SegtreeWithCompression<K, O>
    where\n K: Debug,\n O::Value: Debug,
    "],["impl<O: Op> Debug for Dense2dSegtree<O>
    where\n O::Value: Debug,
    "],["impl<O: Op> Debug for Segtree<O>
    where\n O::Value: Debug,
    "]]],["skew_heap",[["impl<T: Debug + Ord> Debug for SkewHeap<T>"]]],["snippetter",[["impl Debug for CrateMetadata"]]],["sparse_table",[["impl<O: Op> Debug for SparseTable<O>
    where\n O::Value: Debug,
    "],["impl<O: Op> Debug for SparseTable2d<O>
    where\n O::Value: Debug,
    "]]],["splay_tree",[["impl<O: LazyOps> Debug for SplayTree<O>"]]],["suffix_sum",[["impl<O: Op> Debug for SuffixSum<O>
    where\n O::Value: Debug,
    "],["impl<O: Op> Debug for SuffixSum2d<O>
    where\n O::Value: Debug,
    "]]],["swag",[["impl<O: Op> Debug for DequeueSwag<O>
    where\n O::Value: Debug,
    "]]],["trie",[["impl Debug for TrieSet"],["impl<V: Debug> Debug for TrieMap<V>"]]],["two_sat",[["impl Debug for TwoSat"]]],["uf_checklist",[["impl Debug for UfChecklist"],["impl<'a> Debug for Iter<'a>"]]],["union_find",[["impl<O: Op> Debug for UnionFind<O>
    where\n O::Value: Debug,
    "]]],["veb",[["impl Debug for VebSet"],["impl<V: Debug> Debug for VebMap<V>"]]],["vec_lines",[["impl Debug for DecreasingTilt"],["impl Debug for IncreasingTilt"],["impl<T: Debug> Debug for Line<T>"],["impl<T: Debug, C: Debug> Debug for VecLines<T, C>"]]],["wavelet_matrix",[["impl Debug for StaticBitVec"],["impl Debug for WaveletMatrix"],["impl<'a> Debug for SpanInNode<'a>"],["impl<'a> Debug for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[684,412,245,824,254,401,1489,981,404,493,351,480,572,2572,278,539,568,430,1122,516,263,534,395,424,2398,384,1778,510,236,415,405,3771,544,287,1401,400,1363,651,640,257,554,687,623,1475,1137]} \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js deleted file mode 100644 index 151824f3..00000000 --- a/trait.impl/core/fmt/trait.Display.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl Display for BitVec"]]],["fp",[["impl<const P: u64> Display for Fp<P>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[259,357]} \ No newline at end of file diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js deleted file mode 100644 index 271db79c..00000000 --- a/trait.impl/core/hash/trait.Hash.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T: Hash, F: Hash, I: Hash> Hash for Skipped<'a, T, F, I>"]]],["avl_tree",[["impl<T: Hash> Hash for AvlTree<T>"]]],["bfs01",[["impl Hash for Weight"]]],["bitutils",[["impl<T: Hash> Hash for Combinations<T>"],["impl<T: Hash> Hash for Subsets<T>"]]],["bitvec",[["impl Hash for BitVec"]]],["cht",[["impl Hash for Concave"],["impl Hash for Convex"],["impl Hash for Quadratic"],["impl<C: Hash> Hash for BTreeCht<C>"],["impl<C: Hash> Hash for VecCht<C>"]]],["fp",[["impl<const P: u64> Hash for Fp<P>"]]],["gco",[["impl Hash for Gco"],["impl Hash for GcoResult"]]],["heap_slope_trick",[["impl Hash for Summary"]]],["heap_tricks",[["impl Hash for Nop"],["impl<T: Hash> Hash for Sum<T>"]]],["hopkarp",[["impl Hash for HopkarpResult"]]],["low_link",[["impl Hash for LowLink"]]],["mincost_flow",[["impl Hash for Edge"],["impl Hash for MinCostFlow"]]],["rbtree",[["impl<T: Hash, O: Op<Value = T>> Hash for RbTree<T, O>
    where\n O::Summary: Hash,
    "]]],["scc",[["impl Hash for Scc"]]],["skew_heap",[["impl<T: Hash> Hash for SkewHeap<T>"]]],["splay_tree",[["impl<O: LazyOps> Hash for SplayTree<O>
    where\n O::Value: Hash,
    "]]],["two_sat",[["impl Hash for TwoSat"]]],["union_find",[["impl<O: Hash + Op> Hash for UnionFind<O>
    where\n O::Value: Hash,
    "]]],["vec_lines",[["impl Hash for DecreasingTilt"],["impl Hash for IncreasingTilt"],["impl<T: Hash> Hash for Line<T>"],["impl<T: Hash, C: Hash> Hash for VecLines<T, C>"]]],["wavelet_matrix",[["impl Hash for StaticBitVec"],["impl Hash for WaveletMatrix"],["impl<'a> Hash for SpanInNode<'a>"],["impl<'a> Hash for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[680,410,244,820,253,1482,350,478,286,648,277,262,532,807,235,416,710,256,816,1468,1133]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/accum/trait.Product.js b/trait.impl/core/iter/traits/accum/trait.Product.js deleted file mode 100644 index 24f48be8..00000000 --- a/trait.impl/core/iter/traits/accum/trait.Product.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<'a, const P: u64> Product<&'a Fp<P>> for Fp<P>"],["impl<const P: u64> Product for Fp<P>"]]],["lin_ineq",[["impl<'a, T: 'a + Signed> Product<&'a Interval<T>> for Interval<T>"],["impl<T: Signed> Product for Interval<T>"]]],["rational",[["impl<'a, T: 'a + Signed> Product<&'a Rational<T>> for Rational<T>"],["impl<T: Signed> Product for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[870,966,966]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/accum/trait.Sum.js b/trait.impl/core/iter/traits/accum/trait.Sum.js deleted file mode 100644 index e5658861..00000000 --- a/trait.impl/core/iter/traits/accum/trait.Sum.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<'a, const P: u64> Sum<&'a Fp<P>> for Fp<P>"],["impl<const P: u64> Sum for Fp<P>"]]],["rational",[["impl<'a, T: 'a + Signed> Sum<&'a Rational<T>> for Rational<T>"],["impl<T: Signed> Sum for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[846,942]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.Extend.js b/trait.impl/core/iter/traits/collect/trait.Extend.js deleted file mode 100644 index 81fbe57d..00000000 --- a/trait.impl/core/iter/traits/collect/trait.Extend.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["interval_heap",[["impl<T: Ord> Extend<T> for IntervalHeap<T>"]]],["skew_heap",[["impl<'a, A: 'a + Copy + Ord> Extend<&'a A> for SkewHeap<A>"],["impl<A: Ord> Extend<A> for SkewHeap<A>"]]],["swag",[["impl<O: Op> Extend<<O as Op>::Value> for DequeueSwag<O>
    where\n O::Value: Clone,
    "]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[481,1150,910]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.FromIterator.js b/trait.impl/core/iter/traits/collect/trait.FromIterator.js deleted file mode 100644 index 9e61a6da..00000000 --- a/trait.impl/core/iter/traits/collect/trait.FromIterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<T> FromIterator<T> for AvlTree<T>"]]],["bitvec",[["impl FromIterator<bool> for BitVec"]]],["dual_segtree",[["impl<O: Ops> FromIterator<<O as Ops>::Value> for DualSegtree<O>"]]],["heap_tricks",[["impl<T: Copy + Ord + Hash> FromIterator<T> for RemovableHeap<T>"]]],["interval_heap",[["impl<T: Ord> FromIterator<T> for IntervalHeap<T>"]]],["lazy_segtree",[["impl<O: Op> FromIterator<<O as Op>::Value> for LazySegtree<O>
    where\n O::Value: Clone,\n O::Operator: Clone,
    "]]],["rb",[["impl<O: Op> FromIterator<<O as Op>::Value> for Seg<O>"]]],["rbtree",[["impl<A, O: Op<Value = A>> FromIterator<A> for RbTree<A, O>"]]],["segtree",[["impl<K, L, O: Op> FromIterator<(K, L, <O as Op>::Value)> for Sparse2dSegtree<K, L, O>
    where\n K: Ord + Clone,\n L: Ord + Clone,\n O::Value: Clone,
    "],["impl<K, O: Op> FromIterator<(K, <O as Op>::Value)> for SegtreeWithCompression<K, O>
    where\n K: Clone + Ord,\n O::Value: Clone,
    "],["impl<O: Op> FromIterator<<O as Op>::Value> for Segtree<O>
    where\n O::Value: Clone,
    "]]],["skew_heap",[["impl<A: Ord> FromIterator<A> for SkewHeap<A>"]]],["sparse_table",[["impl<O: Op> FromIterator<<O as Op>::Value> for SparseTable<O>"]]],["splay_tree",[["impl<O: LazyOps> FromIterator<<O as LazyOps>::Value> for SplayTree<O>"]]],["suffix_sum",[["impl<O: Op> FromIterator<<O as Op>::Value> for SuffixSum<O>"]]],["swag",[["impl<O: Op> FromIterator<<O as Op>::Value> for DequeueSwag<O>
    where\n O::Value: Clone,
    "]]],["veb",[["impl FromIterator<usize> for VebSet"],["impl<V> FromIterator<(usize, V)> for VebMap<V>"]]],["wavelet_matrix",[["impl FromIterator<bool> for StaticBitVec"],["impl FromIterator<usize> for WaveletMatrix"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[344,414,714,763,500,1303,592,443,3726,476,706,722,682,928,821,896]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/collect/trait.IntoIterator.js b/trait.impl/core/iter/traits/collect/trait.IntoIterator.js deleted file mode 100644 index 0b075d15..00000000 --- a/trait.impl/core/iter/traits/collect/trait.IntoIterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<'a, T> IntoIterator for &'a AvlTree<T>"],["impl<T> IntoIterator for AvlTree<T>"]]],["bitvec",[["impl<'a> IntoIterator for &'a BitVec"]]],["interval_heap",[["impl<T: Ord> IntoIterator for IntervalHeap<T>"]]],["rb",[["impl<'a, K: Ord> IntoIterator for &'a Multiset<K>"],["impl<'a, K: Ord, O: MultimapOp> IntoIterator for &'a MultimapSeg<K, O>"],["impl<'a, K: Ord, V> IntoIterator for &'a Multimap<K, V>"],["impl<'a, O: Op> IntoIterator for &'a Seg<O>"]]],["rbtree",[["impl<'a, O: Op> IntoIterator for &'a RbTree<O::Value, O>"]]],["segtree",[["impl<'a, O: Op> IntoIterator for &'a Segtree<O>"]]],["splay_tree",[["impl<'a, O: LazyOps> IntoIterator for &'a SplayTree<O>"]]],["swag",[["impl<'a, O: Op> IntoIterator for &'a DequeueSwag<O>"],["impl<O: Op> IntoIterator for DequeueSwag<O>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[668,327,491,1862,549,431,467,833]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js b/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js deleted file mode 100644 index 38fc5d8d..00000000 --- a/trait.impl/core/iter/traits/double_ended/trait.DoubleEndedIterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<'a, T> DoubleEndedIterator for Iter<'a, T>"]]],["gridnei",[["impl DoubleEndedIterator for Grid0"],["impl DoubleEndedIterator for Grid1"],["impl DoubleEndedIterator for Grid2"],["impl DoubleEndedIterator for Grid3"],["impl DoubleEndedIterator for Grid4"],["impl DoubleEndedIterator for Grid5"],["impl DoubleEndedIterator for Grid6"],["impl DoubleEndedIterator for Grid7"],["impl DoubleEndedIterator for Grid8"],["impl<I: GridIterator> DoubleEndedIterator for Encode<I>"]]],["splay_tree",[["impl<'a, O: LazyOps> DoubleEndedIterator for Iter<'a, O>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[365,3411,479]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/trait.impl/core/iter/traits/iterator/trait.Iterator.js deleted file mode 100644 index 8488462c..00000000 --- a/trait.impl/core/iter/traits/iterator/trait.Iterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> Iterator for Skipped<'a, T, F, I>
    where\n F: FnMut(&T, &T) -> T,\n I: FnMut() -> T,
    "]]],["avl_tree",[["impl<'a, T> Iterator for Iter<'a, T>"],["impl<T> Iterator for IntoIter<T>"]]],["bitutils",[["impl<T: Unsigned> Iterator for Combinations<T>"],["impl<T: Unsigned> Iterator for Subsets<T>"]]],["bitvec",[["impl<'a> Iterator for Iter<'a>"]]],["erato",[["impl<'a, S: SieveKind, T: Int> Iterator for PrimeNumbers<'a, S, T>"],["impl<'a, T: Int> Iterator for PrimeFactorsByLookup<'a, T>"],["impl<'a, T: Int> Iterator for PrimeFactorsByTrialDivision<'a, T>"],["impl<T: Int, P: PrimeFactors<T>> Iterator for Rle<T, P>"],["impl<T: Int, P: PrimeFactors<T>> Iterator for Unique<T, P>"]]],["gridnei",[["impl Iterator for Grid0"],["impl Iterator for Grid1"],["impl Iterator for Grid2"],["impl Iterator for Grid3"],["impl Iterator for Grid4"],["impl Iterator for Grid5"],["impl Iterator for Grid6"],["impl Iterator for Grid7"],["impl Iterator for Grid8"],["impl<I: GridIterator> Iterator for Encode<I>"]]],["hld",[["impl Iterator for PathSegments<'_>"]]],["rbtree",[["impl<'a, T, O: Op<Value = T>> Iterator for Iter<'a, T, O>"]]],["splay_tree",[["impl<'a, O: LazyOps> Iterator for Iter<'a, O>"]]],["trial",[["impl<T: Value> Iterator for Divisors<T>"],["impl<T: Value> Iterator for PrimeFactors<T>"],["impl<T: Value> Iterator for PrimeFactorsRle<T>"]]],["uf_checklist",[["impl Iterator for Iter<'_>"]]],["wavelet_matrix",[["impl<'a> Iterator for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[914,639,864,313,2356,3001,318,426,438,1242,321,340]} \ No newline at end of file diff --git a/trait.impl/core/iter/traits/marker/trait.FusedIterator.js b/trait.impl/core/iter/traits/marker/trait.FusedIterator.js deleted file mode 100644 index cb4df9c9..00000000 --- a/trait.impl/core/iter/traits/marker/trait.FusedIterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["hld",[["impl FusedIterator for PathSegments<'_>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[328]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js deleted file mode 100644 index 08c07b04..00000000 --- a/trait.impl/core/marker/trait.Copy.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bfs01",[["impl Copy for Weight"]]],["cht",[["impl Copy for Concave"],["impl Copy for Convex"],["impl Copy for Quadratic"]]],["dinic",[["impl Copy for EdgeKey"],["impl<T: Copy> Copy for Edge<T>"]]],["fp",[["impl<const P: u64> Copy for Fp<P>"]]],["heap_tricks",[["impl Copy for Nop"],["impl<T: Copy> Copy for Sum<T>"]]],["lin_ineq",[["impl<T: Copy> Copy for Interval<T>"]]],["mincost_flow",[["impl Copy for Edge"]]],["rational",[["impl<T: Copy + Signed> Copy for Rational<T>"]]],["vec_lines",[["impl<T: Copy> Copy for Line<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[247,724,645,354,660,421,269,522,412]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js deleted file mode 100644 index 705bbc56..00000000 --- a/trait.impl/core/marker/trait.Freeze.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> Freeze for Skipped<'a, T, F, I>
    where\n T: Freeze,\n F: Freeze,\n I: Freeze,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> Freeze for Iter<'a, T>",1,["avl_tree::Iter"]],["impl<T> Freeze for AvlTree<T>",1,["avl_tree::AvlTree"]],["impl<T> Freeze for IntoIter<T>",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl Freeze for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> Freeze for Combinations<T>
    where\n T: Freeze,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> Freeze for Subsets<T>
    where\n T: Freeze,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl Freeze for BitVec",1,["bitvec::BitVec"]],["impl<'a> Freeze for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> Freeze for Bsgs<T, Mul>
    where\n T: Freeze,\n Mul: Freeze,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl Freeze for Concave",1,["cht::Concave"]],["impl Freeze for Convex",1,["cht::Convex"]],["impl Freeze for Quadratic",1,["cht::Quadratic"]],["impl<C> Freeze for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> Freeze for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl Freeze for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> Freeze for Dinic<T>",1,["dinic::Dinic"]],["impl<T> Freeze for Edge<T>
    where\n T: Freeze,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> Freeze for DualSegtree<O>",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl Freeze for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Freeze for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Freeze for PrimeNumbers<'a, S, T>",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Freeze for PrimeFactorsByLookup<'a, T>
    where\n T: Freeze,
    ",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> Freeze for PrimeFactorsByTrialDivision<'a, T>
    where\n T: Freeze,
    ",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> Freeze for Rle<T, P>
    where\n P: Freeze,\n T: Freeze,
    ",1,["erato::converters::Rle"]],["impl<T, P> Freeze for Unique<T, P>
    where\n P: Freeze,\n T: Freeze,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> Freeze for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Freeze for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl Freeze for Gco",1,["gco::Gco"]],["impl Freeze for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl Freeze for Grid0",1,["gridnei::Grid0"]],["impl Freeze for Grid1",1,["gridnei::Grid1"]],["impl Freeze for Grid2",1,["gridnei::Grid2"]],["impl Freeze for Grid3",1,["gridnei::Grid3"]],["impl Freeze for Grid4",1,["gridnei::Grid4"]],["impl Freeze for Grid5",1,["gridnei::Grid5"]],["impl Freeze for Grid6",1,["gridnei::Grid6"]],["impl Freeze for Grid7",1,["gridnei::Grid7"]],["impl Freeze for Grid8",1,["gridnei::Grid8"]],["impl<I> Freeze for Encode<I>
    where\n I: Freeze,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl Freeze for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Freeze for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl Freeze for Nop",1,["heap_tricks::Nop"]],["impl<T> Freeze for RemovableHeap<T>",1,["heap_tricks::RemovableHeap"]],["impl<T> Freeze for Sum<T>
    where\n T: Freeze,
    ",1,["heap_tricks::Sum"]],["impl<T, H> Freeze for DoubleHeap<T, H>
    where\n H: Freeze,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl Freeze for Hld",1,["hld::Hld"]],["impl<'a> Freeze for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl Freeze for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> Freeze for HungarianResult<T>
    where\n T: Freeze,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> Freeze for IntervalHeap<T>",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> !Freeze for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> Freeze for LazySegtree<O>",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> Freeze for Interval<T>
    where\n T: Freeze,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> Freeze for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl Freeze for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl Freeze for Edge",1,["mincost_flow::Edge"]],["impl Freeze for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl Freeze for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> Freeze for RadixHeap<T>",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl Freeze for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Freeze for LogUniform",1,["randtools::LogUniform"]],["impl Freeze for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Freeze for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Freeze for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl Freeze for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Freeze for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Freeze for SubRange",1,["randtools::SubRange"]],["impl Freeze for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> Freeze for Rational<T>
    where\n T: Freeze,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> Freeze for Multiset<K>",1,["rb::map::Multiset"]],["impl<K, O> Freeze for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> Freeze for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<O> Freeze for Seg<O>",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> Freeze for Iter<'a, T, O>",1,["rbtree::Iter"]],["impl<T> Freeze for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> Freeze for RbTree<T, O>
    where\n T: Freeze,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl Freeze for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> !Freeze for Segbeats<T>",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> !Freeze for Segbeats<T>",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> Freeze for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]],["impl<'a, O> Freeze for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, L, O> Freeze for Sparse2dSegtree<K, L, O>",1,["segtree::Sparse2dSegtree"]],["impl<K, O> Freeze for SegtreeWithCompression<K, O>",1,["segtree::SegtreeWithCompression"]],["impl<O> Freeze for Dense2dSegtree<O>",1,["segtree::Dense2dSegtree"]],["impl<O> Freeze for Segtree<O>",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> Freeze for SkewHeap<T>",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl Freeze for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> Freeze for SparseTable<O>",1,["sparse_table::SparseTable"]],["impl<O> Freeze for SparseTable2d<O>",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> Freeze for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> Freeze for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> !Freeze for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<O> Freeze for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<T> Freeze for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> Freeze for SuffixSum<O>",1,["suffix_sum::SuffixSum"]],["impl<O> Freeze for SuffixSum2d<O>",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> Freeze for DequeueSwag<O>",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> Freeze for TwoWayTreeFoldResult<T>",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> Freeze for Divisors<T>
    where\n T: Freeze,
    ",1,["trial::divisors::Divisors"]],["impl<T> Freeze for PrimeFactors<T>
    where\n T: Freeze,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> Freeze for PrimeFactorsRle<T>
    where\n T: Freeze,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl Freeze for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> Freeze for TrieMap<V>",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl Freeze for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl Freeze for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Freeze for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl Freeze for EdgeCount",1,["union_find::EdgeCount"]],["impl Freeze for HasCycle",1,["union_find::HasCycle"]],["impl Freeze for VertexCount",1,["union_find::VertexCount"]],["impl<O> Freeze for UnionFind<O>",1,["union_find::UnionFind"]]]],["veb",[["impl Freeze for VebSet",1,["veb::VebSet"]],["impl<V> Freeze for VebMap<V>",1,["veb::VebMap"]]]],["vec_lines",[["impl Freeze for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Freeze for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> Freeze for Line<T>
    where\n T: Freeze,
    ",1,["vec_lines::Line"]],["impl<T, C> Freeze for VecLines<T, C>",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl Freeze for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl Freeze for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> Freeze for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> Freeze for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[797,912,274,1016,567,626,1368,1024,346,3270,776,534,2916,661,1602,566,316,530,354,339,346,498,372,296,609,472,330,2748,498,1173,1060,260,319,343,1956,322,328,681,1527,651,314,370,1518,587,288,629,1201,546,1410,1305]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js deleted file mode 100644 index d9893c3c..00000000 --- a/trait.impl/core/marker/trait.Send.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> Send for Skipped<'a, T, F, I>
    where\n T: Send + Sync,\n F: Send,\n I: Send,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> Send for Iter<'a, T>
    where\n T: Sync,
    ",1,["avl_tree::Iter"]],["impl<T> Send for AvlTree<T>
    where\n T: Send,
    ",1,["avl_tree::AvlTree"]],["impl<T> Send for IntoIter<T>
    where\n T: Send,
    ",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl Send for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> Send for Combinations<T>
    where\n T: Send,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> Send for Subsets<T>
    where\n T: Send,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl Send for BitVec",1,["bitvec::BitVec"]],["impl<'a> Send for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> Send for Bsgs<T, Mul>
    where\n T: Send,\n Mul: Send,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl Send for Concave",1,["cht::Concave"]],["impl Send for Convex",1,["cht::Convex"]],["impl Send for Quadratic",1,["cht::Quadratic"]],["impl<C> Send for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> Send for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl Send for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> Send for Dinic<T>
    where\n T: Send,
    ",1,["dinic::Dinic"]],["impl<T> Send for Edge<T>
    where\n T: Send,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> Send for DualSegtree<O>
    where\n <O as Ops>::Value: Send,
    ",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl Send for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Send for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Send for PrimeNumbers<'a, S, T>
    where\n T: Send,\n <S as SieveKind>::SieveValue: Send,
    ",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Send for PrimeFactorsByLookup<'a, T>
    where\n T: Send,
    ",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> Send for PrimeFactorsByTrialDivision<'a, T>
    where\n T: Send,
    ",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> Send for Rle<T, P>
    where\n P: Send,\n T: Send,
    ",1,["erato::converters::Rle"]],["impl<T, P> Send for Unique<T, P>
    where\n P: Send,\n T: Send,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> Send for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Send for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl Send for Gco",1,["gco::Gco"]],["impl Send for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl Send for Grid0",1,["gridnei::Grid0"]],["impl Send for Grid1",1,["gridnei::Grid1"]],["impl Send for Grid2",1,["gridnei::Grid2"]],["impl Send for Grid3",1,["gridnei::Grid3"]],["impl Send for Grid4",1,["gridnei::Grid4"]],["impl Send for Grid5",1,["gridnei::Grid5"]],["impl Send for Grid6",1,["gridnei::Grid6"]],["impl Send for Grid7",1,["gridnei::Grid7"]],["impl Send for Grid8",1,["gridnei::Grid8"]],["impl<I> Send for Encode<I>
    where\n I: Send,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl Send for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Send for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl Send for Nop",1,["heap_tricks::Nop"]],["impl<T> Send for RemovableHeap<T>
    where\n T: Send,
    ",1,["heap_tricks::RemovableHeap"]],["impl<T> Send for Sum<T>
    where\n T: Send,
    ",1,["heap_tricks::Sum"]],["impl<T, H> Send for DoubleHeap<T, H>
    where\n H: Send,\n T: Send,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl Send for Hld",1,["hld::Hld"]],["impl<'a> Send for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl Send for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> Send for HungarianResult<T>
    where\n T: Send,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> Send for IntervalHeap<T>
    where\n T: Send,
    ",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> Send for Segbeats<T>
    where\n T: Send,
    ",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> Send for LazySegtree<O>
    where\n <O as Op>::Value: Send,\n <O as Op>::Operator: Send,
    ",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> Send for Interval<T>
    where\n T: Send,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> !Send for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl Send for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl Send for Edge",1,["mincost_flow::Edge"]],["impl Send for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl Send for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> Send for RadixHeap<T>
    where\n T: Send,
    ",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl Send for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Send for LogUniform",1,["randtools::LogUniform"]],["impl Send for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Send for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Send for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl Send for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Send for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Send for SubRange",1,["randtools::SubRange"]],["impl Send for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> Send for Rational<T>
    where\n T: Send,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> !Send for Multiset<K>",1,["rb::map::Multiset"]],["impl<K, O> !Send for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> !Send for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<O> !Send for Seg<O>",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> Send for Iter<'a, T, O>
    where\n T: Sync,\n <O as Op>::Summary: Sync,
    ",1,["rbtree::Iter"]],["impl<T> Send for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> Send for RbTree<T, O>
    where\n T: Send,\n <O as Op>::Summary: Send,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl Send for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> Send for Segbeats<T>
    where\n T: Send,
    ",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> Send for Segbeats<T>
    where\n T: Send,
    ",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> Send for Dense2dEntry<'a, O>
    where\n <O as Op>::Value: Send,
    ",1,["segtree::Dense2dEntry"]],["impl<'a, O> Send for Entry<'a, O>
    where\n <O as Op>::Value: Send,
    ",1,["segtree::Entry"]],["impl<K, L, O> Send for Sparse2dSegtree<K, L, O>
    where\n K: Send,\n L: Send,\n <O as Op>::Value: Send,
    ",1,["segtree::Sparse2dSegtree"]],["impl<K, O> Send for SegtreeWithCompression<K, O>
    where\n K: Send,\n <O as Op>::Value: Send,
    ",1,["segtree::SegtreeWithCompression"]],["impl<O> Send for Dense2dSegtree<O>
    where\n <O as Op>::Value: Send,
    ",1,["segtree::Dense2dSegtree"]],["impl<O> Send for Segtree<O>
    where\n <O as Op>::Value: Send,
    ",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> Send for SkewHeap<T>
    where\n T: Send,
    ",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl Send for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> Send for SparseTable<O>
    where\n <O as Op>::Value: Send,
    ",1,["sparse_table::SparseTable"]],["impl<O> Send for SparseTable2d<O>
    where\n <O as Op>::Value: Send,
    ",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> !Send for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> !Send for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> !Send for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<O> Send for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<T> Send for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> Send for SuffixSum<O>
    where\n <O as Op>::Value: Send,
    ",1,["suffix_sum::SuffixSum"]],["impl<O> Send for SuffixSum2d<O>
    where\n <O as Op>::Value: Send,
    ",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> Send for DequeueSwag<O>
    where\n <O as Op>::Value: Send,
    ",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> Send for TwoWayTreeFoldResult<T>
    where\n T: Send,
    ",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> Send for Divisors<T>
    where\n T: Send,
    ",1,["trial::divisors::Divisors"]],["impl<T> Send for PrimeFactors<T>
    where\n T: Send,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> Send for PrimeFactorsRle<T>
    where\n T: Send,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl Send for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> Send for TrieMap<V>
    where\n V: Send,
    ",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl Send for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl Send for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Send for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl Send for EdgeCount",1,["union_find::EdgeCount"]],["impl Send for HasCycle",1,["union_find::HasCycle"]],["impl Send for VertexCount",1,["union_find::VertexCount"]],["impl<O> Send for UnionFind<O>
    where\n <O as Op>::Value: Send,
    ",1,["union_find::UnionFind"]]]],["veb",[["impl Send for VebSet",1,["veb::VebSet"]],["impl<V> Send for VebMap<V>
    where\n V: Send,
    ",1,["veb::VebMap"]]]],["vec_lines",[["impl Send for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Send for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> Send for Line<T>
    where\n T: Send,
    ",1,["vec_lines::Line"]],["impl<T, C> Send for VecLines<T, C>
    where\n T: Send,
    ",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl Send for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl Send for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> Send for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> Send for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[908,1416,268,992,555,608,1338,1174,760,3541,764,522,2850,649,1882,554,310,518,522,506,1147,486,367,290,597,466,498,2694,486,1153,1940,254,486,510,4716,490,322,1499,1499,1453,691,538,1482,749,282,617,1584,708,1554,1281]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index a026c7ef..00000000 --- a/trait.impl/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> StructuralPartialEq for Skipped<'a, T, F, I>"]]],["bfs01",[["impl StructuralPartialEq for Weight"]]],["bitutils",[["impl<T> StructuralPartialEq for Combinations<T>"],["impl<T> StructuralPartialEq for Subsets<T>"]]],["bitvec",[["impl StructuralPartialEq for BitVec"]]],["cht",[["impl StructuralPartialEq for Quadratic"],["impl<C> StructuralPartialEq for BTreeCht<C>"],["impl<C> StructuralPartialEq for VecCht<C>"]]],["dinic",[["impl StructuralPartialEq for EdgeKey"],["impl<T> StructuralPartialEq for Dinic<T>"],["impl<T> StructuralPartialEq for Edge<T>"]]],["dual_segtree",[["impl<O: Ops> StructuralPartialEq for DualSegtree<O>"]]],["erato",[["impl StructuralPartialEq for LpdSieve"],["impl StructuralPartialEq for Sieve"]]],["fp",[["impl<const P: u64> StructuralPartialEq for Fp<P>"]]],["gco",[["impl StructuralPartialEq for Gco"],["impl StructuralPartialEq for GcoResult"]]],["heap_slope_trick",[["impl StructuralPartialEq for Summary"]]],["heap_tricks",[["impl StructuralPartialEq for Nop"],["impl<T> StructuralPartialEq for Sum<T>"]]],["hopkarp",[["impl StructuralPartialEq for HopkarpResult"]]],["hungarian",[["impl<T: Value> StructuralPartialEq for HungarianResult<T>"]]],["interval_heap",[["impl<T: Ord> StructuralPartialEq for IntervalHeap<T>"]]],["lazy_segbeats",[["impl<T> StructuralPartialEq for Segbeats<T>"]]],["low_link",[["impl StructuralPartialEq for LowLink"]]],["mincost_flow",[["impl StructuralPartialEq for Edge"],["impl StructuralPartialEq for MinCostFlow"]]],["radix_heap",[["impl<T> StructuralPartialEq for RadixHeap<T>"]]],["scc",[["impl StructuralPartialEq for Scc"]]],["segbeats",[["impl<T> StructuralPartialEq for Segbeats<T>"]]],["segbeats_task3",[["impl<T> StructuralPartialEq for Segbeats<T>"]]],["skew_heap",[["impl<T> StructuralPartialEq for SkewHeap<T>"]]],["snippetter",[["impl StructuralPartialEq for CrateMetadata"]]],["trie",[["impl StructuralPartialEq for TrieSet"],["impl<V> StructuralPartialEq for TrieMap<V>"]]],["two_sat",[["impl StructuralPartialEq for TwoSat"]]],["union_find",[["impl<O: Op> StructuralPartialEq for UnionFind<O>"]]],["vec_lines",[["impl StructuralPartialEq for DecreasingTilt"],["impl StructuralPartialEq for IncreasingTilt"],["impl<T> StructuralPartialEq for Line<T>"],["impl<T, C> StructuralPartialEq for VecLines<T, C>"]]],["wavelet_matrix",[["impl StructuralPartialEq for StaticBitVec"],["impl StructuralPartialEq for WaveletMatrix"],["impl<'a> StructuralPartialEq for SpanInNode<'a>"],["impl<'a> StructuralPartialEq for Spans<'a>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[339,293,658,302,910,903,452,589,399,576,335,616,326,455,484,347,311,630,341,284,332,350,335,335,605,305,433,1274,1329]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js deleted file mode 100644 index cc793c1f..00000000 --- a/trait.impl/core/marker/trait.Sync.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> Sync for Skipped<'a, T, F, I>
    where\n T: Sync,\n F: Sync,\n I: Sync,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> Sync for Iter<'a, T>
    where\n T: Sync,
    ",1,["avl_tree::Iter"]],["impl<T> Sync for AvlTree<T>
    where\n T: Sync,
    ",1,["avl_tree::AvlTree"]],["impl<T> Sync for IntoIter<T>
    where\n T: Sync,
    ",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl Sync for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> Sync for Combinations<T>
    where\n T: Sync,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> Sync for Subsets<T>
    where\n T: Sync,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl Sync for BitVec",1,["bitvec::BitVec"]],["impl<'a> Sync for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> Sync for Bsgs<T, Mul>
    where\n T: Sync,\n Mul: Sync,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl Sync for Concave",1,["cht::Concave"]],["impl Sync for Convex",1,["cht::Convex"]],["impl Sync for Quadratic",1,["cht::Quadratic"]],["impl<C> Sync for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> Sync for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl Sync for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> Sync for Dinic<T>
    where\n T: Sync,
    ",1,["dinic::Dinic"]],["impl<T> Sync for Edge<T>
    where\n T: Sync,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> Sync for DualSegtree<O>
    where\n <O as Ops>::Value: Sync,
    ",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl Sync for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Sync for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Sync for PrimeNumbers<'a, S, T>
    where\n T: Sync,\n <S as SieveKind>::SieveValue: Sync,
    ",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Sync for PrimeFactorsByLookup<'a, T>
    where\n T: Sync,
    ",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> Sync for PrimeFactorsByTrialDivision<'a, T>
    where\n T: Sync,
    ",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> Sync for Rle<T, P>
    where\n P: Sync,\n T: Sync,
    ",1,["erato::converters::Rle"]],["impl<T, P> Sync for Unique<T, P>
    where\n P: Sync,\n T: Sync,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> Sync for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Sync for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl Sync for Gco",1,["gco::Gco"]],["impl Sync for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl Sync for Grid0",1,["gridnei::Grid0"]],["impl Sync for Grid1",1,["gridnei::Grid1"]],["impl Sync for Grid2",1,["gridnei::Grid2"]],["impl Sync for Grid3",1,["gridnei::Grid3"]],["impl Sync for Grid4",1,["gridnei::Grid4"]],["impl Sync for Grid5",1,["gridnei::Grid5"]],["impl Sync for Grid6",1,["gridnei::Grid6"]],["impl Sync for Grid7",1,["gridnei::Grid7"]],["impl Sync for Grid8",1,["gridnei::Grid8"]],["impl<I> Sync for Encode<I>
    where\n I: Sync,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl Sync for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Sync for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl Sync for Nop",1,["heap_tricks::Nop"]],["impl<T> Sync for RemovableHeap<T>
    where\n T: Sync,
    ",1,["heap_tricks::RemovableHeap"]],["impl<T> Sync for Sum<T>
    where\n T: Sync,
    ",1,["heap_tricks::Sum"]],["impl<T, H> Sync for DoubleHeap<T, H>
    where\n H: Sync,\n T: Sync,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl Sync for Hld",1,["hld::Hld"]],["impl<'a> Sync for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl Sync for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> Sync for HungarianResult<T>
    where\n T: Sync,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> Sync for IntervalHeap<T>
    where\n T: Sync,
    ",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> !Sync for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> Sync for LazySegtree<O>
    where\n <O as Op>::Value: Sync,\n <O as Op>::Operator: Sync,
    ",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> Sync for Interval<T>
    where\n T: Sync,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> !Sync for LinkCutTreeBase<O>",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl Sync for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl Sync for Edge",1,["mincost_flow::Edge"]],["impl Sync for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl Sync for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> Sync for RadixHeap<T>
    where\n T: Sync,
    ",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl Sync for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Sync for LogUniform",1,["randtools::LogUniform"]],["impl Sync for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Sync for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Sync for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl Sync for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Sync for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Sync for SubRange",1,["randtools::SubRange"]],["impl Sync for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> Sync for Rational<T>
    where\n T: Sync,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> !Sync for Multiset<K>",1,["rb::map::Multiset"]],["impl<K, O> !Sync for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> !Sync for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<O> !Sync for Seg<O>",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> Sync for Iter<'a, T, O>
    where\n T: Sync,\n <O as Op>::Summary: Sync,
    ",1,["rbtree::Iter"]],["impl<T> Sync for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> Sync for RbTree<T, O>
    where\n T: Sync,\n <O as Op>::Summary: Sync,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl Sync for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> !Sync for Segbeats<T>",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> !Sync for Segbeats<T>",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> Sync for Dense2dEntry<'a, O>
    where\n <O as Op>::Value: Sync,
    ",1,["segtree::Dense2dEntry"]],["impl<'a, O> Sync for Entry<'a, O>
    where\n <O as Op>::Value: Sync,
    ",1,["segtree::Entry"]],["impl<K, L, O> Sync for Sparse2dSegtree<K, L, O>
    where\n K: Sync,\n L: Sync,\n <O as Op>::Value: Sync,
    ",1,["segtree::Sparse2dSegtree"]],["impl<K, O> Sync for SegtreeWithCompression<K, O>
    where\n K: Sync,\n <O as Op>::Value: Sync,
    ",1,["segtree::SegtreeWithCompression"]],["impl<O> Sync for Dense2dSegtree<O>
    where\n <O as Op>::Value: Sync,
    ",1,["segtree::Dense2dSegtree"]],["impl<O> Sync for Segtree<O>
    where\n <O as Op>::Value: Sync,
    ",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> Sync for SkewHeap<T>
    where\n T: Sync,
    ",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl Sync for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> Sync for SparseTable<O>
    where\n <O as Op>::Value: Sync,
    ",1,["sparse_table::SparseTable"]],["impl<O> Sync for SparseTable2d<O>
    where\n <O as Op>::Value: Sync,
    ",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> !Sync for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> !Sync for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> !Sync for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<O> Sync for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<T> Sync for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> Sync for SuffixSum<O>
    where\n <O as Op>::Value: Sync,
    ",1,["suffix_sum::SuffixSum"]],["impl<O> Sync for SuffixSum2d<O>
    where\n <O as Op>::Value: Sync,
    ",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> Sync for DequeueSwag<O>
    where\n <O as Op>::Value: Sync,
    ",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> Sync for TwoWayTreeFoldResult<T>
    where\n T: Sync,
    ",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> Sync for Divisors<T>
    where\n T: Sync,
    ",1,["trial::divisors::Divisors"]],["impl<T> Sync for PrimeFactors<T>
    where\n T: Sync,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> Sync for PrimeFactorsRle<T>
    where\n T: Sync,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl Sync for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> Sync for TrieMap<V>
    where\n V: Sync,
    ",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl Sync for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl Sync for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Sync for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl Sync for EdgeCount",1,["union_find::EdgeCount"]],["impl Sync for HasCycle",1,["union_find::HasCycle"]],["impl Sync for VertexCount",1,["union_find::VertexCount"]],["impl<O> Sync for UnionFind<O>
    where\n <O as Op>::Value: Sync,
    ",1,["union_find::UnionFind"]]]],["veb",[["impl Sync for VebSet",1,["veb::VebSet"]],["impl<V> Sync for VebMap<V>
    where\n V: Sync,
    ",1,["veb::VebMap"]]]],["vec_lines",[["impl Sync for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Sync for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> Sync for Line<T>
    where\n T: Sync,
    ",1,["vec_lines::Line"]],["impl<T, C> Sync for VecLines<T, C>
    where\n T: Sync,
    ",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl Sync for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl Sync for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> Sync for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> Sync for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[773,1416,268,992,555,608,1338,1174,760,3541,764,522,2850,649,1882,554,310,518,522,333,1147,486,367,290,597,466,498,2694,486,1153,1940,254,313,337,4716,490,322,1499,1499,1453,691,538,1482,749,282,617,1584,708,1554,1281]} \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js deleted file mode 100644 index f4ac0c91..00000000 --- a/trait.impl/core/marker/trait.Unpin.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> Unpin for Skipped<'a, T, F, I>
    where\n T: Unpin,\n F: Unpin,\n I: Unpin,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> Unpin for Iter<'a, T>",1,["avl_tree::Iter"]],["impl<T> Unpin for AvlTree<T>",1,["avl_tree::AvlTree"]],["impl<T> Unpin for IntoIter<T>",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl Unpin for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> Unpin for Combinations<T>
    where\n T: Unpin,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> Unpin for Subsets<T>
    where\n T: Unpin,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl Unpin for BitVec",1,["bitvec::BitVec"]],["impl<'a> Unpin for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> Unpin for Bsgs<T, Mul>
    where\n T: Unpin,\n Mul: Unpin,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl Unpin for Concave",1,["cht::Concave"]],["impl Unpin for Convex",1,["cht::Convex"]],["impl Unpin for Quadratic",1,["cht::Quadratic"]],["impl<C> Unpin for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> Unpin for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl Unpin for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> Unpin for Dinic<T>
    where\n T: Unpin,
    ",1,["dinic::Dinic"]],["impl<T> Unpin for Edge<T>
    where\n T: Unpin,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> Unpin for DualSegtree<O>
    where\n <O as Ops>::Value: Unpin,
    ",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl Unpin for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl Unpin for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> Unpin for PrimeNumbers<'a, S, T>
    where\n T: Unpin,
    ",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> Unpin for PrimeFactorsByLookup<'a, T>
    where\n T: Unpin,
    ",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> Unpin for PrimeFactorsByTrialDivision<'a, T>
    where\n T: Unpin,
    ",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> Unpin for Rle<T, P>
    where\n P: Unpin,\n T: Unpin,
    ",1,["erato::converters::Rle"]],["impl<T, P> Unpin for Unique<T, P>
    where\n P: Unpin,\n T: Unpin,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> Unpin for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> Unpin for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl Unpin for Gco",1,["gco::Gco"]],["impl Unpin for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl Unpin for Grid0",1,["gridnei::Grid0"]],["impl Unpin for Grid1",1,["gridnei::Grid1"]],["impl Unpin for Grid2",1,["gridnei::Grid2"]],["impl Unpin for Grid3",1,["gridnei::Grid3"]],["impl Unpin for Grid4",1,["gridnei::Grid4"]],["impl Unpin for Grid5",1,["gridnei::Grid5"]],["impl Unpin for Grid6",1,["gridnei::Grid6"]],["impl Unpin for Grid7",1,["gridnei::Grid7"]],["impl Unpin for Grid8",1,["gridnei::Grid8"]],["impl<I> Unpin for Encode<I>
    where\n I: Unpin,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl Unpin for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl Unpin for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl Unpin for Nop",1,["heap_tricks::Nop"]],["impl<T> Unpin for RemovableHeap<T>
    where\n T: Unpin,
    ",1,["heap_tricks::RemovableHeap"]],["impl<T> Unpin for Sum<T>
    where\n T: Unpin,
    ",1,["heap_tricks::Sum"]],["impl<T, H> Unpin for DoubleHeap<T, H>
    where\n H: Unpin,\n T: Unpin,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl Unpin for Hld",1,["hld::Hld"]],["impl<'a> Unpin for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl Unpin for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> Unpin for HungarianResult<T>
    where\n T: Unpin,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> Unpin for IntervalHeap<T>
    where\n T: Unpin,
    ",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> Unpin for Segbeats<T>
    where\n T: Unpin,
    ",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> Unpin for LazySegtree<O>
    where\n <O as Op>::Value: Unpin,\n <O as Op>::Operator: Unpin,
    ",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> Unpin for Interval<T>
    where\n T: Unpin,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> Unpin for LinkCutTreeBase<O>
    where\n <O as OpBase>::InternalValue: Unpin,
    ",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl Unpin for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl Unpin for Edge",1,["mincost_flow::Edge"]],["impl Unpin for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl Unpin for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> Unpin for RadixHeap<T>
    where\n T: Unpin,
    ",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl Unpin for DistinctTwo",1,["randtools::DistinctTwo"]],["impl Unpin for LogUniform",1,["randtools::LogUniform"]],["impl Unpin for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl Unpin for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl Unpin for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl Unpin for SimpleGraph",1,["randtools::SimpleGraph"]],["impl Unpin for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl Unpin for SubRange",1,["randtools::SubRange"]],["impl Unpin for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> Unpin for Rational<T>
    where\n T: Unpin,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> Unpin for Multiset<K>",1,["rb::map::Multiset"]],["impl<K, O> Unpin for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> Unpin for Multimap<K, V>",1,["rb::map::Multimap"]],["impl<O> Unpin for Seg<O>",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> Unpin for Iter<'a, T, O>",1,["rbtree::Iter"]],["impl<T> Unpin for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> Unpin for RbTree<T, O>
    where\n T: Unpin,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl Unpin for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> Unpin for Segbeats<T>
    where\n T: Unpin,
    ",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> Unpin for Segbeats<T>
    where\n T: Unpin,
    ",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> Unpin for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]],["impl<'a, O> Unpin for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, L, O> Unpin for Sparse2dSegtree<K, L, O>
    where\n K: Unpin,\n L: Unpin,\n <O as Op>::Value: Unpin,
    ",1,["segtree::Sparse2dSegtree"]],["impl<K, O> Unpin for SegtreeWithCompression<K, O>
    where\n K: Unpin,\n <O as Op>::Value: Unpin,
    ",1,["segtree::SegtreeWithCompression"]],["impl<O> Unpin for Dense2dSegtree<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["segtree::Dense2dSegtree"]],["impl<O> Unpin for Segtree<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> Unpin for SkewHeap<T>",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl Unpin for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> Unpin for SparseTable<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["sparse_table::SparseTable"]],["impl<O> Unpin for SparseTable2d<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> Unpin for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> Unpin for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> Unpin for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> Unpin for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<T> Unpin for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> Unpin for SuffixSum<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["suffix_sum::SuffixSum"]],["impl<O> Unpin for SuffixSum2d<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> Unpin for DequeueSwag<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> Unpin for TwoWayTreeFoldResult<T>
    where\n T: Unpin,
    ",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> Unpin for Divisors<T>
    where\n T: Unpin,
    ",1,["trial::divisors::Divisors"]],["impl<T> Unpin for PrimeFactors<T>
    where\n T: Unpin,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> Unpin for PrimeFactorsRle<T>
    where\n T: Unpin,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl Unpin for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> Unpin for TrieMap<V>",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl Unpin for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl Unpin for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> Unpin for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl Unpin for EdgeCount",1,["union_find::EdgeCount"]],["impl Unpin for HasCycle",1,["union_find::HasCycle"]],["impl Unpin for VertexCount",1,["union_find::VertexCount"]],["impl<O> Unpin for UnionFind<O>
    where\n <O as Op>::Value: Unpin,
    ",1,["union_find::UnionFind"]]]],["veb",[["impl Unpin for VebSet",1,["veb::VebSet"]],["impl<V> Unpin for VebMap<V>
    where\n V: Unpin,
    ",1,["veb::VebMap"]]]],["vec_lines",[["impl Unpin for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl Unpin for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> Unpin for Line<T>
    where\n T: Unpin,
    ",1,["vec_lines::Line"]],["impl<T, C> Unpin for VecLines<T, C>
    where\n T: Unpin,
    ",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl Unpin for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl Unpin for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> Unpin for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> Unpin for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[785,903,271,1004,561,617,1353,1189,766,3408,770,528,2883,655,1906,560,313,524,528,512,1156,492,579,293,603,469,504,2721,492,1161,1048,257,492,516,3965,319,325,1511,1511,1465,697,544,1500,581,285,623,1599,717,1572,1293]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Add.js b/trait.impl/core/ops/arith/trait.Add.js deleted file mode 100644 index 455335ba..00000000 --- a/trait.impl/core/ops/arith/trait.Add.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[["impl Add<Quadratic> for i64"],["impl<T: Into<Self>> Add<T> for Quadratic"]]],["fp",[["impl<const P: u64> Add<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Add<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Add<T> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Add<T> for Fp<P>"]]],["rational",[["impl<'a, T: Signed> Add for &'a Rational<T>"],["impl<'a, T: Signed> Add<&'a Rational<T>> for Rational<T>"],["impl<'a, T: Signed> Add<Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Add for Rational<M>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[780,2097,1803]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.AddAssign.js b/trait.impl/core/ops/arith/trait.AddAssign.js deleted file mode 100644 index fbf80b7e..00000000 --- a/trait.impl/core/ops/arith/trait.AddAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<const P: u64> AddAssign for Fp<P>"],["impl<const P: u64> AddAssign<&Fp<P>> for Fp<P>"]]],["rational",[["impl<T: Signed> AddAssign for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[841,409]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Div.js b/trait.impl/core/ops/arith/trait.Div.js deleted file mode 100644 index b0b0706f..00000000 --- a/trait.impl/core/ops/arith/trait.Div.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<const P: u64> Div<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Div<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Div<T> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Div<T> for Fp<P>"]]],["rational",[["impl<'a, T: Signed> Div for &'a Rational<T>"],["impl<'a, T: Signed> Div<&'a Rational<T>> for Rational<T>"],["impl<'a, T: Signed> Div<Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Div for Rational<M>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[2096,1803]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.DivAssign.js b/trait.impl/core/ops/arith/trait.DivAssign.js deleted file mode 100644 index f8cbe517..00000000 --- a/trait.impl/core/ops/arith/trait.DivAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<const P: u64> DivAssign for Fp<P>"],["impl<const P: u64> DivAssign<&Fp<P>> for Fp<P>"]]],["rational",[["impl<T: Signed> DivAssign for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[841,409]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Mul.js b/trait.impl/core/ops/arith/trait.Mul.js deleted file mode 100644 index bd9a84b0..00000000 --- a/trait.impl/core/ops/arith/trait.Mul.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[["impl Mul<Quadratic> for i64"],["impl<T: Into<Self>> Mul<T> for Quadratic"]]],["fp",[["impl<const P: u64> Mul<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Mul<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Mul<T> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Mul<T> for Fp<P>"]]],["lin_ineq",[["impl<'a, T: Signed> Mul for &'a Interval<T>"],["impl<'a, T: Signed> Mul<&'a Interval<T>> for Interval<T>"],["impl<'a, T: Signed> Mul<Interval<T>> for &'a Interval<T>"],["impl<T: Signed> Mul for Interval<T>"]]],["rational",[["impl<'a, T: Signed> Mul for &'a Rational<T>"],["impl<'a, T: Signed> Mul<&'a Rational<T>> for Rational<T>"],["impl<'a, T: Signed> Mul<Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Mul for Rational<M>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[780,2097,1803,1803]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.MulAssign.js b/trait.impl/core/ops/arith/trait.MulAssign.js deleted file mode 100644 index a87f42ea..00000000 --- a/trait.impl/core/ops/arith/trait.MulAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<const P: u64> MulAssign for Fp<P>"],["impl<const P: u64> MulAssign<&Fp<P>> for Fp<P>"]]],["rational",[["impl<T: Signed> MulAssign for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[841,409]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Neg.js b/trait.impl/core/ops/arith/trait.Neg.js deleted file mode 100644 index 525cf3a3..00000000 --- a/trait.impl/core/ops/arith/trait.Neg.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[["impl Neg for Quadratic"]]],["fp",[["impl<const P: u64> Neg for Fp<P>"]]],["rational",[["impl<T: Signed> Neg for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[260,358,391]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.Sub.js b/trait.impl/core/ops/arith/trait.Sub.js deleted file mode 100644 index 8263970a..00000000 --- a/trait.impl/core/ops/arith/trait.Sub.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["cht",[["impl Sub<Quadratic> for i64"],["impl<T: Into<Self>> Sub<T> for Quadratic"]]],["fp",[["impl<const P: u64> Sub<&Fp<P>> for &Fp<P>"],["impl<const P: u64> Sub<&Fp<P>> for Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Sub<T> for &Fp<P>"],["impl<const P: u64, T: Into<Fp<P>>> Sub<T> for Fp<P>"]]],["rational",[["impl<'a, T: Signed> Sub for &'a Rational<T>"],["impl<'a, T: Signed> Sub<&'a Rational<T>> for Rational<T>"],["impl<'a, T: Signed> Sub<Rational<T>> for &'a Rational<T>"],["impl<M: Signed> Sub for Rational<M>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[780,2097,1803]} \ No newline at end of file diff --git a/trait.impl/core/ops/arith/trait.SubAssign.js b/trait.impl/core/ops/arith/trait.SubAssign.js deleted file mode 100644 index 62824d4e..00000000 --- a/trait.impl/core/ops/arith/trait.SubAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[["impl<const P: u64> SubAssign for Fp<P>"],["impl<const P: u64> SubAssign<&Fp<P>> for Fp<P>"]]],["rational",[["impl<T: Signed> SubAssign for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[841,409]} \ No newline at end of file diff --git a/trait.impl/core/ops/bit/trait.BitAndAssign.js b/trait.impl/core/ops/bit/trait.BitAndAssign.js deleted file mode 100644 index e267435c..00000000 --- a/trait.impl/core/ops/bit/trait.BitAndAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl BitAndAssign<&BitVec> for BitVec"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[393]} \ No newline at end of file diff --git a/trait.impl/core/ops/bit/trait.BitOrAssign.js b/trait.impl/core/ops/bit/trait.BitOrAssign.js deleted file mode 100644 index 615a8bcd..00000000 --- a/trait.impl/core/ops/bit/trait.BitOrAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl BitOrAssign<&BitVec> for BitVec"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[390]} \ No newline at end of file diff --git a/trait.impl/core/ops/bit/trait.BitXorAssign.js b/trait.impl/core/ops/bit/trait.BitXorAssign.js deleted file mode 100644 index 2cf989f9..00000000 --- a/trait.impl/core/ops/bit/trait.BitXorAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl BitXorAssign<&BitVec> for BitVec"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[393]} \ No newline at end of file diff --git a/trait.impl/core/ops/bit/trait.ShlAssign.js b/trait.impl/core/ops/bit/trait.ShlAssign.js deleted file mode 100644 index 54742d9d..00000000 --- a/trait.impl/core/ops/bit/trait.ShlAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl ShlAssign<i128> for BitVec"],["impl ShlAssign<i16> for BitVec"],["impl ShlAssign<i32> for BitVec"],["impl ShlAssign<i64> for BitVec"],["impl ShlAssign<i8> for BitVec"],["impl ShlAssign<isize> for BitVec"],["impl ShlAssign<u128> for BitVec"],["impl ShlAssign<u16> for BitVec"],["impl ShlAssign<u32> for BitVec"],["impl ShlAssign<u64> for BitVec"],["impl ShlAssign<u8> for BitVec"],["impl ShlAssign<usize> for BitVec"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[4400]} \ No newline at end of file diff --git a/trait.impl/core/ops/bit/trait.ShrAssign.js b/trait.impl/core/ops/bit/trait.ShrAssign.js deleted file mode 100644 index fa580a7f..00000000 --- a/trait.impl/core/ops/bit/trait.ShrAssign.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["bitvec",[["impl ShrAssign<i128> for BitVec"],["impl ShrAssign<i16> for BitVec"],["impl ShrAssign<i32> for BitVec"],["impl ShrAssign<i64> for BitVec"],["impl ShrAssign<i8> for BitVec"],["impl ShrAssign<isize> for BitVec"],["impl ShrAssign<u128> for BitVec"],["impl ShrAssign<u16> for BitVec"],["impl ShrAssign<u32> for BitVec"],["impl ShrAssign<u64> for BitVec"],["impl ShrAssign<u8> for BitVec"],["impl ShrAssign<usize> for BitVec"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[4400]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.Deref.js b/trait.impl/core/ops/deref/trait.Deref.js deleted file mode 100644 index fa6074f1..00000000 --- a/trait.impl/core/ops/deref/trait.Deref.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["segtree",[["impl<'a, O: Op> Deref for Dense2dEntry<'a, O>"],["impl<'a, O: Op> Deref for Entry<'a, O>"]]],["splay_tree",[["impl<O: LazyOps> Deref for Entry<'_, O>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[764,405]} \ No newline at end of file diff --git a/trait.impl/core/ops/deref/trait.DerefMut.js b/trait.impl/core/ops/deref/trait.DerefMut.js deleted file mode 100644 index c2ab66a4..00000000 --- a/trait.impl/core/ops/deref/trait.DerefMut.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["segtree",[["impl<'a, O: Op> DerefMut for Dense2dEntry<'a, O>"],["impl<'a, O: Op> DerefMut for Entry<'a, O>"]]],["splay_tree",[["impl<O: LazyOps> DerefMut for Entry<'_, O>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[782,414]} \ No newline at end of file diff --git a/trait.impl/core/ops/drop/trait.Drop.js b/trait.impl/core/ops/drop/trait.Drop.js deleted file mode 100644 index c9a721e2..00000000 --- a/trait.impl/core/ops/drop/trait.Drop.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["segtree",[["impl<'a, O: Op> Drop for Dense2dEntry<'a, O>"],["impl<'a, O: Op> Drop for Entry<'a, O>"]]],["splay_tree",[["impl<O: LazyOps> Drop for SplayTree<O>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[754,408]} \ No newline at end of file diff --git a/trait.impl/core/ops/index/trait.Index.js b/trait.impl/core/ops/index/trait.Index.js deleted file mode 100644 index b4c0b117..00000000 --- a/trait.impl/core/ops/index/trait.Index.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["avl_tree",[["impl<T> Index<usize> for AvlTree<T>"]]],["fp",[["impl<const P: u64> Index<usize> for Factorial<P>"]]],["segtree",[["impl<K: Ord, L: Ord, O: Op> Index<(K, L)> for Sparse2dSegtree<K, L, O>"],["impl<K: Ord, L: Ord, O: Op> Index<K> for Sparse2dSegtree<K, L, O>"],["impl<K: Ord, O: Op> Index<K> for SegtreeWithCompression<K, O>"],["impl<O: Op> Index<usize> for Dense2dSegtree<O>"],["impl<O: Op> Index<usize> for Segtree<O>"]]],["sparse_table",[["impl<O: Op> Index<usize> for SparseTable<O>"]]],["splay_tree",[["impl<O: LazyOps> Index<usize> for SplayTree<O>"]]],["swag",[["impl<O: Op> Index<usize> for DequeueSwag<O>"]]],["veb",[["impl<V> Index<usize> for VebMap<V>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[400,492,2938,521,520,481,383]} \ No newline at end of file diff --git a/trait.impl/core/ops/index/trait.IndexMut.js b/trait.impl/core/ops/index/trait.IndexMut.js deleted file mode 100644 index b6be2034..00000000 --- a/trait.impl/core/ops/index/trait.IndexMut.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["veb",[["impl<V> IndexMut<usize> for VebMap<V>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[391]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js deleted file mode 100644 index 40a6b6b9..00000000 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> RefUnwindSafe for Skipped<'a, T, F, I>
    where\n T: RefUnwindSafe,\n F: RefUnwindSafe,\n I: RefUnwindSafe,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> RefUnwindSafe for Iter<'a, T>
    where\n T: RefUnwindSafe,
    ",1,["avl_tree::Iter"]],["impl<T> RefUnwindSafe for AvlTree<T>
    where\n T: RefUnwindSafe,
    ",1,["avl_tree::AvlTree"]],["impl<T> RefUnwindSafe for IntoIter<T>
    where\n T: RefUnwindSafe,
    ",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl RefUnwindSafe for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> RefUnwindSafe for Combinations<T>
    where\n T: RefUnwindSafe,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> RefUnwindSafe for Subsets<T>
    where\n T: RefUnwindSafe,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl RefUnwindSafe for BitVec",1,["bitvec::BitVec"]],["impl<'a> RefUnwindSafe for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> RefUnwindSafe for Bsgs<T, Mul>
    where\n T: RefUnwindSafe,\n Mul: RefUnwindSafe,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl RefUnwindSafe for Concave",1,["cht::Concave"]],["impl RefUnwindSafe for Convex",1,["cht::Convex"]],["impl RefUnwindSafe for Quadratic",1,["cht::Quadratic"]],["impl<C> RefUnwindSafe for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> RefUnwindSafe for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl RefUnwindSafe for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> RefUnwindSafe for Dinic<T>
    where\n T: RefUnwindSafe,
    ",1,["dinic::Dinic"]],["impl<T> RefUnwindSafe for Edge<T>
    where\n T: RefUnwindSafe,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> RefUnwindSafe for DualSegtree<O>
    where\n <O as Ops>::Value: RefUnwindSafe,
    ",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl RefUnwindSafe for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl RefUnwindSafe for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> RefUnwindSafe for PrimeNumbers<'a, S, T>
    where\n T: RefUnwindSafe,\n <S as SieveKind>::SieveValue: RefUnwindSafe,
    ",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> RefUnwindSafe for PrimeFactorsByLookup<'a, T>
    where\n T: RefUnwindSafe,
    ",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> RefUnwindSafe for PrimeFactorsByTrialDivision<'a, T>
    where\n T: RefUnwindSafe,
    ",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> RefUnwindSafe for Rle<T, P>
    where\n P: RefUnwindSafe,\n T: RefUnwindSafe,
    ",1,["erato::converters::Rle"]],["impl<T, P> RefUnwindSafe for Unique<T, P>
    where\n P: RefUnwindSafe,\n T: RefUnwindSafe,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> RefUnwindSafe for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> RefUnwindSafe for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl RefUnwindSafe for Gco",1,["gco::Gco"]],["impl RefUnwindSafe for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl RefUnwindSafe for Grid0",1,["gridnei::Grid0"]],["impl RefUnwindSafe for Grid1",1,["gridnei::Grid1"]],["impl RefUnwindSafe for Grid2",1,["gridnei::Grid2"]],["impl RefUnwindSafe for Grid3",1,["gridnei::Grid3"]],["impl RefUnwindSafe for Grid4",1,["gridnei::Grid4"]],["impl RefUnwindSafe for Grid5",1,["gridnei::Grid5"]],["impl RefUnwindSafe for Grid6",1,["gridnei::Grid6"]],["impl RefUnwindSafe for Grid7",1,["gridnei::Grid7"]],["impl RefUnwindSafe for Grid8",1,["gridnei::Grid8"]],["impl<I> RefUnwindSafe for Encode<I>
    where\n I: RefUnwindSafe,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl RefUnwindSafe for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl RefUnwindSafe for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl RefUnwindSafe for Nop",1,["heap_tricks::Nop"]],["impl<T> RefUnwindSafe for RemovableHeap<T>
    where\n T: RefUnwindSafe,
    ",1,["heap_tricks::RemovableHeap"]],["impl<T> RefUnwindSafe for Sum<T>
    where\n T: RefUnwindSafe,
    ",1,["heap_tricks::Sum"]],["impl<T, H> RefUnwindSafe for DoubleHeap<T, H>
    where\n H: RefUnwindSafe,\n T: RefUnwindSafe,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl RefUnwindSafe for Hld",1,["hld::Hld"]],["impl<'a> RefUnwindSafe for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl RefUnwindSafe for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> RefUnwindSafe for HungarianResult<T>
    where\n T: RefUnwindSafe,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> RefUnwindSafe for IntervalHeap<T>
    where\n T: RefUnwindSafe,
    ",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> RefUnwindSafe for LazySegtree<O>
    where\n <O as Op>::Value: RefUnwindSafe,\n <O as Op>::Operator: RefUnwindSafe,
    ",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> RefUnwindSafe for Interval<T>
    where\n T: RefUnwindSafe,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> RefUnwindSafe for LinkCutTreeBase<O>
    where\n <O as OpBase>::InternalValue: RefUnwindSafe,
    ",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl RefUnwindSafe for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl RefUnwindSafe for Edge",1,["mincost_flow::Edge"]],["impl RefUnwindSafe for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl RefUnwindSafe for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> RefUnwindSafe for RadixHeap<T>
    where\n T: RefUnwindSafe,
    ",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl RefUnwindSafe for DistinctTwo",1,["randtools::DistinctTwo"]],["impl RefUnwindSafe for LogUniform",1,["randtools::LogUniform"]],["impl RefUnwindSafe for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl RefUnwindSafe for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl RefUnwindSafe for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl RefUnwindSafe for SimpleGraph",1,["randtools::SimpleGraph"]],["impl RefUnwindSafe for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl RefUnwindSafe for SubRange",1,["randtools::SubRange"]],["impl RefUnwindSafe for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> RefUnwindSafe for Rational<T>
    where\n T: RefUnwindSafe,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> RefUnwindSafe for Multiset<K>
    where\n K: RefUnwindSafe,
    ",1,["rb::map::Multiset"]],["impl<K, O> RefUnwindSafe for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> RefUnwindSafe for Multimap<K, V>
    where\n K: RefUnwindSafe,\n V: RefUnwindSafe,
    ",1,["rb::map::Multimap"]],["impl<O> RefUnwindSafe for Seg<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> RefUnwindSafe for Iter<'a, T, O>
    where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,
    ",1,["rbtree::Iter"]],["impl<T> RefUnwindSafe for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> RefUnwindSafe for RbTree<T, O>
    where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl RefUnwindSafe for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> !RefUnwindSafe for Segbeats<T>",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> RefUnwindSafe for Dense2dEntry<'a, O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::Dense2dEntry"]],["impl<'a, O> RefUnwindSafe for Entry<'a, O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::Entry"]],["impl<K, L, O> RefUnwindSafe for Sparse2dSegtree<K, L, O>
    where\n K: RefUnwindSafe,\n L: RefUnwindSafe,\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::Sparse2dSegtree"]],["impl<K, O> RefUnwindSafe for SegtreeWithCompression<K, O>
    where\n K: RefUnwindSafe,\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::SegtreeWithCompression"]],["impl<O> RefUnwindSafe for Dense2dSegtree<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::Dense2dSegtree"]],["impl<O> RefUnwindSafe for Segtree<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> RefUnwindSafe for SkewHeap<T>
    where\n T: RefUnwindSafe,
    ",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl RefUnwindSafe for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> RefUnwindSafe for SparseTable<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["sparse_table::SparseTable"]],["impl<O> RefUnwindSafe for SparseTable2d<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> !RefUnwindSafe for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> !RefUnwindSafe for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> !RefUnwindSafe for SplayTree<O>",1,["splay_tree::SplayTree"]],["impl<O> RefUnwindSafe for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<T> RefUnwindSafe for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> RefUnwindSafe for SuffixSum<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["suffix_sum::SuffixSum"]],["impl<O> RefUnwindSafe for SuffixSum2d<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> RefUnwindSafe for DequeueSwag<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> RefUnwindSafe for TwoWayTreeFoldResult<T>
    where\n T: RefUnwindSafe,
    ",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> RefUnwindSafe for Divisors<T>
    where\n T: RefUnwindSafe,
    ",1,["trial::divisors::Divisors"]],["impl<T> RefUnwindSafe for PrimeFactors<T>
    where\n T: RefUnwindSafe,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> RefUnwindSafe for PrimeFactorsRle<T>
    where\n T: RefUnwindSafe,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl RefUnwindSafe for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> RefUnwindSafe for TrieMap<V>
    where\n V: RefUnwindSafe,
    ",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl RefUnwindSafe for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl RefUnwindSafe for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> RefUnwindSafe for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl RefUnwindSafe for EdgeCount",1,["union_find::EdgeCount"]],["impl RefUnwindSafe for HasCycle",1,["union_find::HasCycle"]],["impl RefUnwindSafe for VertexCount",1,["union_find::VertexCount"]],["impl<O> RefUnwindSafe for UnionFind<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["union_find::UnionFind"]]]],["veb",[["impl RefUnwindSafe for VebSet",1,["veb::VebSet"]],["impl<V> RefUnwindSafe for VebMap<V>
    where\n V: RefUnwindSafe,
    ",1,["veb::VebMap"]]]],["vec_lines",[["impl RefUnwindSafe for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl RefUnwindSafe for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> RefUnwindSafe for Line<T>
    where\n T: RefUnwindSafe,
    ",1,["vec_lines::Line"]],["impl<T, C> RefUnwindSafe for VecLines<T, C>
    where\n T: RefUnwindSafe,
    ",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl RefUnwindSafe for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl RefUnwindSafe for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> RefUnwindSafe for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> RefUnwindSafe for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[973,1716,318,1192,655,758,1588,1424,860,4291,864,622,3400,749,2282,654,360,618,622,383,1297,586,673,340,697,516,598,3144,586,3498,2290,304,363,387,5466,590,372,1699,1749,1653,791,638,1782,899,332,717,1834,858,1854,1481]} \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index 834562db..00000000 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["accum",[["impl<'a, T, F, I> UnwindSafe for Skipped<'a, T, F, I>
    where\n T: UnwindSafe + RefUnwindSafe,\n F: UnwindSafe,\n I: UnwindSafe,
    ",1,["accum::Skipped"]]]],["avl_tree",[["impl<'a, T> UnwindSafe for Iter<'a, T>
    where\n T: RefUnwindSafe,
    ",1,["avl_tree::Iter"]],["impl<T> UnwindSafe for AvlTree<T>
    where\n T: UnwindSafe,
    ",1,["avl_tree::AvlTree"]],["impl<T> UnwindSafe for IntoIter<T>
    where\n T: UnwindSafe,
    ",1,["avl_tree::IntoIter"]]]],["bfs01",[["impl UnwindSafe for Weight",1,["bfs01::Weight"]]]],["bitutils",[["impl<T> UnwindSafe for Combinations<T>
    where\n T: UnwindSafe,
    ",1,["bitutils::combinations::Combinations"]],["impl<T> UnwindSafe for Subsets<T>
    where\n T: UnwindSafe,
    ",1,["bitutils::subsets::Subsets"]]]],["bitvec",[["impl UnwindSafe for BitVec",1,["bitvec::BitVec"]],["impl<'a> UnwindSafe for Iter<'a>",1,["bitvec::Iter"]]]],["bsgs",[["impl<T, Mul> UnwindSafe for Bsgs<T, Mul>
    where\n T: UnwindSafe,\n Mul: UnwindSafe,
    ",1,["bsgs::Bsgs"]]]],["cht",[["impl UnwindSafe for Concave",1,["cht::Concave"]],["impl UnwindSafe for Convex",1,["cht::Convex"]],["impl UnwindSafe for Quadratic",1,["cht::Quadratic"]],["impl<C> UnwindSafe for BTreeCht<C>",1,["cht::BTreeCht"]],["impl<C> UnwindSafe for VecCht<C>",1,["cht::VecCht"]]]],["dinic",[["impl UnwindSafe for EdgeKey",1,["dinic::EdgeKey"]],["impl<T> UnwindSafe for Dinic<T>
    where\n T: UnwindSafe,
    ",1,["dinic::Dinic"]],["impl<T> UnwindSafe for Edge<T>
    where\n T: UnwindSafe,
    ",1,["dinic::Edge"]]]],["dual_segtree",[["impl<O> UnwindSafe for DualSegtree<O>
    where\n <O as Ops>::Value: UnwindSafe,
    ",1,["dual_segtree::DualSegtree"]]]],["erato",[["impl UnwindSafe for LpdSieve",1,["erato::lpd_sieve::LpdSieve"]],["impl UnwindSafe for Sieve",1,["erato::sieve::Sieve"]],["impl<'a, S, T> !UnwindSafe for PrimeNumbers<'a, S, T>",1,["erato::sieve_base::PrimeNumbers"]],["impl<'a, T> !UnwindSafe for PrimeFactorsByLookup<'a, T>",1,["erato::sieve_base::PrimeFactorsByLookup"]],["impl<'a, T> !UnwindSafe for PrimeFactorsByTrialDivision<'a, T>",1,["erato::sieve_base::PrimeFactorsByTrialDivision"]],["impl<T, P> UnwindSafe for Rle<T, P>
    where\n P: UnwindSafe,\n T: UnwindSafe,
    ",1,["erato::converters::Rle"]],["impl<T, P> UnwindSafe for Unique<T, P>
    where\n P: UnwindSafe,\n T: UnwindSafe,
    ",1,["erato::converters::Unique"]]]],["fp",[["impl<const P: u64> UnwindSafe for Factorial<P>",1,["fp::factorial::Factorial"]],["impl<const P: u64> UnwindSafe for Fp<P>",1,["fp::Fp"]]]],["gco",[["impl UnwindSafe for Gco",1,["gco::Gco"]],["impl UnwindSafe for GcoResult",1,["gco::GcoResult"]]]],["gridnei",[["impl UnwindSafe for Grid0",1,["gridnei::Grid0"]],["impl UnwindSafe for Grid1",1,["gridnei::Grid1"]],["impl UnwindSafe for Grid2",1,["gridnei::Grid2"]],["impl UnwindSafe for Grid3",1,["gridnei::Grid3"]],["impl UnwindSafe for Grid4",1,["gridnei::Grid4"]],["impl UnwindSafe for Grid5",1,["gridnei::Grid5"]],["impl UnwindSafe for Grid6",1,["gridnei::Grid6"]],["impl UnwindSafe for Grid7",1,["gridnei::Grid7"]],["impl UnwindSafe for Grid8",1,["gridnei::Grid8"]],["impl<I> UnwindSafe for Encode<I>
    where\n I: UnwindSafe,
    ",1,["gridnei::Encode"]]]],["heap_slope_trick",[["impl UnwindSafe for HeapSlopeTrick",1,["heap_slope_trick::HeapSlopeTrick"]],["impl UnwindSafe for Summary",1,["heap_slope_trick::Summary"]]]],["heap_tricks",[["impl UnwindSafe for Nop",1,["heap_tricks::Nop"]],["impl<T> UnwindSafe for RemovableHeap<T>
    where\n T: UnwindSafe,
    ",1,["heap_tricks::RemovableHeap"]],["impl<T> UnwindSafe for Sum<T>
    where\n T: UnwindSafe,
    ",1,["heap_tricks::Sum"]],["impl<T, H> UnwindSafe for DoubleHeap<T, H>
    where\n H: UnwindSafe,\n T: UnwindSafe,
    ",1,["heap_tricks::DoubleHeap"]]]],["hld",[["impl UnwindSafe for Hld",1,["hld::Hld"]],["impl<'a> UnwindSafe for PathSegments<'a>",1,["hld::PathSegments"]]]],["hopkarp",[["impl UnwindSafe for HopkarpResult",1,["hopkarp::HopkarpResult"]]]],["hungarian",[["impl<T> UnwindSafe for HungarianResult<T>
    where\n T: UnwindSafe,
    ",1,["hungarian::HungarianResult"]]]],["interval_heap",[["impl<T> UnwindSafe for IntervalHeap<T>
    where\n T: UnwindSafe,
    ",1,["interval_heap::IntervalHeap"]]]],["lazy_segbeats",[["impl<T> UnwindSafe for Segbeats<T>
    where\n T: UnwindSafe,
    ",1,["lazy_segbeats::Segbeats"]]]],["lazy_segtree",[["impl<O> UnwindSafe for LazySegtree<O>
    where\n <O as Op>::Value: UnwindSafe,\n <O as Op>::Operator: UnwindSafe,
    ",1,["lazy_segtree::LazySegtree"]]]],["lin_ineq",[["impl<T> UnwindSafe for Interval<T>
    where\n T: UnwindSafe,
    ",1,["lin_ineq::Interval"]]]],["link_cut_tree",[["impl<O> UnwindSafe for LinkCutTreeBase<O>
    where\n <O as OpBase>::InternalValue: UnwindSafe + RefUnwindSafe,
    ",1,["link_cut_tree::base::LinkCutTreeBase"]]]],["low_link",[["impl UnwindSafe for LowLink",1,["low_link::LowLink"]]]],["mincost_flow",[["impl UnwindSafe for Edge",1,["mincost_flow::Edge"]],["impl UnwindSafe for MinCostFlow",1,["mincost_flow::MinCostFlow"]]]],["partially_persistent_union_find",[["impl UnwindSafe for PartiallyPersistentUnionFind",1,["partially_persistent_union_find::PartiallyPersistentUnionFind"]]]],["radix_heap",[["impl<T> UnwindSafe for RadixHeap<T>
    where\n T: UnwindSafe,
    ",1,["radix_heap::RadixHeap"]]]],["randtools",[["impl UnwindSafe for DistinctTwo",1,["randtools::DistinctTwo"]],["impl UnwindSafe for LogUniform",1,["randtools::LogUniform"]],["impl UnwindSafe for NonEmptySubRange",1,["randtools::NonEmptySubRange"]],["impl UnwindSafe for SimpleDigraph",1,["randtools::SimpleDigraph"]],["impl UnwindSafe for SimpleDigraphEdges",1,["randtools::SimpleDigraphEdges"]],["impl UnwindSafe for SimpleGraph",1,["randtools::SimpleGraph"]],["impl UnwindSafe for SimpleGraphEdges",1,["randtools::SimpleGraphEdges"]],["impl UnwindSafe for SubRange",1,["randtools::SubRange"]],["impl UnwindSafe for Tree",1,["randtools::Tree"]]]],["rational",[["impl<T> UnwindSafe for Rational<T>
    where\n T: UnwindSafe,
    ",1,["rational::Rational"]]]],["rb",[["impl<K> UnwindSafe for Multiset<K>
    where\n K: RefUnwindSafe,
    ",1,["rb::map::Multiset"]],["impl<K, O> UnwindSafe for MultimapSeg<K, O>",1,["rb::map::MultimapSeg"]],["impl<K, V> UnwindSafe for Multimap<K, V>
    where\n K: RefUnwindSafe,\n V: RefUnwindSafe,
    ",1,["rb::map::Multimap"]],["impl<O> UnwindSafe for Seg<O>
    where\n <O as Op>::Value: RefUnwindSafe,
    ",1,["rb::seq::Seg"]]]],["rbtree",[["impl<'a, T, O> UnwindSafe for Iter<'a, T, O>
    where\n T: RefUnwindSafe,\n <O as Op>::Summary: RefUnwindSafe,
    ",1,["rbtree::Iter"]],["impl<T> UnwindSafe for Nop<T>",1,["rbtree::Nop"]],["impl<T, O> UnwindSafe for RbTree<T, O>
    where\n T: UnwindSafe,\n <O as Op>::Summary: UnwindSafe,
    ",1,["rbtree::RbTree"]]]],["scc",[["impl UnwindSafe for Scc",1,["scc::Scc"]]]],["segbeats",[["impl<T> UnwindSafe for Segbeats<T>
    where\n T: UnwindSafe,
    ",1,["segbeats::Segbeats"]]]],["segbeats_task3",[["impl<T> UnwindSafe for Segbeats<T>
    where\n T: UnwindSafe,
    ",1,["segbeats_task3::Segbeats"]]]],["segtree",[["impl<'a, O> !UnwindSafe for Dense2dEntry<'a, O>",1,["segtree::Dense2dEntry"]],["impl<'a, O> !UnwindSafe for Entry<'a, O>",1,["segtree::Entry"]],["impl<K, L, O> UnwindSafe for Sparse2dSegtree<K, L, O>
    where\n K: UnwindSafe,\n L: UnwindSafe,\n <O as Op>::Value: UnwindSafe,
    ",1,["segtree::Sparse2dSegtree"]],["impl<K, O> UnwindSafe for SegtreeWithCompression<K, O>
    where\n K: UnwindSafe,\n <O as Op>::Value: UnwindSafe,
    ",1,["segtree::SegtreeWithCompression"]],["impl<O> UnwindSafe for Dense2dSegtree<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["segtree::Dense2dSegtree"]],["impl<O> UnwindSafe for Segtree<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["segtree::Segtree"]]]],["skew_heap",[["impl<T> UnwindSafe for SkewHeap<T>
    where\n T: UnwindSafe,
    ",1,["skew_heap::SkewHeap"]]]],["snippetter",[["impl UnwindSafe for CrateMetadata",1,["snippetter::CrateMetadata"]]]],["sparse_table",[["impl<O> UnwindSafe for SparseTable<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["sparse_table::SparseTable"]],["impl<O> UnwindSafe for SparseTable2d<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["sparse_table::SparseTable2d"]]]],["splay_tree",[["impl<'a, O> !UnwindSafe for Entry<'a, O>",1,["splay_tree::Entry"]],["impl<'a, O> !UnwindSafe for Iter<'a, O>",1,["splay_tree::Iter"]],["impl<O> UnwindSafe for NoLazy<O>",1,["splay_tree::NoLazy"]],["impl<O> UnwindSafe for SplayTree<O>
    where\n <O as LazyOps>::Value: RefUnwindSafe,\n <O as LazyOps>::Acc: RefUnwindSafe,\n <O as LazyOps>::Lazy: RefUnwindSafe,
    ",1,["splay_tree::SplayTree"]],["impl<T> UnwindSafe for Nop<T>",1,["splay_tree::Nop"]]]],["suffix_sum",[["impl<O> UnwindSafe for SuffixSum<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["suffix_sum::SuffixSum"]],["impl<O> UnwindSafe for SuffixSum2d<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["suffix_sum::SuffixSum2d"]]]],["swag",[["impl<O> UnwindSafe for DequeueSwag<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["swag::DequeueSwag"]]]],["tree_fold",[["impl<T> UnwindSafe for TwoWayTreeFoldResult<T>
    where\n T: UnwindSafe,
    ",1,["tree_fold::TwoWayTreeFoldResult"]]]],["trial",[["impl<T> UnwindSafe for Divisors<T>
    where\n T: UnwindSafe,
    ",1,["trial::divisors::Divisors"]],["impl<T> UnwindSafe for PrimeFactors<T>
    where\n T: UnwindSafe,
    ",1,["trial::prime_factors::PrimeFactors"]],["impl<T> UnwindSafe for PrimeFactorsRle<T>
    where\n T: UnwindSafe,
    ",1,["trial::prime_factors::PrimeFactorsRle"]]]],["trie",[["impl UnwindSafe for TrieSet",1,["trie::trie_set::TrieSet"]],["impl<V> UnwindSafe for TrieMap<V>
    where\n V: UnwindSafe,
    ",1,["trie::trie_map::TrieMap"]]]],["two_sat",[["impl UnwindSafe for TwoSat",1,["two_sat::TwoSat"]]]],["uf_checklist",[["impl UnwindSafe for UfChecklist",1,["uf_checklist::UfChecklist"]],["impl<'a> !UnwindSafe for Iter<'a>",1,["uf_checklist::Iter"]]]],["union_find",[["impl UnwindSafe for EdgeCount",1,["union_find::EdgeCount"]],["impl UnwindSafe for HasCycle",1,["union_find::HasCycle"]],["impl UnwindSafe for VertexCount",1,["union_find::VertexCount"]],["impl<O> UnwindSafe for UnionFind<O>
    where\n <O as Op>::Value: UnwindSafe,
    ",1,["union_find::UnionFind"]]]],["veb",[["impl UnwindSafe for VebSet",1,["veb::VebSet"]],["impl<V> UnwindSafe for VebMap<V>
    where\n V: UnwindSafe,
    ",1,["veb::VebMap"]]]],["vec_lines",[["impl UnwindSafe for DecreasingTilt",1,["vec_lines::DecreasingTilt"]],["impl UnwindSafe for IncreasingTilt",1,["vec_lines::IncreasingTilt"]],["impl<T> UnwindSafe for Line<T>
    where\n T: UnwindSafe,
    ",1,["vec_lines::Line"]],["impl<T, C> UnwindSafe for VecLines<T, C>
    where\n T: UnwindSafe,
    ",1,["vec_lines::VecLines"]]]],["wavelet_matrix",[["impl UnwindSafe for StaticBitVec",1,["wavelet_matrix::StaticBitVec"]],["impl UnwindSafe for WaveletMatrix",1,["wavelet_matrix::WaveletMatrix"]],["impl<'a> UnwindSafe for SpanInNode<'a>",1,["wavelet_matrix::SpanInNode"]],["impl<'a> UnwindSafe for Spans<'a>",1,["wavelet_matrix::Spans"]]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[1122,1671,309,1156,637,731,1543,1379,842,3298,846,604,3301,731,2210,636,351,600,604,588,1270,568,840,331,679,507,580,3063,568,3462,2245,295,568,592,4461,572,363,1663,3076,1617,773,620,1728,872,323,700,1789,831,1800,1445]} \ No newline at end of file diff --git a/trait.impl/core/str/traits/trait.FromStr.js b/trait.impl/core/str/traits/trait.FromStr.js deleted file mode 100644 index 80578b06..00000000 --- a/trait.impl/core/str/traits/trait.FromStr.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["rational",[["impl<T: Signed> FromStr for Rational<T>"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[404]} \ No newline at end of file diff --git a/trait.impl/dinic/trait.Value.js b/trait.impl/dinic/trait.Value.js deleted file mode 100644 index c3358636..00000000 --- a/trait.impl/dinic/trait.Value.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["dinic",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/erato/converters/trait.PrimeFactors.js b/trait.impl/erato/converters/trait.PrimeFactors.js deleted file mode 100644 index bb5dd457..00000000 --- a/trait.impl/erato/converters/trait.PrimeFactors.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["erato",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/erato/int/trait.Int.js b/trait.impl/erato/int/trait.Int.js deleted file mode 100644 index bb5dd457..00000000 --- a/trait.impl/erato/int/trait.Int.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["erato",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/euclid/trait.Int.js b/trait.impl/euclid/trait.Int.js deleted file mode 100644 index d8c15a19..00000000 --- a/trait.impl/euclid/trait.Int.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["euclid",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[13]} \ No newline at end of file diff --git a/trait.impl/euclid/trait.Signed.js b/trait.impl/euclid/trait.Signed.js deleted file mode 100644 index d8c15a19..00000000 --- a/trait.impl/euclid/trait.Signed.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["euclid",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[13]} \ No newline at end of file diff --git a/trait.impl/euclid/trait.Unsigned.js b/trait.impl/euclid/trait.Unsigned.js deleted file mode 100644 index d8c15a19..00000000 --- a/trait.impl/euclid/trait.Unsigned.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["euclid",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[13]} \ No newline at end of file diff --git a/trait.impl/fp/trait.PrimitiveRoot.js b/trait.impl/fp/trait.PrimitiveRoot.js deleted file mode 100644 index 23632107..00000000 --- a/trait.impl/fp/trait.PrimitiveRoot.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["fp",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[9]} \ No newline at end of file diff --git a/trait.impl/gridnei/trait.GridIterator.js b/trait.impl/gridnei/trait.GridIterator.js deleted file mode 100644 index 46249865..00000000 --- a/trait.impl/gridnei/trait.GridIterator.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["gridnei",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[14]} \ No newline at end of file diff --git a/trait.impl/gss/trait.Float.js b/trait.impl/gss/trait.Float.js deleted file mode 100644 index ea9aa54a..00000000 --- a/trait.impl/gss/trait.Float.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["gss",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/gss/trait.Golden.js b/trait.impl/gss/trait.Golden.js deleted file mode 100644 index ea9aa54a..00000000 --- a/trait.impl/gss/trait.Golden.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["gss",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/gss/trait.Int.js b/trait.impl/gss/trait.Int.js deleted file mode 100644 index ea9aa54a..00000000 --- a/trait.impl/gss/trait.Int.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["gss",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[10]} \ No newline at end of file diff --git a/trait.impl/heap_tricks/trait.Handler.js b/trait.impl/heap_tricks/trait.Handler.js deleted file mode 100644 index c21e1e4c..00000000 --- a/trait.impl/heap_tricks/trait.Handler.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["heap_tricks",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[18]} \ No newline at end of file diff --git a/trait.impl/hungarian/trait.Value.js b/trait.impl/hungarian/trait.Value.js deleted file mode 100644 index aaf2b234..00000000 --- a/trait.impl/hungarian/trait.Value.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["hungarian",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[16]} \ No newline at end of file diff --git a/trait.impl/io/trait.ParseLine.js b/trait.impl/io/trait.ParseLine.js deleted file mode 100644 index 45f0a491..00000000 --- a/trait.impl/io/trait.ParseLine.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["io",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[9]} \ No newline at end of file diff --git a/trait.impl/lazy_segbeats/trait.Elm.js b/trait.impl/lazy_segbeats/trait.Elm.js deleted file mode 100644 index 23b62558..00000000 --- a/trait.impl/lazy_segbeats/trait.Elm.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["lazy_segbeats",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[20]} \ No newline at end of file diff --git a/trait.impl/lin_ineq/trait.Signed.js b/trait.impl/lin_ineq/trait.Signed.js deleted file mode 100644 index 1a380b1f..00000000 --- a/trait.impl/lin_ineq/trait.Signed.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["lin_ineq",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/numeric_search/trait.Float.js b/trait.impl/numeric_search/trait.Float.js deleted file mode 100644 index 2cd7a86d..00000000 --- a/trait.impl/numeric_search/trait.Float.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["numeric_search",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[21]} \ No newline at end of file diff --git a/trait.impl/numeric_search/trait.Signed.js b/trait.impl/numeric_search/trait.Signed.js deleted file mode 100644 index 2cd7a86d..00000000 --- a/trait.impl/numeric_search/trait.Signed.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["numeric_search",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[21]} \ No newline at end of file diff --git a/trait.impl/numeric_search/trait.Unsigned.js b/trait.impl/numeric_search/trait.Unsigned.js deleted file mode 100644 index 2cd7a86d..00000000 --- a/trait.impl/numeric_search/trait.Unsigned.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["numeric_search",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[21]} \ No newline at end of file diff --git a/trait.impl/rand/distributions/distribution/trait.Distribution.js b/trait.impl/rand/distributions/distribution/trait.Distribution.js deleted file mode 100644 index dbc41d8b..00000000 --- a/trait.impl/rand/distributions/distribution/trait.Distribution.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["randtools",[["impl Distribution<(usize, usize)> for DistinctTwo"],["impl Distribution<usize> for LogUniform"],["impl Distribution<Vec<(usize, usize)>> for SimpleDigraphEdges"],["impl Distribution<Vec<(usize, usize)>> for SimpleGraphEdges"],["impl Distribution<Vec<Vec<usize>>> for SimpleDigraph"],["impl Distribution<Vec<Vec<usize>>> for SimpleGraph"],["impl Distribution<Vec<Vec<usize>>> for Tree"],["impl Distribution<Range<usize>> for NonEmptySubRange"],["impl Distribution<Range<usize>> for SubRange"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[5693]} \ No newline at end of file diff --git a/trait.impl/rational/trait.Signed.js b/trait.impl/rational/trait.Signed.js deleted file mode 100644 index e98e8112..00000000 --- a/trait.impl/rational/trait.Signed.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["rational",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/rbtree/trait.Op.js b/trait.impl/rbtree/trait.Op.js deleted file mode 100644 index a96b1c0d..00000000 --- a/trait.impl/rbtree/trait.Op.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["rbtree",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[13]} \ No newline at end of file diff --git a/trait.impl/segbeats/trait.Elm.js b/trait.impl/segbeats/trait.Elm.js deleted file mode 100644 index 335f3caa..00000000 --- a/trait.impl/segbeats/trait.Elm.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["segbeats",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[15]} \ No newline at end of file diff --git a/trait.impl/segbeats_task3/trait.Elm.js b/trait.impl/segbeats_task3/trait.Elm.js deleted file mode 100644 index 6d5150ee..00000000 --- a/trait.impl/segbeats_task3/trait.Elm.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["segbeats_task3",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[21]} \ No newline at end of file diff --git a/trait.impl/serde/ser/trait.Serialize.js b/trait.impl/serde/ser/trait.Serialize.js deleted file mode 100644 index 24e4dafc..00000000 --- a/trait.impl/serde/ser/trait.Serialize.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["snippetter",[["impl Serialize for CrateMetadata"]]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[297]} \ No newline at end of file diff --git a/trait.impl/slicemore/trait.SliceMore.js b/trait.impl/slicemore/trait.SliceMore.js deleted file mode 100644 index 939d6aaf..00000000 --- a/trait.impl/slicemore/trait.SliceMore.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["slicemore",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[16]} \ No newline at end of file diff --git a/trait.impl/splay_tree/trait.LazyOps.js b/trait.impl/splay_tree/trait.LazyOps.js deleted file mode 100644 index 87503d71..00000000 --- a/trait.impl/splay_tree/trait.LazyOps.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["splay_tree",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[17]} \ No newline at end of file diff --git a/trait.impl/splay_tree/trait.Value.js b/trait.impl/splay_tree/trait.Value.js deleted file mode 100644 index 87503d71..00000000 --- a/trait.impl/splay_tree/trait.Value.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["splay_tree",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[17]} \ No newline at end of file diff --git a/trait.impl/trial/trait.Value.js b/trait.impl/trial/trait.Value.js deleted file mode 100644 index 78cf5c64..00000000 --- a/trait.impl/trial/trait.Value.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["trial",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[12]} \ No newline at end of file diff --git a/trait.impl/union_find/trait.Op.js b/trait.impl/union_find/trait.Op.js deleted file mode 100644 index 40f86a60..00000000 --- a/trait.impl/union_find/trait.Op.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["union_find",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[17]} \ No newline at end of file diff --git a/trait.impl/vec_lines/trait.Constraint.js b/trait.impl/vec_lines/trait.Constraint.js deleted file mode 100644 index d5947502..00000000 --- a/trait.impl/vec_lines/trait.Constraint.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["vec_lines",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[16]} \ No newline at end of file diff --git a/trait.impl/vec_lines/trait.Signed.js b/trait.impl/vec_lines/trait.Signed.js deleted file mode 100644 index d5947502..00000000 --- a/trait.impl/vec_lines/trait.Signed.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var implementors = Object.fromEntries([["vec_lines",[]]]); - if (window.register_implementors) { - window.register_implementors(implementors); - } else { - window.pending_implementors = implementors; - } -})() -//{"start":57,"fragment_lengths":[16]} \ No newline at end of file diff --git a/tree_fold/all.html b/tree_fold/all.html index 5d833c44..be8986f9 100644 --- a/tree_fold/all.html +++ b/tree_fold/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file +

    List of all items

    Structs

    Traits

    Functions

    \ No newline at end of file diff --git a/tree_fold/fn.two_way_tree_fold.html b/tree_fold/fn.two_way_tree_fold.html index 5c4248d2..21d4d262 100644 --- a/tree_fold/fn.two_way_tree_fold.html +++ b/tree_fold/fn.two_way_tree_fold.html @@ -1,4 +1,4 @@ -two_way_tree_fold in tree_fold - Rusttwo_way_tree_fold in tree_fold - Rust
    -

    Function tree_fold::two_way_tree_fold

    source ·
    pub fn two_way_tree_fold<O: Op>(
    -    o: &O,
    -    g: &[Vec<usize>],
    -    sorted: &[usize],
    +
    pub fn two_way_tree_fold<O: Op>(
    +    o: &O,
    +    g: &[Vec<usize>],
    +    sorted: &[usize]
     ) -> TwoWayTreeFoldResult<O::Value>
    Expand description

    Performs 2-way tree DP

    -

    §Operations

    +

    Operations

    graph-theoriticalgebraic
    graph-theoriticalgebraic
    up$F \times V \to T \to F$: join by a root$f \circ g$
    mul$F \times F \to F$: concatenate two forestsproduct of $M$
    identity$* \to F$: empty forestidentity of $M$
    -

    §Return value

    +

    Return value

    description
    diff --git a/tree_fold/index.html b/tree_fold/index.html index 546d6551..ba700208 100644 --- a/tree_fold/index.html +++ b/tree_fold/index.html @@ -1,4 +1,4 @@ -tree_fold - Rusttree_fold - Rust
    -

    Crate tree_fold

    source ·
    Expand description

    2-way tree DP

    -

    §Graph-theoritic notation

    +

    Crate tree_fold

    source ·
    Expand description

    2-way tree DP

    +

    Graph-theoritic notation

    • $V$: vertex type
    • $T$: (rooted) tree type
    • $F$: (rooted) forest type (with ordering of the trees)
    -

    §Algebraic notation

    +

    Algebraic notation

    $$ \phi(T_i^\triangle) = g\left( \prod_{j \lessdot i} f(T_j^\triangle) \right) $$

    -

    §Operations

    description
    upper$f(\phi(T_i^\triangle))$
    lower$\prod_{j \lessdot i} f(\phi(T_j^\blacktriangledown))$
    branch$f(\phi(T_i^\blacktriangledown))$
    +

    Operations

    graph-theoriticalgebraic
    graph-theoriticalgebraic
    up$F \times V \to T \to F$: join by a root$f \circ g$
    mul$F \times F \to F$: concatenate two forestsproduct of $M$
    identity$* \to F$: empty forestidentity of $M$
    -

    §Return value

    +

    Return value

    description
    description
    upper$f(\phi(T_i^\triangle))$
    lower$\prod_{j \lessdot i} f(\phi(T_j^\blacktriangledown))$
    branch$f(\phi(T_i^\blacktriangledown))$
    -

    Structs§

    Traits§

    • Operations

    Functions§

    \ No newline at end of file +

    Structs

    Traits

    • Operations

    Functions

    \ No newline at end of file diff --git a/tree_fold/struct.TwoWayTreeFoldResult.html b/tree_fold/struct.TwoWayTreeFoldResult.html index f30485f9..bf582a01 100644 --- a/tree_fold/struct.TwoWayTreeFoldResult.html +++ b/tree_fold/struct.TwoWayTreeFoldResult.html @@ -1,4 +1,4 @@ -TwoWayTreeFoldResult in tree_fold - RustTwoWayTreeFoldResult in tree_fold - Rust
    -

    Struct tree_fold::TwoWayTreeFoldResult

    source ·
    pub struct TwoWayTreeFoldResult<T> {
    -    pub upper: Vec<T>,
    -    pub lower: Vec<T>,
    -    pub branch: Vec<T>,
    +
    pub struct TwoWayTreeFoldResult<T> {
    +    pub upper: Vec<T>,
    +    pub lower: Vec<T>,
    +    pub branch: Vec<T>,
     }
    Expand description

    Fields§

    §upper: Vec<T>

    $f(\phi(T_i^\triangle))$

    -
    §lower: Vec<T>

    $\prod_{j \lessdot i} f(\phi(T_j^\blacktriangledown))$

    -
    §branch: Vec<T>

    $f(\phi(T_i^\blacktriangledown))$

    -

    Auto Trait Implementations§

    §

    impl<T> Freeze for TwoWayTreeFoldResult<T>

    §

    impl<T> RefUnwindSafe for TwoWayTreeFoldResult<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for TwoWayTreeFoldResult<T>
    where - T: Send,

    §

    impl<T> Sync for TwoWayTreeFoldResult<T>
    where - T: Sync,

    §

    impl<T> Unpin for TwoWayTreeFoldResult<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for TwoWayTreeFoldResult<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §upper: Vec<T>

    $f(\phi(T_i^\triangle))$

    +
    §lower: Vec<T>

    $\prod_{j \lessdot i} f(\phi(T_j^\blacktriangledown))$

    +
    §branch: Vec<T>

    $f(\phi(T_i^\blacktriangledown))$

    +

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for TwoWayTreeFoldResult<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for TwoWayTreeFoldResult<T>where + T: Send,

    §

    impl<T> Sync for TwoWayTreeFoldResult<T>where + T: Sync,

    §

    impl<T> Unpin for TwoWayTreeFoldResult<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for TwoWayTreeFoldResult<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/tree_fold/trait.Op.html b/tree_fold/trait.Op.html index 771c443b..11fe2ab5 100644 --- a/tree_fold/trait.Op.html +++ b/tree_fold/trait.Op.html @@ -1,4 +1,4 @@ -Op in tree_fold - RustOp in tree_fold - Rust
    -

    Trait tree_fold::Op

    source ·
    pub trait Op: Sized {
    -    type Value: Clone;
    +

    Trait tree_fold::Op

    source ·
    pub trait Op: Sized {
    +    type Value: Clone;
     
         // Required methods
    -    fn up(&self, value: &Self::Value, root: usize) -> Self::Value;
    +    fn up(&self, value: &Self::Value, root: usize) -> Self::Value;
         fn mul(&self, lhs: &Self::Value, rhs: &Self::Value) -> Self::Value;
         fn identity(&self) -> Self::Value;
     
         // Provided method
         fn two_way_tree_fold(
             &self,
    -        g: &[Vec<usize>],
    -        sorted: &[usize],
    +        g: &[Vec<usize>],
    +        sorted: &[usize]
         ) -> TwoWayTreeFoldResult<Self::Value> { ... }
    -}
    Expand description

    §Operations

    +}
    Expand description
    graph-theoriticalgebraic
    graph-theoriticalgebraic
    up$F \times V \to T \to F$: join by a root$f \circ g$
    mul$F \times F \to F$: concatenate two forestsproduct of $M$
    identity$* \to F$: empty forestidentity of $M$
    -

    §Return value

    +

    Return value

    description
    description
    upper$f(\phi(T_i^\triangle))$
    lower$\prod_{j \lessdot i} f(\phi(T_j^\blacktriangledown))$
    branch$f(\phi(T_i^\blacktriangledown))$
    -

    Required Associated Types§

    source

    type Value: Clone

    A monoid $M$.

    -

    Required Methods§

    source

    fn up(&self, value: &Self::Value, root: usize) -> Self::Value

    $F \times V \to T \to F$: join by a root

    -
    source

    fn mul(&self, lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    $F \times F \to F$: concatenate two forests

    -
    source

    fn identity(&self) -> Self::Value

    $* \to F$: empty forest

    -

    Provided Methods§

    Required Associated Types§

    source

    type Value: Clone

    A monoid $M$.

    +

    Required Methods§

    source

    fn up(&self, value: &Self::Value, root: usize) -> Self::Value

    $F \times V \to T \to F$: join by a root

    +
    source

    fn mul(&self, lhs: &Self::Value, rhs: &Self::Value) -> Self::Value

    $F \times F \to F$: concatenate two forests

    +
    source

    fn identity(&self) -> Self::Value

    $* \to F$: empty forest

    +

    Provided Methods§

    source

    fn two_way_tree_fold( &self, - g: &[Vec<usize>], - sorted: &[usize], + g: &[Vec<usize>], + sorted: &[usize] ) -> TwoWayTreeFoldResult<Self::Value>

    Performs 2-way tree DP

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/trial/all.html b/trial/all.html index a52fe4e9..c47c569c 100644 --- a/trial/all.html +++ b/trial/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/trial/fn.divisors.html b/trial/fn.divisors.html index a12d9c03..fcb18c09 100644 --- a/trial/fn.divisors.html +++ b/trial/fn.divisors.html @@ -1,4 +1,4 @@ -divisors in trial - Rustdivisors in trial - Rust
    -

    Function trial::divisors

    source ·
    pub fn divisors<T: Value>(n: T) -> Vec<T>
    Expand description

    Returns a Vec of the divisors. The divisors is guaranteed to be sorted in ascending order.

    -

    §Example

    +

    Function trial::divisors

    source ·
    pub fn divisors<T: Value>(n: T) -> Vec<T>
    Expand description

    Returns a Vec of the divisors. The divisors is guaranteed to be sorted in ascending order.

    +

    Example

    Basic usage:

    use trial::divisors;
    diff --git a/trial/fn.divisors_unordered.html b/trial/fn.divisors_unordered.html
    index e8c7173d..c3badd87 100644
    --- a/trial/fn.divisors_unordered.html
    +++ b/trial/fn.divisors_unordered.html
    @@ -1,4 +1,4 @@
    -divisors_unordered in trial - Rustdivisors_unordered in trial - Rust
    -

    Function trial::divisors_unordered

    source ·
    pub fn divisors_unordered<T: Value>(n: T) -> Divisors<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the divisors_unordered of it.

    -

    §Note

    +

    Function trial::divisors_unordered

    source ·
    pub fn divisors_unordered<T: Value>(n: T) -> Divisors<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the divisors_unordered of it.

    +

    Note

    The order of the return value is not necessarily ascending, but ordered in “alternating” order. (eg. 1, 36, 2, 18, 3, 12, 4, 9)

    -

    §Example

    +

    Example

    Basic usage:

    use trial::divisors_unordered;
    @@ -49,4 +49,4 @@ 

    §Example

    assert_eq!(iter.next(), Some(3)); assert_eq!(iter.next(), Some(4)); assert_eq!(iter.next(), None);
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/trial/fn.prime_factors.html b/trial/fn.prime_factors.html index 866a057c..5c44ba4c 100644 --- a/trial/fn.prime_factors.html +++ b/trial/fn.prime_factors.html @@ -1,4 +1,4 @@ -prime_factors in trial - Rustprime_factors in trial - Rust
    -

    Function trial::prime_factors

    source ·
    pub fn prime_factors<T: Value>(n: T) -> PrimeFactors<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the distinct prime factors.

    -

    §Example

    +

    Function trial::prime_factors

    source ·
    pub fn prime_factors<T: Value>(n: T) -> PrimeFactors<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the distinct prime factors.

    +

    Example

    Basic usage:

    use trial::prime_factors;
    @@ -43,4 +43,4 @@ 

    §Example

    assert_eq!(iter.next(), Some(3)); assert_eq!(iter.next(), Some(5)); assert_eq!(iter.next(), None);
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/trial/fn.prime_factors_rle.html b/trial/fn.prime_factors_rle.html index ffc457f5..0ae86fc1 100644 --- a/trial/fn.prime_factors_rle.html +++ b/trial/fn.prime_factors_rle.html @@ -1,4 +1,4 @@ -prime_factors_rle in trial - Rustprime_factors_rle in trial - Rust
    -

    Function trial::prime_factors_rle

    source ·
    pub fn prime_factors_rle<T: Value>(n: T) -> PrimeFactorsRle<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the pairs of a prime factor of +

    Function trial::prime_factors_rle

    source ·
    pub fn prime_factors_rle<T: Value>(n: T) -> PrimeFactorsRle<T> 
    Expand description

    Takes an unsigned integer and returns an iterator to yield all the pairs of a prime factor of it and the multiplicity of it, in ascending order.

    -

    §Example

    +

    Example

    Basic usage:

    use trial::prime_factors_rle;
    @@ -44,4 +44,4 @@ 

    §Example

    assert_eq!(iter.next(), Some((3, 1))); assert_eq!(iter.next(), Some((5, 1))); assert_eq!(iter.next(), None);
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/trial/index.html b/trial/index.html index 070dcc66..0327dd90 100644 --- a/trial/index.html +++ b/trial/index.html @@ -1,4 +1,4 @@ -trial - Rusttrial - Rust
    -

    Crate trial

    source ·
    Expand description

    Execute the trial-division algorithm.

    -

    §Items

    +

    Crate trial

    source ·
    Expand description

    Execute the trial-division algorithm.

    +

    Items

    • divisors: enumerate all the divisor of an integer.
    • prime_factors: enumerate all the prime divisor of an integer and the multiplicity of it.
    -

    Structs§

    Traits§

    • Abstraction of unsigned integers.

    Functions§

    • Returns a Vec of the divisors. The divisors is guaranteed to be sorted in ascending order.
    • Takes an unsigned integer and returns an iterator to yield all the divisors_unordered of it.
    • Takes an unsigned integer and returns an iterator to yield all the distinct prime factors.
    • Takes an unsigned integer and returns an iterator to yield all the pairs of a prime factor of +

    Structs

    Traits

    • Abstraction of unsigned integers.

    Functions

    • Returns a Vec of the divisors. The divisors is guaranteed to be sorted in ascending order.
    • Takes an unsigned integer and returns an iterator to yield all the divisors_unordered of it.
    • Takes an unsigned integer and returns an iterator to yield all the distinct prime factors.
    • Takes an unsigned integer and returns an iterator to yield all the pairs of a prime factor of it and the multiplicity of it, in ascending order.
    \ No newline at end of file diff --git a/trial/struct.Divisors.html b/trial/struct.Divisors.html index 4a80ab93..20994e3e 100644 --- a/trial/struct.Divisors.html +++ b/trial/struct.Divisors.html @@ -1,4 +1,4 @@ -Divisors in trial - RustDivisors in trial - Rust
    -

    Struct trial::Divisors

    source ·
    pub struct Divisors<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for Divisors<T>

    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct trial::Divisors

    source ·
    pub struct Divisors<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for Divisors<T>

    §

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<T> Freeze for Divisors<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for Divisors<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for Divisors<T>
    where - T: Send,

    §

    impl<T> Sync for Divisors<T>
    where - T: Sync,

    §

    impl<T> Unpin for Divisors<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Divisors<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Divisors<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for Divisors<T>where + T: Send,

    §

    impl<T> Sync for Divisors<T>where + T: Sync,

    §

    impl<T> Unpin for Divisors<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Divisors<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/trial/struct.PrimeFactors.html b/trial/struct.PrimeFactors.html index c5994221..b9720b52 100644 --- a/trial/struct.PrimeFactors.html +++ b/trial/struct.PrimeFactors.html @@ -1,4 +1,4 @@ -PrimeFactors in trial - RustPrimeFactors in trial - Rust
    -

    Struct trial::PrimeFactors

    source ·
    pub struct PrimeFactors<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for PrimeFactors<T>

    source§

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct trial::PrimeFactors

    source ·
    pub struct PrimeFactors<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for PrimeFactors<T>

    §

    type Item = T

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<T> Freeze for PrimeFactors<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for PrimeFactors<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for PrimeFactors<T>
    where - T: Send,

    §

    impl<T> Sync for PrimeFactors<T>
    where - T: Sync,

    §

    impl<T> Unpin for PrimeFactors<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for PrimeFactors<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for PrimeFactors<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for PrimeFactors<T>where + T: Send,

    §

    impl<T> Sync for PrimeFactors<T>where + T: Sync,

    §

    impl<T> Unpin for PrimeFactors<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for PrimeFactors<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/trial/struct.PrimeFactorsRle.html b/trial/struct.PrimeFactorsRle.html index 9b8b12bf..126629c3 100644 --- a/trial/struct.PrimeFactorsRle.html +++ b/trial/struct.PrimeFactorsRle.html @@ -1,4 +1,4 @@ -PrimeFactorsRle in trial - RustPrimeFactorsRle in trial - Rust
    -

    Struct trial::PrimeFactorsRle

    source ·
    pub struct PrimeFactorsRle<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for PrimeFactorsRle<T>

    source§

    type Item = (T, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct trial::PrimeFactorsRle

    source ·
    pub struct PrimeFactorsRle<T> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<T: Value> Iterator for PrimeFactorsRle<T>

    §

    type Item = (T, usize)

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<T> Freeze for PrimeFactorsRle<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for PrimeFactorsRle<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for PrimeFactorsRle<T>
    where - T: Send,

    §

    impl<T> Sync for PrimeFactorsRle<T>
    where - T: Sync,

    §

    impl<T> Unpin for PrimeFactorsRle<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for PrimeFactorsRle<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for PrimeFactorsRle<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for PrimeFactorsRle<T>where + T: Send,

    §

    impl<T> Sync for PrimeFactorsRle<T>where + T: Sync,

    §

    impl<T> Unpin for PrimeFactorsRle<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for PrimeFactorsRle<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/trial/trait.Value.html b/trial/trait.Value.html index b38fa729..94b2df31 100644 --- a/trial/trait.Value.html +++ b/trial/trait.Value.html @@ -1,4 +1,4 @@ -Value in trial - RustValue in trial - Rust
    -

    Trait trial::Value

    source ·
    pub trait Value:
    -    Debug
    -    + Copy
    -    + Ord
    -    + Add<Output = Self>
    -    + AddAssign
    -    + Sub<Output = Self>
    -    + SubAssign
    -    + Mul<Output = Self>
    -    + MulAssign
    -    + Div<Output = Self>
    -    + DivAssign
    -    + Rem<Output = Self>
    -    + RemAssign {
    +

    Trait trial::Value

    source ·
    pub trait Value: Debug + Copy + Ord + Add<Output = Self> + AddAssign + Sub<Output = Self> + SubAssign + Mul<Output = Self> + MulAssign + Div<Output = Self> + DivAssign + Rem<Output = Self> + RemAssign {
         // Required methods
         fn zero() -> Self;
         fn one() -> Self;
         fn increment(&mut self);
     
         // Provided method
    -    fn divides(self, n: Self) -> bool { ... }
    +    fn divides(self, n: Self) -> bool { ... }
     }
    Expand description

    Abstraction of unsigned integers.

    -

    Required Methods§

    source

    fn zero() -> Self

    Returns 0.

    -
    source

    fn one() -> Self

    Returns 1.

    -
    source

    fn increment(&mut self)

    Increment self.

    -

    Provided Methods§

    source

    fn divides(self, n: Self) -> bool

    Returns true if and only if self divides n.

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Value for u8

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u16

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u32

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u64

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u128

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for usize

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn zero() -> Self

    Returns 0.

    +
    source

    fn one() -> Self

    Returns 1.

    +
    source

    fn increment(&mut self)

    Increment self.

    +

    Provided Methods§

    source

    fn divides(self, n: Self) -> bool

    Returns true if and only if self divides n.

    +

    Implementations on Foreign Types§

    source§

    impl Value for u16

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u32

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u8

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for usize

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u128

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    source§

    impl Value for u64

    source§

    fn zero() -> Self

    source§

    fn one() -> Self

    source§

    fn increment(&mut self)

    Implementors§

    \ No newline at end of file diff --git a/trie/all.html b/trie/all.html index de512862..3d6a51ca 100644 --- a/trie/all.html +++ b/trie/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Constants

    \ No newline at end of file +

    List of all items

    Structs

    Constants

    \ No newline at end of file diff --git a/trie/constant.DEGREE.html b/trie/constant.DEGREE.html index 3fc97132..ad89b6d0 100644 --- a/trie/constant.DEGREE.html +++ b/trie/constant.DEGREE.html @@ -1,4 +1,4 @@ -DEGREE in trie - RustDEGREE in trie - Rust
    -

    Constant trie::DEGREE

    source ·
    pub const DEGREE: usize = 26;
    Expand description

    Tries here have the fixed branching number 26.

    +

    Constant trie::DEGREE

    source ·
    pub const DEGREE: usize = 26;
    Expand description

    Tries here have the fixed branching number 26.

    \ No newline at end of file diff --git a/trie/index.html b/trie/index.html index 5e046175..57232e17 100644 --- a/trie/index.html +++ b/trie/index.html @@ -1,4 +1,4 @@ -trie - Rusttrie - Rust
    -

    Crate trie

    source ·
    Expand description

    A set and map data structure on trie.

    +

    Crate trie

    source ·
    Expand description

    A set and map data structure on trie.

    They are set and map datastructure with an extra operation for_each_prefix. We can visit all the preficies of a key, receiving the corresponding node again as a trie.

    -

    Structs§

    Constants§

    • Tries here have the fixed branching number 26.
    \ No newline at end of file +

    Structs

    Constants

    • Tries here have the fixed branching number 26.
    \ No newline at end of file diff --git a/trie/struct.TrieMap.html b/trie/struct.TrieMap.html index bb2fb97d..91fabe83 100644 --- a/trie/struct.TrieMap.html +++ b/trie/struct.TrieMap.html @@ -1,4 +1,4 @@ -TrieMap in trie - RustTrieMap in trie - Rust
    -

    Struct trie::TrieMap

    source ·
    pub struct TrieMap<V>(/* private fields */);
    Expand description

    A map base on a trie.

    -

    Implementations§

    source§

    impl<V> TrieMap<V>

    source

    pub fn new() -> Self

    Makes a new empty TrieMap.

    +

    Struct trie::TrieMap

    source ·
    pub struct TrieMap<V>(_);
    Expand description

    A map base on a trie.

    +

    Implementations§

    source§

    impl<V> TrieMap<V>

    source

    pub fn new() -> Self

    Makes a new empty TrieMap.

    Does not allocate anything on its own.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
    @@ -44,165 +44,165 @@ 
    §Examples
    let mut map = TrieMap::new(); // entries can now be inserted into the empty map -map.insert(once(1), "a");
    -
    source

    pub fn insert( +map.insert(once(1), "a");

    +
    source

    pub fn insert( &mut self, - key: impl IntoIterator<Item = usize>, - value: V, -) -> Option<V>

    Inserts a key-value pair into the map.

    + key: impl IntoIterator<Item = usize>, + value: V +) -> Option<V>

    Inserts a key-value pair into the map.

    If the map did not have this key present, None is returned.

    If the map did have this key present, the value is updated, and the old value is returned. The key is not updated, though.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -assert_eq!(map.insert(once(17), "a"), None);
    +assert_eq!(map.insert(once(17), "a"), None);
     // assert_eq!(map.is_empty(), false); TODO: unimplemented
     
    -map.insert(once(17), "b");
    -assert_eq!(map.insert(once(17), "c"), Some("b"));
    -// assert_eq!(map[&37], "c"); TODO: unimplemented
    -
    source

    pub fn remove(&mut self, key: impl IntoIterator<Item = usize>) -> Option<V>

    Removes a key from the map, returning the stored key and value if the key +map.insert(once(17), "b"); +assert_eq!(map.insert(once(17), "c"), Some("b")); +// assert_eq!(map[&37], "c"); TODO: unimplemented

    +
    source

    pub fn remove(&mut self, key: impl IntoIterator<Item = usize>) -> Option<V>

    Removes a key from the map, returning the stored key and value if the key was previously in the map.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -map.insert(once(1), "a");
    -assert_eq!(map.remove(once(1)), Some("a"));
    +map.insert(once(1), "a");
    +assert_eq!(map.remove(once(1)), Some("a"));
     assert_eq!(map.remove(once(1)), None);
    -
    source

    pub fn get(&self, key: impl IntoIterator<Item = usize>) -> Option<&V>

    Returns a reference to the value corresponding to the key.

    -
    §Examples
    +
    source

    pub fn get(&self, key: impl IntoIterator<Item = usize>) -> Option<&V>

    Returns a reference to the value corresponding to the key.

    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -map.insert(once(1), "a");
    -assert_eq!(map.get(once(1)), Some(&"a"));
    +map.insert(once(1), "a");
    +assert_eq!(map.get(once(1)), Some(&"a"));
     assert_eq!(map.get(once(2)), None);
    -
    source

    pub fn get_mut( +

    source

    pub fn get_mut( &mut self, - key: impl IntoIterator<Item = usize>, -) -> Option<&mut V>

    Returns a mutable reference to the value corresponding to the key.

    -
    §Examples
    + key: impl IntoIterator<Item = usize> +) -> Option<&mut V>

    Returns a mutable reference to the value corresponding to the key.

    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -map.insert(once(1), "a");
    +map.insert(once(1), "a");
     if let Some(x) = map.get_mut(once(1)) {
    -    *x = "b";
    +    *x = "b";
     }
    -assert_eq!(map.get(once(1)), Some(&"b"));
    -// assert_eq!(map[&1], "b"); TODO: unimplemented
    -
    source

    pub fn get_or_insert( +assert_eq!(map.get(once(1)), Some(&"b")); +// assert_eq!(map[&1], "b"); TODO: unimplemented

    +
    source

    pub fn get_or_insert( &mut self, - key: impl IntoIterator<Item = usize>, - value: V, -) -> &mut V

    Inserts a value at key if it is None, then returns a mutable reference + key: impl IntoIterator<Item = usize>, + value: V +) -> &mut V

    Inserts a value at key if it is None, then returns a mutable reference to the contained value.

    -
    §Examples
    +
    Examples
    use trie::TrieMap;
     use std::iter::once;
     
     let mut map = TrieMap::new();
    -map.insert(once(1), "a");
    +map.insert(once(1), "a");
     
     // Existing
    -map.get_or_insert(once(1), "b");
    -assert_eq!(map.get(once(1)), Some(&"a"));
    +map.get_or_insert(once(1), "b");
    +assert_eq!(map.get(once(1)), Some(&"a"));
     
     // New
    -map.get_or_insert(once(2), "c");
    -assert_eq!(map.get(once(2)), Some(&"c"));
    +map.get_or_insert(once(2), "c");
    +assert_eq!(map.get(once(2)), Some(&"c"));
     
    -// assert_eq!(map[&1], "b"); TODO: unimplemented
    -
    source

    pub fn get_or_insert_with( +// assert_eq!(map[&1], "b"); TODO: unimplemented

    +
    source

    pub fn get_or_insert_with( &mut self, - key: impl IntoIterator<Item = usize>, - f: impl FnOnce() -> V, -) -> &mut V

    Inserts a value computed from f at key if it is None, + key: impl IntoIterator<Item = usize>, + f: impl FnOnce() -> V +) -> &mut V

    Inserts a value computed from f at key if it is None, then returns a mutable reference to the contained value.

    -
    §Examples
    +
    Examples
    use trie::TrieMap;
     use std::iter::once;
     
     let mut map = TrieMap::new();
    -map.insert(once(1), "a");
    +map.insert(once(1), "a");
     
     // Existing
    -map.get_or_insert_with(once(1), || "b");
    -assert_eq!(map.get(once(1)), Some(&"a"));
    +map.get_or_insert_with(once(1), || "b");
    +assert_eq!(map.get(once(1)), Some(&"a"));
     
     // New
    -map.get_or_insert_with(once(2), || "c");
    -assert_eq!(map.get(once(2)), Some(&"c"));
    +map.get_or_insert_with(once(2), || "c");
    +assert_eq!(map.get(once(2)), Some(&"c"));
     
    -// assert_eq!(map[&1], "b"); TODO: unimplemented
    -
    source

    pub fn for_each_prefix( +// assert_eq!(map[&1], "b"); TODO: unimplemented

    +
    source

    pub fn for_each_prefix( &self, - key: impl IntoIterator<Item = usize>, - visit: impl FnMut(&Self), + key: impl IntoIterator<Item = usize>, + visit: impl FnMut(&Self) )

    Visits all the “existing” nodes corresponding to the preficies of the key.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -map.insert(vec![1], "a");
    -map.insert(vec![1, 1, 1], "c");
    +map.insert(vec![1], "a");
    +map.insert(vec![1, 1, 1], "c");
     
     // Corresponding an existing key.
    -let mut expected = [None, Some("a"), None, Some("c")].iter();
    +let mut expected = [None, Some("a"), None, Some("c")].iter();
     map.for_each_prefix(vec![1, 1, 1].into_iter(), |trie| {
         let expected = expected.next().unwrap().as_ref();
         assert_eq!(trie.get(None.into_iter()), expected);
     });
     
     // No, but falls within the trie.
    -let mut expected = [None, Some("a"), None].iter();
    +let mut expected = [None, Some("a"), None].iter();
     map.for_each_prefix(vec![1, 1].into_iter(), |trie| {
         let expected = expected.next().unwrap().as_ref();
         assert_eq!(trie.get(None.into_iter()), expected);
     });
     
     // Runs off thte trie.
    -let mut expected = [None, Some("a"), None, Some("c")].iter();
    +let mut expected = [None, Some("a"), None, Some("c")].iter();
     map.for_each_prefix(vec![1, 1, 1, 1].into_iter(), |trie| {
         let expected = expected.next().unwrap().as_ref();
         assert_eq!(trie.get(None.into_iter()), expected);
     });
    -
    source

    pub fn for_each_kv(&self, visit: impl FnMut(&[usize], &V))

    Visits all the pairs of a key of a values in the trie, in lexicographic order.

    -
    §Examples
    +
    source

    pub fn for_each_kv(&self, visit: impl FnMut(&[usize], &V))

    Visits all the pairs of a key of a values in the trie, in lexicographic order.

    +
    Examples

    Basic usage:

    use std::iter::once;
     use trie::TrieMap;
     
     let mut map = TrieMap::new();
    -map.insert(vec![1, 2, 2], "a");
    -map.insert(vec![2], "b");
    -map.insert(vec![1], "c");
    -map.insert(vec![1, 1, 1], "d");
    +map.insert(vec![1, 2, 2], "a");
    +map.insert(vec![2], "b");
    +map.insert(vec![1], "c");
    +map.insert(vec![1, 1, 1], "d");
     
     let mut expected = vec![
    -    (vec![1], "c"),
    -    (vec![1, 1, 1], "d"),
    -    (vec![1, 2, 2], "a"),
    -    (vec![2], "b"),
    +    (vec![1], "c"),
    +    (vec![1, 1, 1], "d"),
    +    (vec![1, 2, 2], "a"),
    +    (vec![2], "b"),
     ]
     .into_iter();
     map.for_each_kv(|k, &v| {
    @@ -210,21 +210,21 @@ 
    §Examples
    assert_eq!(k, ek.as_slice()); assert_eq!(v, ev); });
    -

    Trait Implementations§

    source§

    impl<V: Clone> Clone for TrieMap<V>

    source§

    fn clone(&self) -> TrieMap<V>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<V: Debug> Debug for TrieMap<V>

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<V> Default for TrieMap<V>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<V: PartialEq> PartialEq for TrieMap<V>

    source§

    fn eq(&self, other: &TrieMap<V>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<V> StructuralPartialEq for TrieMap<V>

    Auto Trait Implementations§

    §

    impl<V> Freeze for TrieMap<V>

    §

    impl<V> RefUnwindSafe for TrieMap<V>
    where - V: RefUnwindSafe,

    §

    impl<V> Send for TrieMap<V>
    where - V: Send,

    §

    impl<V> Sync for TrieMap<V>
    where - V: Sync,

    §

    impl<V> Unpin for TrieMap<V>

    §

    impl<V> UnwindSafe for TrieMap<V>
    where - V: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<V: Clone> Clone for TrieMap<V>

    source§

    fn clone(&self) -> TrieMap<V>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<V: Debug> Debug for TrieMap<V>

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<V> Default for TrieMap<V>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<V: PartialEq> PartialEq<TrieMap<V>> for TrieMap<V>

    source§

    fn eq(&self, other: &TrieMap<V>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<V> StructuralPartialEq for TrieMap<V>

    Auto Trait Implementations§

    §

    impl<V> RefUnwindSafe for TrieMap<V>where + V: RefUnwindSafe,

    §

    impl<V> Send for TrieMap<V>where + V: Send,

    §

    impl<V> Sync for TrieMap<V>where + V: Sync,

    §

    impl<V> Unpin for TrieMap<V>

    §

    impl<V> UnwindSafe for TrieMap<V>where + V: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/trie/struct.TrieSet.html b/trie/struct.TrieSet.html index e701de92..6990dfce 100644 --- a/trie/struct.TrieSet.html +++ b/trie/struct.TrieSet.html @@ -1,4 +1,4 @@ -TrieSet in trie - RustTrieSet in trie - Rust
    -

    Struct trie::TrieSet

    source ·
    pub struct TrieSet { /* private fields */ }
    Expand description

    A set base on a trie.

    -

    Implementations§

    source§

    impl TrieSet

    source

    pub fn new() -> Self

    Makes a new empty TrieMap.

    +

    Struct trie::TrieSet

    source ·
    pub struct TrieSet { /* private fields */ }
    Expand description

    A set base on a trie.

    +

    Implementations§

    source§

    impl TrieSet

    source

    pub fn new() -> Self

    Makes a new empty TrieMap.

    Does not allocate anything on its own.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
    @@ -45,8 +45,8 @@ 
    §Examples
    // entries can now be inserted into the empty set set.insert(once(1));
    -
    source

    pub fn contains(&self, value: impl IntoIterator<Item = usize>) -> bool

    Returns true if the set contains a value.

    -
    §Examples
    +
    source

    pub fn contains(&self, value: impl IntoIterator<Item = usize>) -> bool

    Returns true if the set contains a value.

    +
    Examples
    use std::iter::once;
     use trie::TrieSet;
     
    @@ -58,11 +58,11 @@ 
    §Examples
    // let set: TrieSet<_> = [1, 2, 3].iter().cloned().collect(); TODO: unimplemented assert_eq!(set.contains(once(1)), true); assert_eq!(set.contains(once(4)), false);
    -
    source

    pub fn insert(&mut self, iter: impl IntoIterator<Item = usize>) -> bool

    Adds a value to the set.

    +
    source

    pub fn insert(&mut self, iter: impl IntoIterator<Item = usize>) -> bool

    Adds a value to the set.

    If the set did not have this value present, true is returned.

    If the set did have this value present, false is returned, and the entry is not updated.

    -
    §Examples
    +
    Examples
    use std::iter::once;
     use trie::TrieSet;
     
    @@ -71,9 +71,9 @@ 
    §Examples
    assert_eq!(set.insert(once(2)), true); assert_eq!(set.insert(once(2)), false); // assert_eq!(set.len(), 1); not implemented
    -
    source

    pub fn remove(&mut self, value: impl IntoIterator<Item = usize>) -> bool

    Removes a value from the set. Returns whether the value was +

    source

    pub fn remove(&mut self, value: impl IntoIterator<Item = usize>) -> bool

    Removes a value from the set. Returns whether the value was present in the set.

    -
    §Examples
    +
    Examples
    use std::iter::once;
     use trie::TrieSet;
     
    @@ -82,12 +82,12 @@ 
    §Examples
    set.insert(once(2)); assert_eq!(set.remove(once(2)), true); assert_eq!(set.remove(once(2)), false);
    -
    source

    pub fn for_each_prefix( +

    source

    pub fn for_each_prefix( &self, - value: impl IntoIterator<Item = usize>, - visit: impl FnMut(&TrieMap<()>), + value: impl IntoIterator<Item = usize>, + visit: impl FnMut(&TrieMap<()>) )

    Visits all the “existing” nodes corresponding to the preficies of the value.

    -
    §Examples
    +
    Examples

    Basic usage:

    use std::iter::once;
    @@ -117,8 +117,8 @@ 
    §Examples
    let expected = *expected.next().unwrap(); assert_eq!(trie.get(None.into_iter()).is_some(), expected); });
    -
    source

    pub fn for_each(&self, visit: impl FnMut(&[usize]))

    Visits all the values of a values in the trie, in lexicographic order.

    -
    §Examples
    +
    source

    pub fn for_each(&self, visit: impl FnMut(&[usize]))

    Visits all the values of a values in the trie, in lexicographic order.

    +
    Examples

    Basic usage:

    use std::iter::once;
    @@ -135,17 +135,17 @@ 
    §Examples
    let ek = expected.next().unwrap(); assert_eq!(k, ek.as_slice()); });
    -

    Trait Implementations§

    source§

    impl Clone for TrieSet

    source§

    fn clone(&self) -> TrieSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TrieSet

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TrieSet

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TrieSet

    source§

    fn eq(&self, other: &TrieSet) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for TrieSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for TrieSet

    source§

    fn clone(&self) -> TrieSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TrieSet

    source§

    fn fmt(&self, w: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TrieSet

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq<TrieSet> for TrieSet

    source§

    fn eq(&self, other: &TrieSet) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for TrieSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/two_sat/all.html b/two_sat/all.html index 46730d9d..e31b8159 100644 --- a/two_sat/all.html +++ b/two_sat/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/two_sat/index.html b/two_sat/index.html index 448a92fd..066047eb 100644 --- a/two_sat/index.html +++ b/two_sat/index.html @@ -1,4 +1,4 @@ -two_sat - Rusttwo_sat - Rust
    -

    Crate two_sat

    source ·
    Expand description

    2-SAT を解きます。

    -

    §依存ライブラリ

    +

    Crate two_sat

    source ·
    Expand description

    2-SAT を解きます。

    +

    依存ライブラリ

    • scc
    -

    §Examples

    +

    Examples

    let mut two_sat = TwoSat::new(3);
     
     two_sat.implies(0, true, 1, true);
    @@ -47,9 +47,9 @@ 

    §Examples

    two_sat.build(); // Debug がきれいです。 -let expected = "[0→1, 0→¬2, ¬1→¬0, 1→2, 1→¬2, ¬2→¬1, 2→¬0, 2→¬1]"; -assert_eq!(format!("{:?}", &two_sat).as_str(), expected); +let expected = "[0→1, 0→¬2, ¬1→¬0, 1→2, 1→¬2, ¬2→¬1, 2→¬0, 2→¬1]"; +assert_eq!(format!("{:?}", &two_sat).as_str(), expected); // 解きます。 assert_eq!(Some(vec![false, false, true]), two_sat.solve());
    -

    Structs§

    • 2-SAT の本体です。
    \ No newline at end of file +

    Structs

    • 2-SAT の本体です。
    \ No newline at end of file diff --git a/two_sat/struct.TwoSat.html b/two_sat/struct.TwoSat.html index 57c96e9a..f11e799a 100644 --- a/two_sat/struct.TwoSat.html +++ b/two_sat/struct.TwoSat.html @@ -1,4 +1,4 @@ -TwoSat in two_sat - RustTwoSat in two_sat - Rust
    -

    Struct two_sat::TwoSat

    source ·
    pub struct TwoSat { /* private fields */ }
    Expand description

    2-SAT の本体です。

    -

    Implementations§

    source§

    impl TwoSat

    source

    pub fn new(n: usize) -> Self

    n 個の不定元を持つ Always true を作ります。

    -
    source

    pub fn implies(&mut self, x: usize, a: bool, y: usize, b: bool)

    (x == a) -> (y == b) をかつでつなぎます。

    -
    source

    pub fn solve(&self) -> Option<Vec<bool>>

    充足する割り当てがあれば返し、なければ None を返します。

    -
    source

    pub fn build(&mut self)

    Trait Implementations§

    source§

    impl Clone for TwoSat

    source§

    fn clone(&self) -> TwoSat

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TwoSat

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TwoSat

    source§

    fn default() -> TwoSat

    Returns the “default value” for a type. Read more
    source§

    impl Hash for TwoSat

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for TwoSat

    source§

    fn eq(&self, other: &TwoSat) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for TwoSat

    source§

    impl StructuralPartialEq for TwoSat

    Auto Trait Implementations§

    §

    impl Freeze for TwoSat

    §

    impl RefUnwindSafe for TwoSat

    §

    impl Send for TwoSat

    §

    impl Sync for TwoSat

    §

    impl Unpin for TwoSat

    §

    impl UnwindSafe for TwoSat

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct two_sat::TwoSat

    source ·
    pub struct TwoSat { /* private fields */ }
    Expand description

    2-SAT の本体です。

    +

    Implementations§

    source§

    impl TwoSat

    source

    pub fn new(n: usize) -> Self

    n 個の不定元を持つ Always true を作ります。

    +
    source

    pub fn implies(&mut self, x: usize, a: bool, y: usize, b: bool)

    (x == a) -> (y == b) をかつでつなぎます。

    +
    source

    pub fn solve(&self) -> Option<Vec<bool>>

    充足する割り当てがあれば返し、なければ None を返します。

    +
    source

    pub fn build(&mut self)

    Trait Implementations§

    source§

    impl Clone for TwoSat

    source§

    fn clone(&self) -> TwoSat

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TwoSat

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TwoSat

    source§

    fn default() -> TwoSat

    Returns the “default value” for a type. Read more
    source§

    impl Hash for TwoSat

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<TwoSat> for TwoSat

    source§

    fn eq(&self, other: &TwoSat) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for TwoSat

    source§

    impl StructuralEq for TwoSat

    source§

    impl StructuralPartialEq for TwoSat

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/type.impl/link_cut_tree/struct.LinkCutTreeBase.js b/type.impl/link_cut_tree/struct.LinkCutTreeBase.js deleted file mode 100644 index abd8698d..00000000 --- a/type.impl/link_cut_tree/struct.LinkCutTreeBase.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var type_impls = Object.fromEntries([["link_cut_tree",[["
    source§

    impl<O: OpBase> LinkCutTreeBase<O>

    source

    pub fn new(n: usize) -> Self

    Constructs a new Link-Cut Tree with n nodes.

    \n
    source

    pub fn from_values(values: impl IntoIterator<Item = O::Value>) -> Self

    Constructs a new Link-Cut Tree with n nodes, where the values are given by values.

    \n
    source

    pub fn link(&mut self, p: usize, c: usize)

    Connects p and c with an edge, preserving the direction.

    \n
    §Panics
    \n
      \n
    • If c is not a root.
    • \n
    • If c and p are already connected.
    • \n
    \n
    source

    pub fn undirected_link(&mut self, i: usize, j: usize) -> bool

    Connects i and j with an edge, not preserving the direction.

    \n
    §Returns
    \n
      \n
    • true if the edge is added.
    • \n
    \n
    source

    pub fn cut(&mut self, x: usize) -> Option<usize>

    Cuts the edge between x and its parent.

    \n
    §Returns
    \n

    The id of the parent of x before the cut.

    \n
    source

    pub fn undirected_cut(&mut self, i: usize, j: usize) -> bool

    Cuts the edge between i and j, not preserving the direction.

    \n
    §Returns
    \n

    true if the edge is cut.

    \n
    source

    pub fn evert(&mut self, x: usize)

    Makes x the root of the tree.

    \n
    source

    pub fn undirected_has_edge(&mut self, x: usize, y: usize) -> bool

    Returns true if there is an edge between x and y.

    \n
    source

    pub fn undirected_is_connected(&mut self, x: usize, y: usize) -> bool

    Returns true if x and y are connected.

    \n
    source

    pub fn lca(&mut self, x: usize, y: usize) -> Option<usize>

    Returns the id of the lowest common ancestor of x and y.

    \n
    source

    pub fn set(&mut self, x: usize, f: impl FnMut(O::Value) -> O::Value)

    Sets the value of x to f(x).

    \n
    source

    pub fn fold(&mut self, x: usize) -> O::Value

    Folds the path from the root to x.

    \n
    source

    pub fn undirected_fold(&mut self, i: usize, j: usize) -> Option<O::Value>

    Folds the path from i to j, not preserving the direction.

    \n
    source

    pub fn parent(&mut self, x: usize) -> Option<usize>

    Returns the id of the parent of x.

    \n
    ",0,"link_cut_tree::LinkCutTree","link_cut_tree::CommutLinkCutTree","link_cut_tree::NonCommutLinkCutTree"]]]]); - if (window.register_type_impls) { - window.register_type_impls(type_impls); - } else { - window.pending_type_impls = type_impls; - } -})() -//{"start":55,"fragment_lengths":[11826]} \ No newline at end of file diff --git a/type.impl/vec_lines/struct.VecLines.js b/type.impl/vec_lines/struct.VecLines.js deleted file mode 100644 index 9b6b290b..00000000 --- a/type.impl/vec_lines/struct.VecLines.js +++ /dev/null @@ -1,9 +0,0 @@ -(function() { - var type_impls = Object.fromEntries([["vec_lines",[["
    source§

    impl<T: Clone, C: Clone> Clone for VecLines<T, C>

    source§

    fn clone(&self) -> VecLines<T, C>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: Debug, C: Debug> Debug for VecLines<T, C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: Signed, C: Constraint> Default for VecLines<T, C>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    ","Default","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: Hash, C: Hash> Hash for VecLines<T, C>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: PartialEq, C: PartialEq> PartialEq for VecLines<T, C>

    source§

    fn eq(&self, other: &VecLines<T, C>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: Signed, C: Constraint> VecLines<T, C>

    source

    pub fn new() -> Self

    傾き単調な直線の列を Vec で管理します。

    \n
    §使い方
    \n
    // 傾きが単調減少な直線の列を管理します。\nlet lines = VecLinesDecreasing::<i32>::new();\n\n// 傾きが単調減少な直線の列を管理します。\nlet lines = VecLinesDecreasing::<i32>::new();\n\n// それぞれ、別名を使わずに構築する方法です。\nlet lines = VecLines::<i32, DecreasingTilt>::new();\nlet lines = VecLines::<i32, IncreasingTilt>::new();
    \n
    source

    pub fn is_empty(&self) -> bool

    管理している直線が 0 本のとき true、さもなくば false を返します。

    \n
    §使い方
    \n
    let lines = VecLinesDecreasing::<i32>::new();\nassert!(lines.is_empty());
    \n
    source

    pub fn len(&self) -> usize

    管理している直線の本数を返します。

    \n

    不要な直線が自動的に削除されると、このメソッドの返す値も減少します。

    \n
    §使い方
    \n
    let mut lines = VecLinesDecreasing::<i32>::new();\nassert_eq!(lines.len(), 0);\n\nlines.push([0, 0]);
    \n
    source

    pub fn get(&self, index: usize) -> Option<Line<T>>

    index 番目の直線を返します。

    \n
    §使い方
    \n
    let mut lines = VecLinesDecreasing::<i32>::new();\nlines.push([1, 0]);\nlines.push([0, 10]);\nlines.push([-1, 30]);\n\n// 直線を手に入れたら、次は `Line::eval` で評価です。\nassert_eq!(lines.get(0).unwrap().eval(100), 100);
    \n
    source

    pub fn push(&mut self, line: [T; 2])

    後ろに直線を挿入します。

    \n
    §Panics
    \n
      \n
    • マーカー C の定める傾きの単調性に反するとき。
    • \n
    \n
    §計算量
    \n

    償却定数時間。

    \n
    §使い方
    \n
    let mut lines = VecLinesDecreasing::<i32>::new();\nlines.push([1, 0]);\nlines.push([0, 10]);\nlines.push([-1, 30]);\n\n// 直線を手に入れたら、次は `Line::eval` で評価です。\nassert_eq!(lines.get(0).unwrap().eval(100), 100);
    \n
    source

    pub fn eval_gcc(&self, x: T) -> Option<T>

    黄金分割探索で最適値を計算します。

    \n
    §計算量
    \n

    管理している直線の本数を n として、Θ( lg n )。

    \n
    §使い方
    \n
    let mut lines = VecLinesDecreasing::<i32>::new();\nlines.push([1, 0]);\nlines.push([0, 10]);\nlines.push([-1, 30]);\n\nassert_eq!(lines.eval_gcc(-10), Some(-10)); // x\nassert_eq!(lines.eval_gcc(15), Some(10)); // 10\nassert_eq!(lines.eval_gcc(40), Some(-10)); // -x + 30
    \n
    source

    pub fn iter_copied(&self) -> impl '_ + Iterator<Item = Line<T>>

    管理している直線を順番に返すイテレータを返します。

    \n
    §使い方
    \n
    let mut lines = VecLinesDecreasing::<i32>::new();\nlines.push([1, 0]);\nlines.push([0, 10]);\nlines.push([-1, 30]);\n\nlet lines = lines\n    .iter_copied()\n    .map(Line::into_coeff)\n    .collect::<Vec<_>>();\nassert_eq!(lines, vec![[1, 0], [0, 10], [-1, 30]]);
    \n
    ",0,"vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T: Eq, C: Eq> Eq for VecLines<T, C>

    ","Eq","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"],["
    source§

    impl<T, C> StructuralPartialEq for VecLines<T, C>

    ","StructuralPartialEq","vec_lines::VecLinesDecreasing","vec_lines::VecLinesIncreasing"]]]]); - if (window.register_type_impls) { - window.register_type_impls(type_impls); - } else { - window.pending_type_impls = type_impls; - } -})() -//{"start":55,"fragment_lengths":[24420]} \ No newline at end of file diff --git a/uf_checklist/all.html b/uf_checklist/all.html index dd471a79..b28e77d0 100644 --- a/uf_checklist/all.html +++ b/uf_checklist/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    \ No newline at end of file +

    List of all items

    Structs

    \ No newline at end of file diff --git a/uf_checklist/index.html b/uf_checklist/index.html index e60417a3..ab8db5f0 100644 --- a/uf_checklist/index.html +++ b/uf_checklist/index.html @@ -1,4 +1,4 @@ -uf_checklist - Rustuf_checklist - Rust
    -

    Crate uf_checklist

    source ·
    Expand description

    Union-find を用いて、「一度処理したところを処理しない」区間クエリを線形で処理します。

    -

    §データ構造の定義

    +

    Crate uf_checklist

    source ·
    Expand description

    Union-find を用いて、「一度処理したところを処理しない」区間クエリを線形で処理します。

    +

    データ構造の定義

    ブーリアン配列に対応しており、指定した位置の false -> true の変更(これをチェックと呼びます。→ check) 指定した位置と同じかもっと右にある false の場所を答えるのを高速に処理できます。(→ lower_bound

    これを利用すると、指定した範囲をすべて true にするというのも高速になります。(→ range_check

    -

    §Usage

    +

    Usage

    UfChecklist を使いましょう。

    -

    §構築

    +

    構築

    • new: 新しいデータ構造を構築します。
    -

    §更新

    +

    更新

    • check: 指定した位置をチェックします。
    • range_check: 指定した範囲をチェックします。
    -

    §クエリ

    +

    クエリ

      -
    • lower_bound: 指定した場所と同じかもっと右にある未チェックな項を探します。
    • +
    • lower_bound: +指定した場所と同じかもっと右にある未チェックな項 +を探します。
    • is_checked: 指定した位置がチェック済みかどうかを判定します。
    -

    §Example

    +

    Example

    例えば、配列と組み合わせることでno-update range-set query を処理できます。

    use uf_checklist::UfChecklist;
    @@ -93,4 +95,4 @@ 

    §Example

    Some(1), Some(2) ]);
    -

    Structs§

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/uf_checklist/struct.Iter.html b/uf_checklist/struct.Iter.html index 6f0dca2c..985ac0d8 100644 --- a/uf_checklist/struct.Iter.html +++ b/uf_checklist/struct.Iter.html @@ -1,4 +1,4 @@ -Iter in uf_checklist - RustIter in uf_checklist - Rust
    -

    Struct uf_checklist::Iter

    source ·
    pub struct Iter<'a> { /* private fields */ }
    Expand description

    UfChecklist::range_check が返すイテレータです。

    -

    Trait Implementations§

    source§

    impl<'a> Debug for Iter<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Iterator for Iter<'_>

    source§

    type Item = usize

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct uf_checklist::Iter

    source ·
    pub struct Iter<'a> { /* private fields */ }
    Expand description

    UfChecklist::range_check が返すイテレータです。

    +

    Trait Implementations§

    source§

    impl<'a> Debug for Iter<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Iterator for Iter<'_>

    §

    type Item = usize

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Iter<'a>

    §

    impl<'a> RefUnwindSafe for Iter<'a>

    §

    impl<'a> Send for Iter<'a>

    §

    impl<'a> Sync for Iter<'a>

    §

    impl<'a> Unpin for Iter<'a>

    §

    impl<'a> !UnwindSafe for Iter<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Iter<'a>

    §

    impl<'a> Send for Iter<'a>

    §

    impl<'a> Sync for Iter<'a>

    §

    impl<'a> Unpin for Iter<'a>

    §

    impl<'a> !UnwindSafe for Iter<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/uf_checklist/struct.UfChecklist.html b/uf_checklist/struct.UfChecklist.html index 34accd73..0d68a048 100644 --- a/uf_checklist/struct.UfChecklist.html +++ b/uf_checklist/struct.UfChecklist.html @@ -1,4 +1,4 @@ -UfChecklist in uf_checklist - RustUfChecklist in uf_checklist - Rust
    -

    Struct uf_checklist::UfChecklist

    source ·
    pub struct UfChecklist { /* private fields */ }
    Expand description

    「一度処理したところを処理しない」区間クエリを線形で処理するデータ構造です。

    -

    Implementations§

    source§

    impl UfChecklist

    source

    pub fn new(n: usize) -> Self

    区間 [0, n[ に対応するデータ構造を構築します。

    -
    §Examples
    +
    pub struct UfChecklist { /* private fields */ }
    Expand description

    「一度処理したところを処理しない」区間クエリを線形で処理するデータ構造です。

    +

    Implementations§

    source§

    impl UfChecklist

    source

    pub fn new(n: usize) -> Self

    区間 [0, n[ に対応するデータ構造を構築します。

    +
    Examples
    use uf_checklist::UfChecklist;
     let rc = UfChecklist::new(10);
    -
    source

    pub fn range_check(&mut self, range: impl RangeBounds<usize>) -> Iter<'_>

    区間 range をチェックして、未チェックだった場所をすべて返すイテレータを作ります。

    -
    §Panics
    +
    source

    pub fn range_check(&mut self, range: impl RangeBounds<usize>) -> Iter<'_>

    区間 range をチェックして、未チェックだった場所をすべて返すイテレータを作ります。

    +
    Panics

    範囲外

    -
    §計算量
    +
    計算量

    出力 1 つにつき、償却 Θ ( α ( n ) )

    -
    §Examples
    +
    Examples
    use uf_checklist::UfChecklist;
     
     let mut rc = UfChecklist::new(10);
     assert_eq!(rc.range_check(3..5).collect::<Vec<_>>(), vec![3, 4]);
     assert_eq!(rc.range_check(4..6).collect::<Vec<_>>(), vec![5]);
    -
    source

    pub fn lower_bound(&self, i: usize) -> Option<usize>

    指定した場所かそれより右の未チェックな位置が、存在すれば返し、なければ None +

    source

    pub fn lower_bound(&self, i: usize) -> Option<usize>

    指定した場所かそれより右の未チェックな位置が、存在すれば返し、なければ None を返します。

    -
    §Panics
    +
    Panics

    範囲外

    -
    §計算量
    +
    計算量

    償却 Θ ( α ( n ) )

    -
    §Examples
    +
    Examples
    use uf_checklist::UfChecklist;
     
     let mut rc = UfChecklist::new(10);
    @@ -66,12 +66,12 @@ 
    §Examples
    assert_eq!(rc.lower_bound(3), Some(5)); assert_eq!(rc.lower_bound(6), Some(6)); assert_eq!(rc.lower_bound(8), None);
    -
    source

    pub fn is_checked(&self, i: usize) -> bool

    指定した場所がチェック済みならば true を、さもなくば false を返します。

    -
    §Panics
    +
    source

    pub fn is_checked(&self, i: usize) -> bool

    指定した場所がチェック済みならば true を、さもなくば false を返します。

    +
    Panics

    範囲外

    -
    §計算量
    +
    計算量

    償却 Θ ( α ( n ) )

    -
    §Examples
    +
    Examples
    use uf_checklist::UfChecklist;
     
     let mut rc = UfChecklist::new(10);
    @@ -82,19 +82,19 @@ 
    §Examples
    assert_eq!(rc.is_checked(3), true); assert_eq!(rc.is_checked(6), false);
    -
    source

    pub fn check(&mut self, i: usize) -> bool

    指定した場所をチェックします。

    -
    §Panics
    +
    source

    pub fn check(&mut self, i: usize) -> bool

    指定した場所をチェックします。

    +
    Panics

    範囲外

    -
    §Returns
    +
    Returns
    • すでにチェックした箇所の場合 -> true
    • さもなくば -> false
    -

    です。replace -とは逆ですが、HashSet::insert とは同じです。

    -
    §計算量
    +

    です。replace +とは逆ですが、HashSet::insert とは同じです。

    +
    計算量

    償却 Θ ( α ( n ) )

    -
    §Examples
    +
    Examples
    use uf_checklist::UfChecklist;
     
     let mut rc = UfChecklist::new(10);
    @@ -103,16 +103,15 @@ 
    §Examples
    assert_eq!(rc.check(3), false); assert_eq!(rc.check(5), true);
    -

    Trait Implementations§

    source§

    impl Clone for UfChecklist

    source§

    fn clone(&self) -> UfChecklist

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UfChecklist

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for UfChecklist

    source§

    fn clone(&self) -> UfChecklist

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for UfChecklist

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/union_find/all.html b/union_find/all.html index 74330036..a2cda6a1 100644 --- a/union_find/all.html +++ b/union_find/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Enums

    Traits

    \ No newline at end of file +

    List of all items

    Structs

    Enums

    Traits

    \ No newline at end of file diff --git a/union_find/enum.EdgeCount.html b/union_find/enum.EdgeCount.html index 9bbf199f..5691a47d 100644 --- a/union_find/enum.EdgeCount.html +++ b/union_find/enum.EdgeCount.html @@ -1,4 +1,4 @@ -EdgeCount in union_find - RustEdgeCount in union_find - Rust
    -

    Enum union_find::EdgeCount

    source ·
    pub enum EdgeCount {}
    Expand description

    辺の本数

    -

    Trait Implementations§

    source§

    impl Op for EdgeCount

    source§

    type Value = usize

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub enum EdgeCount {}
    Expand description

    辺の本数

    +

    Trait Implementations§

    source§

    impl Op for EdgeCount

    §

    type Value = usize

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/union_find/enum.HasCycle.html b/union_find/enum.HasCycle.html index d773bf9c..6ee26897 100644 --- a/union_find/enum.HasCycle.html +++ b/union_find/enum.HasCycle.html @@ -1,4 +1,4 @@ -HasCycle in union_find - RustHasCycle in union_find - Rust
    -

    Enum union_find::HasCycle

    source ·
    pub enum HasCycle {}
    Expand description

    サイクルがあるとき、true

    -

    Trait Implementations§

    source§

    impl Op for HasCycle

    source§

    type Value = bool

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Enum union_find::HasCycle

    source ·
    pub enum HasCycle {}
    Expand description

    サイクルがあるとき、true

    +

    Trait Implementations§

    source§

    impl Op for HasCycle

    §

    type Value = bool

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/union_find/enum.VertexCount.html b/union_find/enum.VertexCount.html index 698a7ede..8e55c077 100644 --- a/union_find/enum.VertexCount.html +++ b/union_find/enum.VertexCount.html @@ -1,4 +1,4 @@ -VertexCount in union_find - RustVertexCount in union_find - Rust
    -

    Enum union_find::VertexCount

    source ·
    pub enum VertexCount {}
    Expand description

    頂点の個数

    -

    Trait Implementations§

    source§

    impl Op for VertexCount

    source§

    type Value = usize

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(_x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub enum VertexCount {}
    Expand description

    頂点の個数

    +

    Trait Implementations§

    source§

    impl Op for VertexCount

    §

    type Value = usize

    頂点重み型
    source§

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値
    source§

    fn add_edge(_x: &mut Self::Value)

    連結成分に辺を1本追加したとき
    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/union_find/index.html b/union_find/index.html index 2d146595..e35dd3c2 100644 --- a/union_find/index.html +++ b/union_find/index.html @@ -1,4 +1,4 @@ -union_find - Rustunion_find - Rust
    -

    Crate union_find

    source ·
    Expand description

    Union Find です。

    -

    §使い方

    §頂点重みを持たない場合

    +

    Crate union_find

    source ·
    Expand description

    Union Find です。

    +

    使い方

    頂点重みを持たない場合

    // 型引数 `()` の defaulting の `UnionFind` に `<_>` が必要です。
     let mut uf = <UnionFind>::new(3);
     
     // `Debug` トレイトを実装しています。
     // 頂点重みを持つ場合と実装を分岐できないため、`()` がついて悲しいです。
    -assert_eq!(&format!("{:?}", &uf), "[((), [0]), ((), [1]), ((), [2])]");
    +assert_eq!(&format!("{:?}", &uf), "[((), [0]), ((), [1]), ((), [2])]");
     
     // union-find 操作です。
     assert_eq!(uf.same(0, 1), false);
    @@ -47,7 +47,7 @@ 

    §使い方

    < assert_eq!(uf.same(0, 1), true); assert_eq!(uf.same(0, 2), false); assert_eq!(uf.union(0, 1), false);
    -

    §頂点重みを持つ場合

    +

    頂点重みを持つ場合

    用意されているもの

    -

    Structs§

    Enums§

    Traits§

    • 頂点重みを自作したいときに使うトレイトです。
    \ No newline at end of file +

    Structs

    Enums

    Traits

    • 頂点重みを自作したいときに使うトレイトです。
    \ No newline at end of file diff --git a/union_find/struct.UnionFind.html b/union_find/struct.UnionFind.html index 394d3482..b1a5f807 100644 --- a/union_find/struct.UnionFind.html +++ b/union_find/struct.UnionFind.html @@ -1,4 +1,4 @@ -UnionFind in union_find - RustUnionFind in union_find - Rust
    -

    Struct union_find::UnionFind

    source ·
    pub struct UnionFind<O: Op = ()> { /* private fields */ }

    Implementations§

    source§

    impl<O: Op> UnionFind<O>

    source

    pub fn new(n: usize) -> Self

    source

    pub fn from_values(values: Vec<O::Value>) -> Self

    source

    pub fn find_mut(&mut self, x: usize) -> usize

    source

    pub fn find(&self, x: usize) -> usize

    source

    pub fn same(&self, x: usize, y: usize) -> bool

    source

    pub fn is_root(&self, x: usize) -> bool

    source

    pub fn get_value(&self, x: usize) -> &O::Value

    source

    pub fn value_mut(&mut self, x: usize) -> &mut O::Value

    source

    pub fn value(&self, x: usize) -> O::Value
    where - O::Value: Copy,

    source

    pub fn union(&mut self, x: usize, y: usize) -> bool

    Trait Implementations§

    source§

    impl<O: Clone + Op> Clone for UnionFind<O>
    where - O::Value: Clone,

    source§

    fn clone(&self) -> UnionFind<O>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<O: Op> Debug for UnionFind<O>
    where - O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Default + Op> Default for UnionFind<O>
    where - O::Value: Default,

    source§

    fn default() -> UnionFind<O>

    Returns the “default value” for a type. Read more
    source§

    impl<O: Hash + Op> Hash for UnionFind<O>
    where - O::Value: Hash,

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<O: PartialEq + Op> PartialEq for UnionFind<O>
    where - O::Value: PartialEq,

    source§

    fn eq(&self, other: &UnionFind<O>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<O: Op> StructuralPartialEq for UnionFind<O>

    Auto Trait Implementations§

    §

    impl<O> Freeze for UnionFind<O>

    §

    impl<O> RefUnwindSafe for UnionFind<O>
    where - <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for UnionFind<O>
    where - <O as Op>::Value: Send,

    §

    impl<O> Sync for UnionFind<O>
    where - <O as Op>::Value: Sync,

    §

    impl<O> Unpin for UnionFind<O>
    where - <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for UnionFind<O>
    where - <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Struct union_find::UnionFind

    source ·
    pub struct UnionFind<O: Op = ()> { /* private fields */ }

    Implementations§

    source§

    impl<O: Op> UnionFind<O>

    source

    pub fn new(n: usize) -> Self

    source

    pub fn from_values(values: Vec<O::Value>) -> Self

    source

    pub fn find_mut(&mut self, x: usize) -> usize

    source

    pub fn find(&self, x: usize) -> usize

    source

    pub fn same(&self, x: usize, y: usize) -> bool

    source

    pub fn is_root(&self, x: usize) -> bool

    source

    pub fn get_value(&self, x: usize) -> &O::Value

    source

    pub fn value_mut(&mut self, x: usize) -> &mut O::Value

    source

    pub fn value(&self, x: usize) -> O::Valuewhere + O::Value: Copy,

    source

    pub fn union(&mut self, x: usize, y: usize) -> bool

    Trait Implementations§

    source§

    impl<O: Clone + Op> Clone for UnionFind<O>where + O::Value: Clone,

    source§

    fn clone(&self) -> UnionFind<O>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<O: Op> Debug for UnionFind<O>where + O::Value: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<O: Default + Op> Default for UnionFind<O>where + O::Value: Default,

    source§

    fn default() -> UnionFind<O>

    Returns the “default value” for a type. Read more
    source§

    impl<O: Hash + Op> Hash for UnionFind<O>where + O::Value: Hash,

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<O: PartialEq + Op> PartialEq<UnionFind<O>> for UnionFind<O>where + O::Value: PartialEq,

    source§

    fn eq(&self, other: &UnionFind<O>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<O: Op> StructuralPartialEq for UnionFind<O>

    Auto Trait Implementations§

    §

    impl<O> RefUnwindSafe for UnionFind<O>where + <O as Op>::Value: RefUnwindSafe,

    §

    impl<O> Send for UnionFind<O>where + <O as Op>::Value: Send,

    §

    impl<O> Sync for UnionFind<O>where + <O as Op>::Value: Sync,

    §

    impl<O> Unpin for UnionFind<O>where + <O as Op>::Value: Unpin,

    §

    impl<O> UnwindSafe for UnionFind<O>where + <O as Op>::Value: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/union_find/trait.Op.html b/union_find/trait.Op.html index 45388f62..27d25c45 100644 --- a/union_find/trait.Op.html +++ b/union_find/trait.Op.html @@ -1,4 +1,4 @@ -Op in union_find - RustOp in union_find - Rust
    -

    Trait union_find::Op

    source ·
    pub trait Op {
    -    type Value: Default;
    +

    Trait union_find::Op

    source ·
    pub trait Op {
    +    type Value: Default;
     
         // Required methods
         fn singleton() -> Self::Value;
         fn add_edge(x: &mut Self::Value);
         fn graft(parent: &mut Self::Value, child: Self::Value);
     }
    Expand description

    頂点重みを自作したいときに使うトレイトです。

    -

    Required Associated Types§

    source

    type Value: Default

    頂点重み型

    -

    Required Methods§

    source

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値

    -
    source

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき

    -
    source

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Op for ()

    source§

    type Value = ()

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(_x: &mut Self::Value)

    source§

    fn graft(_parent: &mut Self::Value, _child: Self::Value)

    source§

    impl<T: Op, U: Op> Op for (T, U)

    source§

    type Value = (<T as Op>::Value, <U as Op>::Value)

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(x: &mut Self::Value)

    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    source§

    impl<T: Op, U: Op, V: Op> Op for (T, U, V)

    source§

    type Value = (<T as Op>::Value, <U as Op>::Value, <V as Op>::Value)

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(x: &mut Self::Value)

    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    Implementors§

    \ No newline at end of file +

    Required Associated Types§

    source

    type Value: Default

    頂点重み型

    +

    Required Methods§

    source

    fn singleton() -> Self::Value

    UnionFind::new() で構築したときのデフォルト値

    +
    source

    fn add_edge(x: &mut Self::Value)

    連結成分に辺を1本追加したとき

    +
    source

    fn graft(parent: &mut Self::Value, child: Self::Value)

    連結成分同士を新しい辺1本でつないだとき

    +

    Implementations on Foreign Types§

    source§

    impl<T: Op, U: Op, V: Op> Op for (T, U, V)

    §

    type Value = (<T as Op>::Value, <U as Op>::Value, <V as Op>::Value)

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(x: &mut Self::Value)

    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    source§

    impl<T: Op, U: Op> Op for (T, U)

    §

    type Value = (<T as Op>::Value, <U as Op>::Value)

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(x: &mut Self::Value)

    source§

    fn graft(parent: &mut Self::Value, child: Self::Value)

    source§

    impl Op for ()

    §

    type Value = ()

    source§

    fn singleton() -> Self::Value

    source§

    fn add_edge(_x: &mut Self::Value)

    source§

    fn graft(_parent: &mut Self::Value, _child: Self::Value)

    Implementors§

    \ No newline at end of file diff --git a/veb/all.html b/veb/all.html index fe20c08c..ea47c5ce 100644 --- a/veb/all.html +++ b/veb/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Structs

    Enums

    \ No newline at end of file +

    List of all items

    Structs

    Enums

    \ No newline at end of file diff --git a/veb/enum.VebSet.html b/veb/enum.VebSet.html index 2eefd37f..65ba56ef 100644 --- a/veb/enum.VebSet.html +++ b/veb/enum.VebSet.html @@ -1,4 +1,4 @@ -VebSet in veb - RustVebSet in veb - Rust
    -

    Enum veb::VebSet

    source ·
    pub enum VebSet {
    +

    Enum veb::VebSet

    source ·
    pub enum VebSet {
         Internal {
    -        min: usize,
    -        max: usize,
    -        len: usize,
    -        csize: usize,
    -        summary: Box<VebSet>,
    -        chunks: HashMap<usize, VebSet>,
    +        min: usize,
    +        max: usize,
    +        len: usize,
    +        csize: usize,
    +        summary: Box<VebSet>,
    +        chunks: HashMap<usize, VebSet>,
         },
    -    Leaf(u64),
    +    Leaf(u64),
     }
    Expand description

    A van Emde Boas tree.

    -

    Variants§

    §

    Internal

    Fields

    §min: usize
    §max: usize
    §len: usize
    §csize: usize
    §summary: Box<VebSet>
    §

    Leaf(u64)

    Implementations§

    source§

    impl VebSet

    source

    pub fn new(n: usize) -> Self

    Creates a new van Emde Boas tree with the given capacity.

    -
    §Example
    +

    Variants§

    §

    Internal

    Fields

    §min: usize
    §max: usize
    §len: usize
    §csize: usize
    §summary: Box<VebSet>
    §

    Leaf(u64)

    Implementations§

    source§

    impl VebSet

    source

    pub fn new(n: usize) -> Self

    Creates a new van Emde Boas tree with the given capacity.

    +
    Example
    use veb::VebSet;
     let veb = VebSet::new(1000);
    -
    source

    pub fn min(&self) -> Option<usize>

    Returns the minimum element in the set. +

    source

    pub fn min(&self) -> Option<usize>

    Returns the minimum element in the set. Returns None if the set is empty.

    -
    §Example
    +
    Example
    assert_eq!(VebSet::from_iter(vec![]).min(), None);
     assert_eq!(VebSet::from_iter(vec![42]).min(), Some(42));
     assert_eq!(VebSet::from_iter(vec![42, 43]).min(), Some(42));
    -
    source

    pub fn max(&self) -> Option<usize>

    Returns the maximum element in the set. +

    source

    pub fn max(&self) -> Option<usize>

    Returns the maximum element in the set. Returns None if the set is empty.

    -
    §Example
    +
    Example
    assert_eq!(VebSet::from_iter(vec![]).max(), None);
     assert_eq!(VebSet::from_iter(vec![42]).max(), Some(42));
     assert_eq!(VebSet::from_iter(vec![42, 43]).max(), Some(43));
    -
    source

    pub fn len(&self) -> usize

    Returns the number of elements in the set.

    -
    §Example
    +
    source

    pub fn len(&self) -> usize

    Returns the number of elements in the set.

    +
    Example
    use veb::VebSet;
     assert_eq!(VebSet::from_iter(vec![]).len(), 0);
     assert_eq!(VebSet::from_iter(vec![42]).len(), 1);
     assert_eq!(VebSet::from_iter(vec![42, 43]).len(), 2);
    -
    source

    pub fn is_empty(&self) -> bool

    Returns true if the set is empty. +

    source

    pub fn is_empty(&self) -> bool

    Returns true if the set is empty. Returns false if the set is not empty. Equivalent to self.len() == 0.

    -
    §Example
    +
    Example
    assert_eq!(VebSet::from_iter(vec![]).is_empty(), true);
     assert_eq!(VebSet::from_iter(vec![42]).is_empty(), false);
    -
    source

    pub fn insert(&mut self, i: usize) -> bool

    Inserts an element into the set. +

    source

    pub fn insert(&mut self, i: usize) -> bool

    Inserts an element into the set. Returns true if the element was not already present. Returns false if the element was already present.

    -
    §Example
    +
    Example
    let mut veb = VebSet::new(1000);
     assert_eq!(veb.insert(42), true);
     assert_eq!(veb.insert(42), false);
    -
    source

    pub fn remove(&mut self, i: usize) -> bool

    Removes an element from the set. +

    source

    pub fn remove(&mut self, i: usize) -> bool

    Removes an element from the set. Returns true if the element was present. Returns false if the element was not present.

    -
    §Example
    +
    Example
    let mut veb = VebSet::new(1000);
     veb.insert(42);
     assert_eq!(veb.remove(42), true);
     assert_eq!(veb.remove(42), false);
    -
    source

    pub fn succ(&self, i: usize) -> Option<usize>

    Returns the minimum element greater than given element. +

    source

    pub fn succ(&self, i: usize) -> Option<usize>

    Returns the minimum element greater than given element. Returns None if the given element is the maximum element.

    -
    §Example
    +
    Example
    let veb: VebSet = vec![12, 34, 56, 78].into_iter().collect();
     assert_eq!(veb.succ(34), Some(56));
     assert_eq!(veb.succ(78), None);
    -
    source

    pub fn pred(&self, i: usize) -> Option<usize>

    Returns $\min{j \in S \mid j \le i}$.

    -
    §Example
    +
    source

    pub fn pred(&self, i: usize) -> Option<usize>

    Returns $\min{j \in S \mid j \le i}$.

    +
    Example
    let veb: VebSet = vec![12, 34, 56, 78].into_iter().collect();
     assert_eq!(veb.pred(34), Some(12));
     assert_eq!(veb.pred(12), None);
    -
    source

    pub fn pred_eq(&self, i: usize) -> Option<usize>

    Returns $\max{j \in S \mid j \leq i}$.

    -
    source

    pub fn contains(&self, i: usize) -> bool

    Returns true if the set contains the given element. +

    source

    pub fn pred_eq(&self, i: usize) -> Option<usize>

    Returns $\max{j \in S \mid j \leq i}$.

    +
    source

    pub fn contains(&self, i: usize) -> bool

    Returns true if the set contains the given element. Returns false if the set does not contain the given element.

    -
    §Example
    +
    Example
    let veb: VebSet = vec![12, 34, 56, 78].into_iter().collect();
     assert_eq!(veb.contains(34), true);
     assert_eq!(veb.contains(35), false);
    -
    source

    pub fn collect(&self) -> Vec<usize>

    Returns the elements in the set in ascending order. -The elements are collected into a Vec.

    -

    Trait Implementations§

    source§

    impl Debug for VebSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromIterator<usize> for VebSet

    source§

    fn from_iter<I: IntoIterator<Item = usize>>(iter: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    §

    impl Freeze for VebSet

    §

    impl RefUnwindSafe for VebSet

    §

    impl Send for VebSet

    §

    impl Sync for VebSet

    §

    impl Unpin for VebSet

    §

    impl UnwindSafe for VebSet

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    source

    pub fn collect(&self) -> Vec<usize>

    Returns the elements in the set in ascending order. +The elements are collected into a Vec.

    +

    Trait Implementations§

    source§

    impl Debug for VebSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromIterator<usize> for VebSet

    source§

    fn from_iter<I: IntoIterator<Item = usize>>(iter: I) -> Self

    Creates a value from an iterator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/veb/index.html b/veb/index.html index 4b7ff302..6af7a49a 100644 --- a/veb/index.html +++ b/veb/index.html @@ -1,4 +1,4 @@ -veb - Rustveb - Rust
    -

    Crate veb

    source ·
    Expand description

    A predecessor data structure based on van Emde Boas trees.

    +

    Crate veb

    source ·
    Expand description

    A predecessor data structure based on van Emde Boas trees.

    This is implemented with hash maps, so new() is $O(\log\log n)$.

    -

    §Example

    +

    Example

    let mut veb = VebSet::new(1000); // capacity
     veb.insert(42);
     assert!(veb.contains(42));
    @@ -52,7 +52,7 @@ 

    §Example

    assert_eq!(veb.len(), 4); assert_eq!(veb.collect(), vec![12, 34, 56, 78]); // Useful for debugging
    -

    §Operations

    +

    Operations

    NOTE: min, max, succ, and pred return None if the set is empty.

    @@ -66,7 +66,7 @@

    §Operations

    - +
    OperationTime ComplexityExplanation
    insert(x)$O(\log\log n)$$S \leftarrow S \cup {x}$
    pred_eq(x)$O(\log\log n)$$\max\left( x^▲ \right)$
    len()$O(1)$$|S|$
    is_empty()$O(1)$$S = \emptyset$
    collect()$O(|S|\log\log n)$Convert to a Vec
    collect()$O(|S|\log\log n)$Convert to a Vec
    -

    Structs§

    • A van Emde Boas tree-based map. -The map is implemented as a van Emde Boas tree with a hash map.

    Enums§

    \ No newline at end of file +

    Structs

    • A van Emde Boas tree-based map. +The map is implemented as a van Emde Boas tree with a hash map.

    Enums

    \ No newline at end of file diff --git a/veb/struct.VebMap.html b/veb/struct.VebMap.html index 5a3d55f0..13d750b8 100644 --- a/veb/struct.VebMap.html +++ b/veb/struct.VebMap.html @@ -1,4 +1,4 @@ -VebMap in veb - RustVebMap in veb - Rust
    -

    Struct veb::VebMap

    source ·
    pub struct VebMap<V> { /* private fields */ }
    Expand description

    A van Emde Boas tree-based map. +

    Struct veb::VebMap

    source ·
    pub struct VebMap<V> { /* private fields */ }
    Expand description

    A van Emde Boas tree-based map. The map is implemented as a van Emde Boas tree with a hash map.

    -

    §Example

    +

    Example

    use veb::VebMap;
    -let mut veb = VebMap::from_iter(vec![(42, "foo"), (43, "bar")]);
    -assert_eq!(veb.get(42), Some(&"foo"));
    -assert_eq!(veb.get(43), Some(&"bar"));
    +let mut veb = VebMap::from_iter(vec![(42, "foo"), (43, "bar")]);
    +assert_eq!(veb.get(42), Some(&"foo"));
    +assert_eq!(veb.get(43), Some(&"bar"));
     assert_eq!(veb.get(44), None);
     
    -assert_eq!(veb.min(), Some((42, &"foo")));
    +assert_eq!(veb.min(), Some((42, &"foo")));
     assert_eq!(veb.min_key(), Some(42));
    -assert_eq!(veb.min_value(), Some(&"foo"));
    -

    Implementations§

    source§

    impl<V> VebMap<V>

    source

    pub fn new(n: usize) -> Self

    Creates a new van Emde Boas tree-based map with the given capacity.

    -
    §Example
    +assert_eq!(veb.min_value(), Some(&"foo"));
    +

    Implementations§

    source§

    impl<V> VebMap<V>

    source

    pub fn new(n: usize) -> Self

    Creates a new van Emde Boas tree-based map with the given capacity.

    +
    Example
    let veb = VebMap::<()>::new(1000);
    -
    source

    pub fn insert(&mut self, i: usize, v: V) -> Option<V>

    Inserts an element into the map. +

    source

    pub fn insert(&mut self, i: usize, v: V) -> Option<V>

    Inserts an element into the map. Returns the previous value if the key was already present.

    -
    §Example
    +
    Example
    let mut veb = VebMap::new(1000);
    -assert_eq!(veb.insert(42, "foo"), None);
    -assert_eq!(veb.insert(42, "bar"), Some("foo"));
    -
    source

    pub fn remove(&mut self, i: usize) -> Option<V>

    Returns the value at $i$.

    -
    §Example
    +assert_eq!(veb.insert(42, "foo"), None); +assert_eq!(veb.insert(42, "bar"), Some("foo"));
    +
    source

    pub fn remove(&mut self, i: usize) -> Option<V>

    Returns the value at $i$.

    +
    Example
    let mut veb = VebMap::new(1000);
    -veb.insert(42, "foo");
    -assert_eq!(veb.remove(42), Some("foo"));
    +veb.insert(42, "foo");
    +assert_eq!(veb.remove(42), Some("foo"));
     assert_eq!(veb.remove(42), None);
    -
    source

    pub fn get(&self, i: usize) -> Option<&V>

    Returns the value corresponding to the key.

    -
    §Example
    +
    source

    pub fn get(&self, i: usize) -> Option<&V>

    Returns the value corresponding to the key.

    +
    Example
    let mut veb = VebMap::new(1000);
    -veb.insert(42, "foo");
    -assert_eq!(veb.get(42), Some(&"foo"));
    +veb.insert(42, "foo");
    +assert_eq!(veb.get(42), Some(&"foo"));
     assert_eq!(veb.get(43), None);
    -
    source

    pub fn get_mut(&mut self, i: usize) -> Option<&mut V>

    Returns a mutable reference to the value corresponding to the key.

    -
    §Example
    +
    source

    pub fn get_mut(&mut self, i: usize) -> Option<&mut V>

    Returns a mutable reference to the value corresponding to the key.

    +
    Example
    let mut veb = VebMap::new(1000);
    -veb.insert(42, "foo");
    -assert_eq!(veb.get_mut(42), Some(&mut "foo"));
    +veb.insert(42, "foo");
    +assert_eq!(veb.get_mut(42), Some(&mut "foo"));
     assert_eq!(veb.get_mut(43), None);
    -
    source

    pub fn min_key(&self) -> Option<usize>

    Returns the key $\min \left( S \right)$.

    -
    §Example
    +
    source

    pub fn min_key(&self) -> Option<usize>

    Returns the key $\min \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.min(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.min(), Some((42, &"foo")));
    -
    source

    pub fn min_value(&self) -> Option<&V>

    Returns the value at $\min \left( S \right)$.

    -
    §Example
    +let veb = VebMap::from_iter(vec![(42, "foo")]); +assert_eq!(veb.min(), Some((42, &"foo")));
    +
    source

    pub fn min_value(&self) -> Option<&V>

    Returns the value at $\min \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.min_value(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.min_value(), Some(&"foo"));
    -
    source

    pub fn min(&self) -> Option<(usize, &V)>

    Returns the entry at $\min \left( S \right)$.

    -
    §Example
    +let veb = VebMap::from_iter(vec![(42, "foo")]); +assert_eq!(veb.min_value(), Some(&"foo"));
    +
    source

    pub fn min(&self) -> Option<(usize, &V)>

    Returns the entry at $\min \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.min(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.min(), Some((42, &"foo")));
    -
    source

    pub fn max_key(&self) -> Option<usize>

    Returns the key $\max \left( S \right)$.

    -
    §Example
    +let veb = VebMap::from_iter(vec![(42, "foo")]); +assert_eq!(veb.min(), Some((42, &"foo")));
    +
    source

    pub fn max_key(&self) -> Option<usize>

    Returns the key $\max \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.max(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.max(), Some((42, &"foo")));
    -
    source

    pub fn max_value(&self) -> Option<&V>

    Returns the value at $\max \left( S \right)$.

    -
    §Example
    +let veb = VebMap::from_iter(vec![(42, "foo")]); +assert_eq!(veb.max(), Some((42, &"foo")));
    +
    source

    pub fn max_value(&self) -> Option<&V>

    Returns the value at $\max \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.max_value(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.max_value(), Some(&"foo"));
    -
    source

    pub fn max(&self) -> Option<(usize, &V)>

    Returns the entry at $\max \left( S \right)$.

    -
    §Example
    +let veb = VebMap::from_iter(vec![(42, "foo")]); +assert_eq!(veb.max_value(), Some(&"foo"));
    +
    source

    pub fn max(&self) -> Option<(usize, &V)>

    Returns the entry at $\max \left( S \right)$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.max(), None);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    -assert_eq!(veb.max(), Some((42, &"foo")));
    -
    source

    pub fn succ_key(&self, i: usize) -> Option<usize>

    Returns the key $\min \left (i^△ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +let veb = VebMap::from_iter(vec![(42, "foo")]);
    +assert_eq!(veb.max(), Some((42, &"foo")));
    +
    source

    pub fn succ_key(&self, i: usize) -> Option<usize>

    Returns the key $\min \left (i^△ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
     assert_eq!(veb.succ_key(34), Some(56));
    -assert_eq!(veb.succ_value(34), Some(&"baz"));
    -assert_eq!(veb.succ(34), Some((56, &"baz")));
    +assert_eq!(veb.succ_value(34), Some(&"baz"));
    +assert_eq!(veb.succ(34), Some((56, &"baz")));
     assert_eq!(veb.succ(78), None);
    -
    source

    pub fn succ_value(&self, i: usize) -> Option<&V>

    Returns the value at $\min \left (i^△ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.succ_value(34), Some(&"baz"));
    +
    source

    pub fn succ_value(&self, i: usize) -> Option<&V>

    Returns the value at $\min \left (i^△ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.succ_value(34), Some(&"baz"));
     assert_eq!(veb.succ_value(78), None);
    -
    source

    pub fn succ(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\min \left (i^△ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.succ(34), Some((56, &"baz")));
    +
    source

    pub fn succ(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\min \left (i^△ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.succ(34), Some((56, &"baz")));
     assert_eq!(veb.succ(78), None);
    -
    source

    pub fn succ_eq_key(&self, i: usize) -> Option<usize>

    Returns the key $\min \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +
    source

    pub fn succ_eq_key(&self, i: usize) -> Option<usize>

    Returns the key $\min \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
     assert_eq!(veb.succ_eq_key(34), Some(34));
     assert_eq!(veb.succ_eq_key(35), Some(56));
    -
    source

    pub fn succ_eq_value(&self, i: usize) -> Option<&V>

    Returns the value at $\min \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.succ_eq_value(34), Some(&"bar"));
    -assert_eq!(veb.succ_eq_value(35), Some(&"baz"));
    -
    source

    pub fn succ_eq(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\min \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.succ_eq(34), Some((34, &"bar")));
    -assert_eq!(veb.succ_eq(35), Some((56, &"baz")));
    -
    source

    pub fn pred_key(&self, i: usize) -> Option<usize>

    Returns the key $\max \left (i^▽ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +
    source

    pub fn succ_eq_value(&self, i: usize) -> Option<&V>

    Returns the value at $\min \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.succ_eq_value(34), Some(&"bar"));
    +assert_eq!(veb.succ_eq_value(35), Some(&"baz"));
    +
    source

    pub fn succ_eq(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\min \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.succ_eq(34), Some((34, &"bar")));
    +assert_eq!(veb.succ_eq(35), Some((56, &"baz")));
    +
    source

    pub fn pred_key(&self, i: usize) -> Option<usize>

    Returns the key $\max \left (i^▽ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
     assert_eq!(veb.pred_key(34), Some(12));
    -assert_eq!(veb.pred_value(34), Some(&"foo"));
    -assert_eq!(veb.pred(34), Some((12, &"foo")));
    +assert_eq!(veb.pred_value(34), Some(&"foo"));
    +assert_eq!(veb.pred(34), Some((12, &"foo")));
     assert_eq!(veb.pred(12), None);
    -
    source

    pub fn pred_value(&self, i: usize) -> Option<&V>

    Returns the value at $\max \left (i^▽ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.pred_value(34), Some(&"foo"));
    +
    source

    pub fn pred_value(&self, i: usize) -> Option<&V>

    Returns the value at $\max \left (i^▽ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.pred_value(34), Some(&"foo"));
     assert_eq!(veb.pred_value(12), None);
    -
    source

    pub fn pred(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\max \left (i^▽ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.pred(34), Some((12, &"foo")));
    +
    source

    pub fn pred(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\max \left (i^▽ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.pred(34), Some((12, &"foo")));
     assert_eq!(veb.pred(12), None);
    -
    source

    pub fn pred_eq_key(&self, i: usize) -> Option<usize>

    Returns the key $\max \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +
    source

    pub fn pred_eq_key(&self, i: usize) -> Option<usize>

    Returns the key $\max \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
     assert_eq!(veb.pred_eq_key(34), Some(34));
     assert_eq!(veb.pred_eq_key(33), Some(12));
    -
    source

    pub fn pred_eq_value(&self, i: usize) -> Option<&V>

    Returns the value at $\max \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.pred_eq_value(34), Some(&"bar"));
    -assert_eq!(veb.pred_eq_value(33), Some(&"foo"));
    -
    source

    pub fn pred_eq(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\max \left (i^▲ \right)$.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    -assert_eq!(veb.pred_eq(34), Some((34, &"bar")));
    -assert_eq!(veb.pred_eq(33), Some((12, &"foo")));
    -
    source

    pub fn len(&self) -> usize

    Returns $|S|$.

    -
    §Example
    +
    source

    pub fn pred_eq_value(&self, i: usize) -> Option<&V>

    Returns the value at $\max \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.pred_eq_value(34), Some(&"bar"));
    +assert_eq!(veb.pred_eq_value(33), Some(&"foo"));
    +
    source

    pub fn pred_eq(&self, i: usize) -> Option<(usize, &V)>

    Returns the entry at $\max \left (i^▲ \right)$.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +assert_eq!(veb.pred_eq(34), Some((34, &"bar")));
    +assert_eq!(veb.pred_eq(33), Some((12, &"foo")));
    +
    source

    pub fn len(&self) -> usize

    Returns $|S|$.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.len(), 0);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    +let veb = VebMap::from_iter(vec![(42, "foo")]);
     assert_eq!(veb.len(), 1);
    -
    source

    pub fn is_empty(&self) -> bool

    Returns true if the map is empty.

    -
    §Example
    +
    source

    pub fn is_empty(&self) -> bool

    Returns true if the map is empty.

    +
    Example
    let veb = VebMap::<()>::from_iter(vec![]);
     assert_eq!(veb.is_empty(), true);
    -let veb = VebMap::from_iter(vec![(42, "foo")]);
    +let veb = VebMap::from_iter(vec![(42, "foo")]);
     assert_eq!(veb.is_empty(), false);
    -
    source

    pub fn contains_key(&self, i: usize) -> bool

    Returns true if the map contains the given key.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(42, "foo")]);
    +
    source

    pub fn contains_key(&self, i: usize) -> bool

    Returns true if the map contains the given key.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(42, "foo")]);
     assert_eq!(veb.contains_key(42), true);
     assert_eq!(veb.contains_key(43), false);
    -
    source

    pub fn collect(&self) -> Vec<(usize, &V)>

    Returns the elements in the map in ascending order. -The elements are collected into a Vec.

    -
    §Example
    -
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
    +
    source

    pub fn collect(&self) -> Vec<(usize, &V)>

    Returns the elements in the map in ascending order. +The elements are collected into a Vec.

    +
    Example
    +
    let veb = VebMap::from_iter(vec![(12, "foo"), (34, "bar"), (56, "baz"), (78, "qux")]);
     assert_eq!(veb.collect(), vec![
    -    (12, &"foo"),
    -    (34, &"bar"),
    -    (56, &"baz"),
    -    (78, &"qux")
    +    (12, &"foo"),
    +    (34, &"bar"),
    +    (56, &"baz"),
    +    (78, &"qux")
     ]);
    -

    Trait Implementations§

    source§

    impl<V: Debug> Debug for VebMap<V>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<V> FromIterator<(usize, V)> for VebMap<V>

    source§

    fn from_iter<I: IntoIterator<Item = (usize, V)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<V> Index<usize> for VebMap<V>

    source§

    type Output = V

    The returned type after indexing.
    source§

    fn index(&self, i: usize) -> &V

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<V> IndexMut<usize> for VebMap<V>

    source§

    fn index_mut(&mut self, i: usize) -> &mut V

    Performs the mutable indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<V> Freeze for VebMap<V>

    §

    impl<V> RefUnwindSafe for VebMap<V>
    where - V: RefUnwindSafe,

    §

    impl<V> Send for VebMap<V>
    where - V: Send,

    §

    impl<V> Sync for VebMap<V>
    where - V: Sync,

    §

    impl<V> Unpin for VebMap<V>
    where - V: Unpin,

    §

    impl<V> UnwindSafe for VebMap<V>
    where - V: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<V: Debug> Debug for VebMap<V>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<V> FromIterator<(usize, V)> for VebMap<V>

    source§

    fn from_iter<I: IntoIterator<Item = (usize, V)>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl<V> Index<usize> for VebMap<V>

    §

    type Output = V

    The returned type after indexing.
    source§

    fn index(&self, i: usize) -> &V

    Performs the indexing (container[index]) operation. Read more
    source§

    impl<V> IndexMut<usize> for VebMap<V>

    source§

    fn index_mut(&mut self, i: usize) -> &mut V

    Performs the mutable indexing (container[index]) operation. Read more

    Auto Trait Implementations§

    §

    impl<V> RefUnwindSafe for VebMap<V>where + V: RefUnwindSafe,

    §

    impl<V> Send for VebMap<V>where + V: Send,

    §

    impl<V> Sync for VebMap<V>where + V: Sync,

    §

    impl<V> Unpin for VebMap<V>where + V: Unpin,

    §

    impl<V> UnwindSafe for VebMap<V>where + V: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/vec_lines/all.html b/vec_lines/all.html index dbad7b32..ae1cefb2 100644 --- a/vec_lines/all.html +++ b/vec_lines/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/vec_lines/enum.DecreasingTilt.html b/vec_lines/enum.DecreasingTilt.html index 5ffafbac..c59720ac 100644 --- a/vec_lines/enum.DecreasingTilt.html +++ b/vec_lines/enum.DecreasingTilt.html @@ -1,4 +1,4 @@ -DecreasingTilt in vec_lines - RustDecreasingTilt in vec_lines - Rust
    -

    Enum vec_lines::DecreasingTilt

    source ·
    pub enum DecreasingTilt {}
    Expand description

    傾き単調減少を意味するマーカー

    -

    Trait Implementations§

    source§

    impl Clone for DecreasingTilt

    source§

    fn clone(&self) -> DecreasingTilt

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Constraint for DecreasingTilt

    source§

    fn ok<T: Signed>(Line: Line<T>, Line: Line<T>) -> bool

    source§

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    source§

    impl Debug for DecreasingTilt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DecreasingTilt

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for DecreasingTilt

    source§

    fn eq(&self, other: &DecreasingTilt) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for DecreasingTilt

    source§

    impl StructuralPartialEq for DecreasingTilt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub enum DecreasingTilt {}
    Expand description

    傾き単調減少を意味するマーカー

    +

    Trait Implementations§

    source§

    impl Clone for DecreasingTilt

    source§

    fn clone(&self) -> DecreasingTilt

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Constraint for DecreasingTilt

    source§

    fn ok<T: Signed>(Line: Line<T>, Line: Line<T>) -> bool

    source§

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    source§

    impl Debug for DecreasingTilt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for DecreasingTilt

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<DecreasingTilt> for DecreasingTilt

    source§

    fn eq(&self, other: &DecreasingTilt) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for DecreasingTilt

    source§

    impl StructuralEq for DecreasingTilt

    source§

    impl StructuralPartialEq for DecreasingTilt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/vec_lines/enum.IncreasingTilt.html b/vec_lines/enum.IncreasingTilt.html index 7d223f4b..95c6b877 100644 --- a/vec_lines/enum.IncreasingTilt.html +++ b/vec_lines/enum.IncreasingTilt.html @@ -1,4 +1,4 @@ -IncreasingTilt in vec_lines - RustIncreasingTilt in vec_lines - Rust
    -

    Enum vec_lines::IncreasingTilt

    source ·
    pub enum IncreasingTilt {}
    Expand description

    傾き単調増加を意味するマーカー

    -

    Trait Implementations§

    source§

    impl Clone for IncreasingTilt

    source§

    fn clone(&self) -> IncreasingTilt

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Constraint for IncreasingTilt

    source§

    fn ok<T: Signed>(Line: Line<T>, Line: Line<T>) -> bool

    source§

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    source§

    impl Debug for IncreasingTilt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for IncreasingTilt

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for IncreasingTilt

    source§

    fn eq(&self, other: &IncreasingTilt) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for IncreasingTilt

    source§

    impl StructuralPartialEq for IncreasingTilt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub enum IncreasingTilt {}
    Expand description

    傾き単調増加を意味するマーカー

    +

    Trait Implementations§

    source§

    impl Clone for IncreasingTilt

    source§

    fn clone(&self) -> IncreasingTilt

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Constraint for IncreasingTilt

    source§

    fn ok<T: Signed>(Line: Line<T>, Line: Line<T>) -> bool

    source§

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    source§

    impl Debug for IncreasingTilt

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Hash for IncreasingTilt

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<IncreasingTilt> for IncreasingTilt

    source§

    fn eq(&self, other: &IncreasingTilt) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for IncreasingTilt

    source§

    impl StructuralEq for IncreasingTilt

    source§

    impl StructuralPartialEq for IncreasingTilt

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/vec_lines/index.html b/vec_lines/index.html index 34d73f97..a20098ef 100644 --- a/vec_lines/index.html +++ b/vec_lines/index.html @@ -1,4 +1,4 @@ -vec_lines - Rustvec_lines - Rust
    -

    Crate vec_lines

    source ·
    Expand description

    傾き単調な直線の列を Vec で管理します。

    +

    Crate vec_lines

    source ·
    Expand description

    傾き単調な直線の列を Vec で管理します。

    基本的な使い方は VecLines をご覧ください。

    -

    Structs§

    • 一次関数 $ax + b$ を、[a, b] の形で管理します。
    • 傾き単調な直線の列を Vec で管理します。

    Enums§

    Traits§

    • 傾きがどちら向きに単調かをあらわすマーカー
    • 符号つき整数

    Type Aliases§

    \ No newline at end of file +

    Structs

    • 一次関数 $ax + b$ を、[a, b] の形で管理します。
    • 傾き単調な直線の列を Vec で管理します。

    Enums

    Traits

    • 傾きがどちら向きに単調かをあらわすマーカー
    • 符号つき整数

    Type Definitions

    \ No newline at end of file diff --git a/vec_lines/struct.Line.html b/vec_lines/struct.Line.html index ff138dcc..f7de14d3 100644 --- a/vec_lines/struct.Line.html +++ b/vec_lines/struct.Line.html @@ -1,4 +1,4 @@ -Line in vec_lines - RustLine in vec_lines - Rust
    -

    Struct vec_lines::Line

    source ·
    pub struct Line<T>(pub [T; 2]);
    Expand description

    一次関数 $ax + b$ を、[a, b] の形で管理します。

    +

    Struct vec_lines::Line

    source ·
    pub struct Line<T>(pub [T; 2]);
    Expand description

    一次関数 $ax + b$ を、[a, b] の形で管理します。

    中身は .0 でも into_coeff でもとれます。

    -

    Tuple Fields§

    §0: [T; 2]

    Implementations§

    source§

    impl<T: Signed> Line<T>

    source

    pub fn eval(self, x: T) -> T

    特定の x 座標における値を計算します。

    -
    §使い方
    +

    Tuple Fields§

    §0: [T; 2]

    Implementations§

    source§

    impl<T: Signed> Line<T>

    source

    pub fn eval(self, x: T) -> T

    特定の x 座標における値を計算します。

    +
    使い方
    let line = Line([2, 10]);
     assert_eq!(line.eval(2), 14);
    -
    source

    pub fn into_coeff(self) -> [T; 2]

    係数を返します。

    -
    §使い方
    +
    source

    pub fn into_coeff(self) -> [T; 2]

    係数を返します。

    +
    使い方
    let line = Line([2, 10]);
     assert_eq!(line.into_coeff(), [2, 10]);
    -

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Line<T>

    source§

    fn clone(&self) -> Line<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Line<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default> Default for Line<T>

    source§

    fn default() -> Line<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T: Hash> Hash for Line<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq for Line<T>

    source§

    fn eq(&self, other: &Line<T>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Copy> Copy for Line<T>

    source§

    impl<T: Eq> Eq for Line<T>

    source§

    impl<T> StructuralPartialEq for Line<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for Line<T>
    where - T: Freeze,

    §

    impl<T> RefUnwindSafe for Line<T>
    where - T: RefUnwindSafe,

    §

    impl<T> Send for Line<T>
    where - T: Send,

    §

    impl<T> Sync for Line<T>
    where - T: Sync,

    §

    impl<T> Unpin for Line<T>
    where - T: Unpin,

    §

    impl<T> UnwindSafe for Line<T>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Clone> Clone for Line<T>

    source§

    fn clone(&self) -> Line<T>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug> Debug for Line<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Default> Default for Line<T>

    source§

    fn default() -> Line<T>

    Returns the “default value” for a type. Read more
    source§

    impl<T: Hash> Hash for Line<T>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq> PartialEq<Line<T>> for Line<T>

    source§

    fn eq(&self, other: &Line<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Copy> Copy for Line<T>

    source§

    impl<T: Eq> Eq for Line<T>

    source§

    impl<T> StructuralEq for Line<T>

    source§

    impl<T> StructuralPartialEq for Line<T>

    Auto Trait Implementations§

    §

    impl<T> RefUnwindSafe for Line<T>where + T: RefUnwindSafe,

    §

    impl<T> Send for Line<T>where + T: Send,

    §

    impl<T> Sync for Line<T>where + T: Sync,

    §

    impl<T> Unpin for Line<T>where + T: Unpin,

    §

    impl<T> UnwindSafe for Line<T>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/vec_lines/struct.VecLines.html b/vec_lines/struct.VecLines.html index 011e1f7e..3f9bb446 100644 --- a/vec_lines/struct.VecLines.html +++ b/vec_lines/struct.VecLines.html @@ -1,4 +1,4 @@ -VecLines in vec_lines - RustVecLines in vec_lines - Rust
    -

    Struct vec_lines::VecLines

    source ·
    pub struct VecLines<T, C> { /* private fields */ }
    Expand description

    傾き単調な直線の列を Vec で管理します。

    -

    §使い方

    +

    Struct vec_lines::VecLines

    source ·
    pub struct VecLines<T, C> { /* private fields */ }
    Expand description

    傾き単調な直線の列を Vec で管理します。

    +

    使い方

    // 傾きが単調減少な直線の列を管理します。
     let mut lines = VecLinesDecreasing::<i32>::new();
     
    @@ -52,7 +52,7 @@ 

    §使い方

    assert_eq!(lines.get(0).unwrap().eval(100), 100); assert_eq!(lines.get(1).unwrap().eval(100), 10); assert_eq!(lines.get(2).unwrap().eval(100), -70);
    -

    §傾きの等しい直線を入れたときの挙動

    +

    傾きの等しい直線を入れたときの挙動

    定数項を比較して、真に改善している場合は直前のものを消して挿入し、 そこから改めて通常の不要直線除去のアルゴリズムを実行します。 一方改善していない場合は挿入せず処理を終了します。

    @@ -85,8 +85,8 @@

    1, 0]); let expected = vec![Line([1, 0]), Line([-1, 0])]; assert_eq!(lines.iter_copied().collect::<Vec<_>>(), expected);

    -

    Implementations§

    source§

    impl<T: Signed, C: Constraint> VecLines<T, C>

    source

    pub fn new() -> Self

    傾き単調な直線の列を Vec で管理します。

    -
    §使い方
    +

    Implementations§

    source§

    impl<T: Signed, C: Constraint> VecLines<T, C>

    source

    pub fn new() -> Self

    傾き単調な直線の列を Vec で管理します。

    +
    使い方
    // 傾きが単調減少な直線の列を管理します。
     let lines = VecLinesDecreasing::<i32>::new();
     
    @@ -96,19 +96,19 @@ 
    §使い方// それぞれ、別名を使わずに構築する方法です。 let lines = VecLines::<i32, DecreasingTilt>::new(); let lines = VecLines::<i32, IncreasingTilt>::new();
    -
    source

    pub fn is_empty(&self) -> bool

    管理している直線が 0 本のとき true、さもなくば false を返します。

    -
    §使い方
    +
    source

    pub fn is_empty(&self) -> bool

    管理している直線が 0 本のとき true、さもなくば false を返します。

    +
    使い方
    let lines = VecLinesDecreasing::<i32>::new();
     assert!(lines.is_empty());
    -
    source

    pub fn len(&self) -> usize

    管理している直線の本数を返します。

    +
    source

    pub fn len(&self) -> usize

    管理している直線の本数を返します。

    不要な直線が自動的に削除されると、このメソッドの返す値も減少します。

    -
    §使い方
    +
    使い方
    let mut lines = VecLinesDecreasing::<i32>::new();
     assert_eq!(lines.len(), 0);
     
     lines.push([0, 0]);
    -
    source

    pub fn get(&self, index: usize) -> Option<Line<T>>

    index 番目の直線を返します。

    -
    §使い方
    +
    source

    pub fn get(&self, index: usize) -> Option<Line<T>>

    index 番目の直線を返します。

    +
    使い方
    let mut lines = VecLinesDecreasing::<i32>::new();
     lines.push([1, 0]);
     lines.push([0, 10]);
    @@ -116,14 +116,14 @@ 
    §使い方// 直線を手に入れたら、次は `Line::eval` で評価です。 assert_eq!(lines.get(0).unwrap().eval(100), 100);
    -
    source

    pub fn push(&mut self, line: [T; 2])

    後ろに直線を挿入します。

    -
    §Panics
    +
    source

    pub fn push(&mut self, line: [T; 2])

    後ろに直線を挿入します。

    +
    Panics
    • マーカー C の定める傾きの単調性に反するとき。
    -
    §計算量
    +
    計算量

    償却定数時間。

    -
    §使い方
    +
    使い方
    let mut lines = VecLinesDecreasing::<i32>::new();
     lines.push([1, 0]);
     lines.push([0, 10]);
    @@ -131,10 +131,10 @@ 
    §使い方// 直線を手に入れたら、次は `Line::eval` で評価です。 assert_eq!(lines.get(0).unwrap().eval(100), 100);
    -
    source

    pub fn eval_gcc(&self, x: T) -> Option<T>

    黄金分割探索で最適値を計算します。

    -
    §計算量
    +
    source

    pub fn eval_gcc(&self, x: T) -> Option<T>

    黄金分割探索で最適値を計算します。

    +
    計算量

    管理している直線の本数を n として、Θ( lg n )。

    -
    §使い方
    +
    使い方
    let mut lines = VecLinesDecreasing::<i32>::new();
     lines.push([1, 0]);
     lines.push([0, 10]);
    @@ -143,8 +143,8 @@ 
    §使い方assert_eq!(lines.eval_gcc(-10), Some(-10)); // x assert_eq!(lines.eval_gcc(15), Some(10)); // 10 assert_eq!(lines.eval_gcc(40), Some(-10)); // -x + 30
    -
    source

    pub fn iter_copied(&self) -> impl '_ + Iterator<Item = Line<T>>

    管理している直線を順番に返すイテレータを返します。

    -
    §使い方
    +
    source

    pub fn iter_copied(&self) -> impl '_ + Iterator<Item = Line<T>>

    管理している直線を順番に返すイテレータを返します。

    +
    使い方
    let mut lines = VecLinesDecreasing::<i32>::new();
     lines.push([1, 0]);
     lines.push([0, 10]);
    @@ -155,24 +155,24 @@ 
    §使い方_>>(); assert_eq!(lines, vec![[1, 0], [0, 10], [-1, 30]]);
    -

    Trait Implementations§

    source§

    impl<T: Clone, C: Clone> Clone for VecLines<T, C>

    source§

    fn clone(&self) -> VecLines<T, C>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, C: Debug> Debug for VecLines<T, C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Signed, C: Constraint> Default for VecLines<T, C>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Hash, C: Hash> Hash for VecLines<T, C>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq, C: PartialEq> PartialEq for VecLines<T, C>

    source§

    fn eq(&self, other: &VecLines<T, C>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<T: Eq, C: Eq> Eq for VecLines<T, C>

    source§

    impl<T, C> StructuralPartialEq for VecLines<T, C>

    Auto Trait Implementations§

    §

    impl<T, C> Freeze for VecLines<T, C>

    §

    impl<T, C> RefUnwindSafe for VecLines<T, C>
    where - T: RefUnwindSafe,

    §

    impl<T, C> Send for VecLines<T, C>
    where - T: Send,

    §

    impl<T, C> Sync for VecLines<T, C>
    where - T: Sync,

    §

    impl<T, C> Unpin for VecLines<T, C>
    where - T: Unpin,

    §

    impl<T, C> UnwindSafe for VecLines<T, C>
    where - T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<T: Clone, C: Clone> Clone for VecLines<T, C>

    source§

    fn clone(&self) -> VecLines<T, C>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<T: Debug, C: Debug> Debug for VecLines<T, C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T: Signed, C: Constraint> Default for VecLines<T, C>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<T: Hash, C: Hash> Hash for VecLines<T, C>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<T: PartialEq, C: PartialEq> PartialEq<VecLines<T, C>> for VecLines<T, C>

    source§

    fn eq(&self, other: &VecLines<T, C>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: Eq, C: Eq> Eq for VecLines<T, C>

    source§

    impl<T, C> StructuralEq for VecLines<T, C>

    source§

    impl<T, C> StructuralPartialEq for VecLines<T, C>

    Auto Trait Implementations§

    §

    impl<T, C> RefUnwindSafe for VecLines<T, C>where + T: RefUnwindSafe,

    §

    impl<T, C> Send for VecLines<T, C>where + T: Send,

    §

    impl<T, C> Sync for VecLines<T, C>where + T: Sync,

    §

    impl<T, C> Unpin for VecLines<T, C>where + T: Unpin,

    §

    impl<T, C> UnwindSafe for VecLines<T, C>where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/vec_lines/trait.Constraint.html b/vec_lines/trait.Constraint.html index 30962c50..f8ddb627 100644 --- a/vec_lines/trait.Constraint.html +++ b/vec_lines/trait.Constraint.html @@ -1,4 +1,4 @@ -Constraint in vec_lines - RustConstraint in vec_lines - Rust
    -

    Trait vec_lines::Constraint

    source ·
    pub trait Constraint:
    -    Clone
    -    + Debug
    -    + Hash
    -    + PartialEq {
    +

    Trait vec_lines::Constraint

    source ·
    pub trait Constraint: Clone + Debug + Hash + PartialEq {
         // Required methods
    -    fn ok<T: Signed>(prv: Line<T>, crr: Line<T>) -> bool;
    -    fn strictly_better<T: Signed>(x: T, y: T) -> bool;
    +    fn ok<T: Signed>(prv: Line<T>, crr: Line<T>) -> bool;
    +    fn strictly_better<T: Signed>(x: T, y: T) -> bool;
     }
    Expand description

    傾きがどちら向きに単調かをあらわすマーカー

    -

    Required Methods§

    source

    fn ok<T: Signed>(prv: Line<T>, crr: Line<T>) -> bool

    source

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn ok<T: Signed>(prv: Line<T>, crr: Line<T>) -> bool

    source

    fn strictly_better<T: Signed>(x: T, y: T) -> bool

    Implementors§

    \ No newline at end of file diff --git a/vec_lines/trait.Signed.html b/vec_lines/trait.Signed.html index 804a3825..284c41f2 100644 --- a/vec_lines/trait.Signed.html +++ b/vec_lines/trait.Signed.html @@ -1,4 +1,4 @@ -Signed in vec_lines - RustSigned in vec_lines - Rust
    -

    Trait vec_lines::Signed

    source ·
    pub trait Signed:
    -    Debug
    -    + Clone
    -    + Copy
    -    + Default
    -    + Hash
    -    + PartialOrd
    -    + Add<Output = Self>
    -    + Sub<Output = Self>
    -    + Mul<Output = Self> { }
    Expand description

    符号つき整数

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl Signed for i8

    source§

    impl Signed for i16

    source§

    impl Signed for i32

    source§

    impl Signed for i64

    source§

    impl Signed for i128

    source§

    impl Signed for isize

    Implementors§

    \ No newline at end of file +

    Trait vec_lines::Signed

    source ·
    pub trait Signed: Debug + Clone + Copy + Default + Hash + PartialOrd + Add<Output = Self> + Sub<Output = Self> + Mul<Output = Self> { }
    Expand description

    符号つき整数

    +

    Implementations on Foreign Types§

    source§

    impl Signed for i64

    source§

    impl Signed for i8

    source§

    impl Signed for isize

    source§

    impl Signed for i128

    source§

    impl Signed for i32

    source§

    impl Signed for i16

    Implementors§

    \ No newline at end of file diff --git a/vec_lines/type.VecLinesDecreasing.html b/vec_lines/type.VecLinesDecreasing.html index 8f5fa33b..1984a45c 100644 --- a/vec_lines/type.VecLinesDecreasing.html +++ b/vec_lines/type.VecLinesDecreasing.html @@ -1,4 +1,4 @@ -VecLinesDecreasing in vec_lines - RustVecLinesDecreasing in vec_lines - Rust
    -

    Type Alias vec_lines::VecLinesDecreasing

    source ·
    pub type VecLinesDecreasing<T> = VecLines<T, DecreasingTilt>;
    Expand description

    傾きが単調減少な直線の列を管理します。

    -

    Aliased Type§

    struct VecLinesDecreasing<T> { /* private fields */ }
    \ No newline at end of file +

    Type Definition vec_lines::VecLinesDecreasing

    source ·
    pub type VecLinesDecreasing<T> = VecLines<T, DecreasingTilt>;
    Expand description

    傾きが単調減少な直線の列を管理します。

    +
    \ No newline at end of file diff --git a/vec_lines/type.VecLinesIncreasing.html b/vec_lines/type.VecLinesIncreasing.html index a7dcfb37..50022806 100644 --- a/vec_lines/type.VecLinesIncreasing.html +++ b/vec_lines/type.VecLinesIncreasing.html @@ -1,4 +1,4 @@ -VecLinesIncreasing in vec_lines - RustVecLinesIncreasing in vec_lines - Rust
    -

    Type Alias vec_lines::VecLinesIncreasing

    source ·
    pub type VecLinesIncreasing<T> = VecLines<T, IncreasingTilt>;
    Expand description

    傾きが単調増加な直線の列を管理します。

    -

    Aliased Type§

    struct VecLinesIncreasing<T> { /* private fields */ }
    \ No newline at end of file +

    Type Definition vec_lines::VecLinesIncreasing

    source ·
    pub type VecLinesIncreasing<T> = VecLines<T, IncreasingTilt>;
    Expand description

    傾きが単調増加な直線の列を管理します。

    +
    \ No newline at end of file diff --git a/wavelet_matrix/all.html b/wavelet_matrix/all.html index 5e4dfbbf..6bfb8754 100644 --- a/wavelet_matrix/all.html +++ b/wavelet_matrix/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/wavelet_matrix/index.html b/wavelet_matrix/index.html index 8b78391d..8fbbbb3e 100644 --- a/wavelet_matrix/index.html +++ b/wavelet_matrix/index.html @@ -1,4 +1,4 @@ -wavelet_matrix - Rustwavelet_matrix - Rust
    -

    Crate wavelet_matrix

    source ·
    Expand description

    ウェーブレット行列

    +

    Crate wavelet_matrix

    source ·
    Expand description

    ウェーブレット行列

    本体は WaveletMatrix です。

    -

    §パフォーマンスについての実験結果

    +

    パフォーマンスについての実験結果

    実はちゃんとした対照実験にはなっていませんが、気になったらそのとき 頑張るということで……(あの?)

    -

    §実験 1: sort_by_key の代わりに stable_partition_by_key を自作

    +

    実験 1: sort_by_key の代わりに stable_partition_by_key を自作

    僅差ですが、自作のほうが若干速いようなので、そちらを採用しています。

    -

    §実験 2: 再帰の代わりにスタックを管理するイテレータを自作

    +

    実験 2: 再帰の代わりにスタックを管理するイテレータを自作

    僅差で自作の方が早かったですが、これはどちらにしてもないと spans の 実装がつらそうですから、致命的に遅くなければ使うつもりでした。

    \ No newline at end of file +

    Structs

    \ No newline at end of file diff --git a/wavelet_matrix/struct.SpanInNode.html b/wavelet_matrix/struct.SpanInNode.html index e14a504f..1cf6652d 100644 --- a/wavelet_matrix/struct.SpanInNode.html +++ b/wavelet_matrix/struct.SpanInNode.html @@ -1,4 +1,4 @@ -SpanInNode in wavelet_matrix - RustSpanInNode in wavelet_matrix - Rust
    -

    Struct wavelet_matrix::SpanInNode

    source ·
    pub struct SpanInNode<'a> {
    -    pub depth: usize,
    -    pub index: Range<usize>,
    -    pub value: Range<usize>,
    -    /* private fields */
    +
    pub struct SpanInNode<'a> {
    +    pub depth: usize,
    +    pub index: Range<usize>,
    +    pub value: Range<usize>,
    +    /* private fields */
     }
    Expand description

    Fields§

    §depth: usize

    ウェーブレット行列内の i 座標

    -
    §index: Range<usize>

    ウェーブレット行列内の j 座標の範囲

    -
    §value: Range<usize>

    現在のノードの担当する値の範囲

    -

    Trait Implementations§

    source§

    impl<'a> Clone for SpanInNode<'a>

    source§

    fn clone(&self) -> SpanInNode<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for SpanInNode<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for SpanInNode<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq for SpanInNode<'a>

    source§

    fn eq(&self, other: &SpanInNode<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<'a> Eq for SpanInNode<'a>

    source§

    impl<'a> StructuralPartialEq for SpanInNode<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for SpanInNode<'a>

    §

    impl<'a> RefUnwindSafe for SpanInNode<'a>

    §

    impl<'a> Send for SpanInNode<'a>

    §

    impl<'a> Sync for SpanInNode<'a>

    §

    impl<'a> Unpin for SpanInNode<'a>

    §

    impl<'a> UnwindSafe for SpanInNode<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §depth: usize

    ウェーブレット行列内の i 座標

    +
    §index: Range<usize>

    ウェーブレット行列内の j 座標の範囲

    +
    §value: Range<usize>

    現在のノードの担当する値の範囲

    +

    Trait Implementations§

    source§

    impl<'a> Clone for SpanInNode<'a>

    source§

    fn clone(&self) -> SpanInNode<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for SpanInNode<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for SpanInNode<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> PartialEq<SpanInNode<'a>> for SpanInNode<'a>

    source§

    fn eq(&self, other: &SpanInNode<'a>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> Eq for SpanInNode<'a>

    source§

    impl<'a> StructuralEq for SpanInNode<'a>

    source§

    impl<'a> StructuralPartialEq for SpanInNode<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for SpanInNode<'a>

    §

    impl<'a> Send for SpanInNode<'a>

    §

    impl<'a> Sync for SpanInNode<'a>

    §

    impl<'a> Unpin for SpanInNode<'a>

    §

    impl<'a> UnwindSafe for SpanInNode<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/wavelet_matrix/struct.Spans.html b/wavelet_matrix/struct.Spans.html index c093aea2..a4648703 100644 --- a/wavelet_matrix/struct.Spans.html +++ b/wavelet_matrix/struct.Spans.html @@ -1,4 +1,4 @@ -Spans in wavelet_matrix - RustSpans in wavelet_matrix - Rust
    -

    Struct wavelet_matrix::Spans

    source ·
    pub struct Spans<'a> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<'a> Clone for Spans<'a>

    source§

    fn clone(&self) -> Spans<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Spans<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Spans<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Iterator for Spans<'a>

    source§

    type Item = SpanInNode<'a>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( - &mut self, -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where - Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where - Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where - Self: Sized,

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where - Self: Sized, - U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where - Self: Sized, - G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where - Self: Sized, - F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where - Self: Sized,

    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where - Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods +

    Struct wavelet_matrix::Spans

    source ·
    pub struct Spans<'a> { /* private fields */ }
    Expand description

    Trait Implementations§

    source§

    impl<'a> Clone for Spans<'a>

    source§

    fn clone(&self) -> Spans<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for Spans<'a>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'a> Hash for Spans<'a>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl<'a> Iterator for Spans<'a>

    §

    type Item = SpanInNode<'a>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usizewhere + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where - Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where - Self: Sized,

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where - Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where - Self: Sized, - F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where - Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where - B: FromIterator<Self::Item>, - Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where - E: Extend<Self::Item>, - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    source§

    fn try_reduce<R>( +their documentation for more information. Read more

    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Selfwhere + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> Bwhere + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> boolwhere + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> Bwhere + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( &mut self, - f: impl FnMut(Self::Item, Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where - Self: Sized, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns -the first non-none result. Read more
    source§

    fn try_find<R>( + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( &mut self, - f: impl FnMut(&Self::Item) -> R, -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where - Self: Sized, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where - Self: Sized, - P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the -specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the -specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>
    where - Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where - Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where - Self: Sized, - S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where - Self: Sized, - P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    1.0.0 · source§

    fn cycle(self) -> Cycle<Self>where + Self: Sized + Clone,

    Repeats an iterator endlessly. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> Swhere + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> Pwhere + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are equal to those of -another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are not equal to those of -another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    1.82.0 · source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    1.82.0 · source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more
    source§

    impl<'a> PartialEq for Spans<'a>

    source§

    fn eq(&self, other: &Spans<'a>) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl<'a> Eq for Spans<'a>

    source§

    impl<'a> StructuralPartialEq for Spans<'a>

    Auto Trait Implementations§

    §

    impl<'a> Freeze for Spans<'a>

    §

    impl<'a> RefUnwindSafe for Spans<'a>

    §

    impl<'a> Send for Spans<'a>

    §

    impl<'a> Sync for Spans<'a>

    §

    impl<'a> Unpin for Spans<'a>

    §

    impl<'a> UnwindSafe for Spans<'a>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> boolwhere + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd<K>,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more
    source§

    impl<'a> PartialEq<Spans<'a>> for Spans<'a>

    source§

    fn eq(&self, other: &Spans<'a>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a> Eq for Spans<'a>

    source§

    impl<'a> StructuralEq for Spans<'a>

    source§

    impl<'a> StructuralPartialEq for Spans<'a>

    Auto Trait Implementations§

    §

    impl<'a> RefUnwindSafe for Spans<'a>

    §

    impl<'a> Send for Spans<'a>

    §

    impl<'a> Sync for Spans<'a>

    §

    impl<'a> Unpin for Spans<'a>

    §

    impl<'a> UnwindSafe for Spans<'a>

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    source§

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    type IntoIter = I

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for Iwhere + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/wavelet_matrix/struct.StaticBitVec.html b/wavelet_matrix/struct.StaticBitVec.html index 65c4153f..b453092b 100644 --- a/wavelet_matrix/struct.StaticBitVec.html +++ b/wavelet_matrix/struct.StaticBitVec.html @@ -1,4 +1,4 @@ -StaticBitVec in wavelet_matrix - RustStaticBitVec in wavelet_matrix - Rust
    -

    Struct wavelet_matrix::StaticBitVec

    source ·
    pub struct StaticBitVec { /* private fields */ }
    Expand description

    累積和のできる静的なビットベクター

    -

    Implementations§

    source§

    impl StaticBitVec

    source

    pub fn is_empty(&self) -> bool

    a.is_empty()

    -
    source

    pub fn len(&self) -> usize

    a.len()

    -
    source

    pub fn access(&self, i: usize) -> bool

    a[i]

    -
    source

    pub fn rank(&self, end: usize) -> usize

    sum(a[..end])

    -
    source

    pub fn select(&self, target: usize) -> usize

    min i s.t. target <= sum(a[..i])

    -

    Trait Implementations§

    source§

    impl Clone for StaticBitVec

    source§

    fn clone(&self) -> StaticBitVec

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StaticBitVec

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for StaticBitVec

    source§

    fn default() -> StaticBitVec

    Returns the “default value” for a type. Read more
    source§

    impl FromIterator<bool> for StaticBitVec

    source§

    fn from_iter<T: IntoIterator<Item = bool>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl Hash for StaticBitVec

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for StaticBitVec

    source§

    fn eq(&self, other: &StaticBitVec) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for StaticBitVec

    source§

    impl StructuralPartialEq for StaticBitVec

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    pub struct StaticBitVec { /* private fields */ }
    Expand description

    累積和のできる静的なビットベクター

    +

    Implementations§

    source§

    impl StaticBitVec

    source

    pub fn is_empty(&self) -> bool

    a.is_empty()

    +
    source

    pub fn len(&self) -> usize

    a.len()

    +
    source

    pub fn access(&self, i: usize) -> bool

    a[i]

    +
    source

    pub fn rank(&self, end: usize) -> usize

    sum(a[..end])

    +
    source

    pub fn select(&self, target: usize) -> usize

    min i s.t. target <= sum(a[..i])

    +

    Trait Implementations§

    source§

    impl Clone for StaticBitVec

    source§

    fn clone(&self) -> StaticBitVec

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StaticBitVec

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for StaticBitVec

    source§

    fn default() -> StaticBitVec

    Returns the “default value” for a type. Read more
    source§

    impl FromIterator<bool> for StaticBitVec

    source§

    fn from_iter<T: IntoIterator<Item = bool>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl Hash for StaticBitVec

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<StaticBitVec> for StaticBitVec

    source§

    fn eq(&self, other: &StaticBitVec) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for StaticBitVec

    source§

    impl StructuralEq for StaticBitVec

    source§

    impl StructuralPartialEq for StaticBitVec

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/wavelet_matrix/struct.WaveletMatrix.html b/wavelet_matrix/struct.WaveletMatrix.html index 02f136ee..115c4ee0 100644 --- a/wavelet_matrix/struct.WaveletMatrix.html +++ b/wavelet_matrix/struct.WaveletMatrix.html @@ -1,4 +1,4 @@ -WaveletMatrix in wavelet_matrix - RustWaveletMatrix in wavelet_matrix - Rust
    -

    Struct wavelet_matrix::WaveletMatrix

    source ·
    pub struct WaveletMatrix { /* private fields */ }
    Expand description

    ウェーブレット行列

    +
    pub struct WaveletMatrix { /* private fields */ }
    Expand description

    Implementations§

    source§

    impl WaveletMatrix

    source

    pub fn is_empty(&self) -> bool

    配列が空であれば true を返します。

    -
    §Examples
    +

    Implementations§

    source§

    impl WaveletMatrix

    source

    pub fn is_empty(&self) -> bool

    配列が空であれば true を返します。

    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::default();
     assert!(wm.is_empty());
     
     let wm = WaveletMatrix::from_iter(vec![0]);
     assert!(!wm.is_empty());
    -
    source

    pub fn len(&self) -> usize

    配列の長さを返します。

    -
    §Examples
    +
    source

    pub fn len(&self) -> usize

    配列の長さを返します。

    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::default();
     assert_eq!(wm.len(), 0);
     
     assert_eq!(WaveletMatrix::from_iter(vec![42]).len(), 1);
     assert_eq!(WaveletMatrix::from_iter(vec![42, 45]).len(), 2);
    -
    source

    pub fn from_iter_collect_vec2( - iter: impl IntoIterator<Item = usize>, -) -> (Self, Vec<Vec<usize>>)

    新しく構築するとともに、途中経過の配列をすべてベクターに詰めて返します。

    +
    source

    pub fn from_iter_collect_vec2( + iter: impl IntoIterator<Item = usize> +) -> (Self, Vec<Vec<usize>>)

    新しく構築するとともに、途中経過の配列をすべてベクターに詰めて返します。

    用途は spans をご覧ください。

    ある範囲の和を計算したいときなど、累積和やセグツリーなどと組み合わせて

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let (_wm, table) = WaveletMatrix::from_iter_collect_vec2(vec![2, 1, 3, 0]);
     let expected = vec![vec![2, 1, 3, 0], vec![1, 0, 2, 3], vec![0, 2, 1, 3]];
     assert_eq!(table, expected);
    -
    source

    pub fn from_slice_of_usize_mut( - slice: &mut [usize], - callback: impl FnMut(&[usize]), +

    source

    pub fn from_slice_of_usize_mut( + slice: &mut [usize], + callback: impl FnMut(&[usize]) ) -> Self

    source

    pub fn access(&self, i: usize) -> usize

    i 番目の要素を返します。

    -
    §Examples
    +
    source

    pub fn access(&self, i: usize) -> usize

    i 番目の要素を返します。

    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::from_iter(vec![2, 1, 3, 0]);
     assert_eq!(wm.access(2), 3);
    -
    source

    pub fn range_freq( +

    source

    pub fn range_freq( &self, - index: impl RangeBounds<usize>, - value: impl RangeBounds<usize>, -) -> usize

    index により指定された部分列のうち、 + index: impl RangeBounds<usize>, + value: impl RangeBounds<usize> +) -> usize

    index により指定された部分列のうち、 value により指定された範囲に入っている要素の個数を返します。

    -
    §Examples
    +
    Examples

    i 番目の要素を返します。

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::from_iter(vec![2, 1, 3, 0]);
     assert_eq!(wm.range_freq(1.., 0..2), 2);
    -
    source

    pub fn next_value( +

    source

    pub fn next_value( &self, - index: impl RangeBounds<usize>, - value: impl RangeBounds<usize>, -) -> Option<usize>

    index により指定された部分列のうち、 + index: impl RangeBounds<usize>, + value: impl RangeBounds<usize> +) -> Option<usize>

    index により指定された部分列のうち、 value により指定された範囲に入っている最小の要素を返します。

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::from_iter(vec![2, 1, 3, 0]);
     assert_eq!(wm.next_value(1.., ..2), Some(0));
     assert_eq!(wm.next_value(1.., 2..3), None);
    -
    source

    pub fn prev_value( +

    source

    pub fn prev_value( &self, - index: impl RangeBounds<usize>, - value: impl RangeBounds<usize>, -) -> Option<usize>

    index により指定された部分列のうち、 + index: impl RangeBounds<usize>, + value: impl RangeBounds<usize> +) -> Option<usize>

    index により指定された部分列のうち、 value により指定された範囲に入っている最小の要素を返します。

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::from_iter(vec![2, 1, 3, 0]);
     assert_eq!(wm.prev_value(1.., ..2), Some(1));
     assert_eq!(wm.prev_value(1.., 2..3), None);
    -
    source

    pub fn quantile( +

    source

    pub fn quantile( &self, - k: usize, - index: impl RangeBounds<usize>, - value: impl RangeBounds<usize>, -) -> Option<usize>

    index により指定された部分列のうち、 + k: usize, + index: impl RangeBounds<usize>, + value: impl RangeBounds<usize> +) -> Option<usize>

    index により指定された部分列のうち、 value により指定された範囲に入っている中で、 0-based index で k 番目に小さい要素を返します。

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let wm = WaveletMatrix::from_iter(vec![2, 1, 3, 0]);
     assert_eq!(wm.quantile(0, .., ..), Some(0));
     assert_eq!(wm.quantile(1, .., ..), Some(1));
    -
    source

    pub fn spans( +

    source

    pub fn spans( &self, - index: impl RangeBounds<usize>, - value: impl RangeBounds<usize>, + index: impl RangeBounds<usize>, + value: impl RangeBounds<usize> ) -> Spans<'_>

    対応する部分を、(depth, index_range, value_range) の形のものに分解します。

    SpansSpanInNode を返すイテレータです。 SpanInNode のフィールドはパブリックなのでそこから情報を 得てください。

    -
    §Examples
    +
    Examples
    use wavelet_matrix::WaveletMatrix;
     let a = vec![5, 4, 5, 5, 2, 1, 5, 6, 1, 3, 5, 0];
     let (wm, table) = WaveletMatrix::from_iter_collect_vec2(a.clone());
    @@ -138,19 +138,19 @@ 
    §Examples
    .collect::<Vec<_>>(); sorted.sort(); assert_eq!(&sorted, &[3, 5, 5]);
    -

    Trait Implementations§

    source§

    impl Clone for WaveletMatrix

    source§

    fn clone(&self) -> WaveletMatrix

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WaveletMatrix

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for WaveletMatrix

    source§

    fn default() -> WaveletMatrix

    Returns the “default value” for a type. Read more
    source§

    impl FromIterator<usize> for WaveletMatrix

    source§

    fn from_iter<I: IntoIterator<Item = usize>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl Hash for WaveletMatrix

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for WaveletMatrix

    source§

    fn eq(&self, other: &WaveletMatrix) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
    source§

    impl Eq for WaveletMatrix

    source§

    impl StructuralPartialEq for WaveletMatrix

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> CloneToUninit for T
    where - T: Clone,

    source§

    unsafe fn clone_to_uninit(&self, dst: *mut T)

    🔬This is a nightly-only experimental API. (clone_to_uninit)
    Performs copy-assignment from self to dst. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for WaveletMatrix

    source§

    fn clone(&self) -> WaveletMatrix

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WaveletMatrix

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for WaveletMatrix

    source§

    fn default() -> WaveletMatrix

    Returns the “default value” for a type. Read more
    source§

    impl FromIterator<usize> for WaveletMatrix

    source§

    fn from_iter<I: IntoIterator<Item = usize>>(iter: I) -> Self

    Creates a value from an iterator. Read more
    source§

    impl Hash for WaveletMatrix

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq<WaveletMatrix> for WaveletMatrix

    source§

    fn eq(&self, other: &WaveletMatrix) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for WaveletMatrix

    source§

    impl StructuralEq for WaveletMatrix

    source§

    impl StructuralPartialEq for WaveletMatrix

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere + T: ?Sized,

    const: unstable · source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    const: unstable · source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for Twhere + U: From<T>,

    const: unstable · source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    source§

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for Twhere + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    const: unstable · source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    \ No newline at end of file diff --git a/z_algo/all.html b/z_algo/all.html index 6dd1440a..2179d380 100644 --- a/z_algo/all.html +++ b/z_algo/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -

    List of all items

    Functions

    \ No newline at end of file +

    List of all items

    Functions

    \ No newline at end of file diff --git a/z_algo/fn.z_algo.html b/z_algo/fn.z_algo.html index d5e11724..05b271fe 100644 --- a/z_algo/fn.z_algo.html +++ b/z_algo/fn.z_algo.html @@ -1,4 +1,4 @@ -z_algo in z_algo - Rustz_algo in z_algo - Rust
    -

    Function z_algo::z_algo

    source ·
    pub fn z_algo<T: Eq>(s: &[T]) -> Vec<usize>
    Expand description

    Z-algorithm

    -

    §Parameters

    +

    Function z_algo::z_algo

    source ·
    pub fn z_algo<T: Eq>(s: &[T]) -> Vec<usize>
    Expand description

    Z-algorithm

    +

    Parameters

    • a: An array to test
    -

    §Returns

    +

    Returns

    The Z-array z of a. z[i] is the length of longest common prefix of a and a[i..].

    \ No newline at end of file diff --git a/z_algo/index.html b/z_algo/index.html index 2c81a56e..3753127e 100644 --- a/z_algo/index.html +++ b/z_algo/index.html @@ -1,4 +1,4 @@ -z_algo - Rustz_algo - Rust
    -

    Crate z_algo

    source ·

    Functions§

    \ No newline at end of file +

    Crate z_algo

    source ·

    Functions

    \ No newline at end of file diff --git a/zeta/all.html b/zeta/all.html index 0e6b96b9..1f4cd623 100644 --- a/zeta/all.html +++ b/zeta/all.html @@ -1,4 +1,4 @@ -List of all items in this crateList of all items in this crate
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/zeta/fn.add.html b/zeta/fn.add.html index e5bdbe98..27ad55fe 100644 --- a/zeta/fn.add.html +++ b/zeta/fn.add.html @@ -1,4 +1,4 @@ -add in zeta - Rustadd in zeta - Rust
    -

    Function zeta::add

    source ·
    pub fn add<T: Copy + Add<Output = T>>(a: &mut [T])
    Expand description

    + でゼータ変換

    +

    Function zeta::add

    source ·
    pub fn add<T: Copy + Add<Output = T>>(a: &mut [T])
    Expand description

    + でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.add_inv.html b/zeta/fn.add_inv.html index 15dc264b..3fee996d 100644 --- a/zeta/fn.add_inv.html +++ b/zeta/fn.add_inv.html @@ -1,4 +1,4 @@ -add_inv in zeta - Rustadd_inv in zeta - Rust
    -

    Function zeta::add_inv

    source ·
    pub fn add_inv<T: Copy + Sub<Output = T>>(a: &mut [T])
    Expand description

    (+, -) でメビウス変換

    +

    Function zeta::add_inv

    source ·
    pub fn add_inv<T: Copy + Sub<Output = T>>(a: &mut [T])
    Expand description

    (+, -) でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.add_rinv.html b/zeta/fn.add_rinv.html index 8d174718..eb88d12b 100644 --- a/zeta/fn.add_rinv.html +++ b/zeta/fn.add_rinv.html @@ -1,4 +1,4 @@ -add_rinv in zeta - Rustadd_rinv in zeta - Rust
    -

    Function zeta::add_rinv

    source ·
    pub fn add_rinv<T: Copy + Sub<Output = T>>(a: &mut [T])
    Expand description

    反転束において (+, -) でメビウス変換

    +

    Function zeta::add_rinv

    source ·
    pub fn add_rinv<T: Copy + Sub<Output = T>>(a: &mut [T])
    Expand description

    反転束において (+, -) でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.aggr.html b/zeta/fn.aggr.html index 01c5f150..22da997f 100644 --- a/zeta/fn.aggr.html +++ b/zeta/fn.aggr.html @@ -1,4 +1,4 @@ -aggr in zeta - Rustaggr in zeta - Rust
    -

    Function zeta::aggr

    source ·
    pub fn aggr<T: Copy>(a: &[T], f: impl Fn(T, T) -> T, e: T) -> Vec<T>
    Expand description

    すべての添字集合に関して (二項演算 f, 単位元 e) で畳み込んだ結果を構築します。

    +

    Function zeta::aggr

    source ·
    pub fn aggr<T: Copy>(a: &[T], f: impl Fn(T, T) -> T, e: T) -> Vec<T>
    Expand description

    すべての添字集合に関して (二項演算 f, 単位元 e) で畳み込んだ結果を構築します。

    \ No newline at end of file diff --git a/zeta/fn.bitand.html b/zeta/fn.bitand.html index edcffe48..59868450 100644 --- a/zeta/fn.bitand.html +++ b/zeta/fn.bitand.html @@ -1,4 +1,4 @@ -bitand in zeta - Rustbitand in zeta - Rust
    -

    Function zeta::bitand

    source ·
    pub fn bitand<T: Copy + BitAnd<Output = T>>(a: &mut [T])
    Expand description

    bit-and でゼータ変換

    +

    Function zeta::bitand

    source ·
    pub fn bitand<T: Copy + BitAnd<Output = T>>(a: &mut [T])
    Expand description

    bit-and でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.bitor.html b/zeta/fn.bitor.html index b4087587..cc03da5e 100644 --- a/zeta/fn.bitor.html +++ b/zeta/fn.bitor.html @@ -1,4 +1,4 @@ -bitor in zeta - Rustbitor in zeta - Rust
    -

    Function zeta::bitor

    source ·
    pub fn bitor<T: Copy + BitOr<Output = T>>(a: &mut [T])
    Expand description

    bit-or でゼータ変換

    +

    Function zeta::bitor

    source ·
    pub fn bitor<T: Copy + BitOr<Output = T>>(a: &mut [T])
    Expand description

    bit-or でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.bitxor.html b/zeta/fn.bitxor.html index 6550e618..bf975a6e 100644 --- a/zeta/fn.bitxor.html +++ b/zeta/fn.bitxor.html @@ -1,4 +1,4 @@ -bitxor in zeta - Rustbitxor in zeta - Rust
    -

    Function zeta::bitxor

    source ·
    pub fn bitxor<T: Copy + BitXor<Output = T>>(a: &mut [T])
    Expand description

    bit-xor でゼータ変換

    +

    Function zeta::bitxor

    source ·
    pub fn bitxor<T: Copy + BitXor<Output = T>>(a: &mut [T])
    Expand description

    bit-xor でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.for_each.html b/zeta/fn.for_each.html index 5dfa65aa..b951ae0b 100644 --- a/zeta/fn.for_each.html +++ b/zeta/fn.for_each.html @@ -1,4 +1,4 @@ -for_each in zeta - Rustfor_each in zeta - Rust
    -

    Function zeta::for_each

    source ·
    pub fn for_each<T>(a: &mut [T], f: impl Fn(&mut T, &mut T))
    Expand description

    ゼータ変換・メビウス変換のための基本関数

    +

    Function zeta::for_each

    source ·
    pub fn for_each<T>(a: &mut [T], f: impl Fn(&mut T, &mut T))
    Expand description

    ゼータ変換・メビウス変換のための基本関数

    \ No newline at end of file diff --git a/zeta/fn.max.html b/zeta/fn.max.html index a195a481..932d846e 100644 --- a/zeta/fn.max.html +++ b/zeta/fn.max.html @@ -1,4 +1,4 @@ -max in zeta - Rustmax in zeta - Rust
    -

    Function zeta::max

    source ·
    pub fn max<T: Copy + Ord>(a: &mut [T])
    Expand description

    max でゼータ変換

    +

    Function zeta::max

    source ·
    pub fn max<T: Copy + Ord>(a: &mut [T])
    Expand description

    max でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.min.html b/zeta/fn.min.html index c1607bb8..f99a59d4 100644 --- a/zeta/fn.min.html +++ b/zeta/fn.min.html @@ -1,4 +1,4 @@ -min in zeta - Rustmin in zeta - Rust
    -

    Function zeta::min

    source ·
    pub fn min<T: Copy + Ord>(a: &mut [T])
    Expand description

    min でゼータ変換

    +

    Function zeta::min

    source ·
    pub fn min<T: Copy + Ord>(a: &mut [T])
    Expand description

    min でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.radd.html b/zeta/fn.radd.html index ad03f38e..2a5f12bb 100644 --- a/zeta/fn.radd.html +++ b/zeta/fn.radd.html @@ -1,4 +1,4 @@ -radd in zeta - Rustradd in zeta - Rust
    -

    Function zeta::radd

    source ·
    pub fn radd<T: Copy + Add<Output = T>>(a: &mut [T])
    Expand description

    反転束において + でゼータ変換

    +

    Function zeta::radd

    source ·
    pub fn radd<T: Copy + Add<Output = T>>(a: &mut [T])
    Expand description

    反転束において + でゼータ変換

    \ No newline at end of file diff --git a/zeta/fn.rbitand.html b/zeta/fn.rbitand.html index 110f8f59..9a789619 100644 --- a/zeta/fn.rbitand.html +++ b/zeta/fn.rbitand.html @@ -1,4 +1,4 @@ -rbitand in zeta - Rustrbitand in zeta - Rust
    -

    Function zeta::rbitand

    source ·
    pub fn rbitand<T: Copy + BitAnd<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-and でメビウス変換

    +

    Function zeta::rbitand

    source ·
    pub fn rbitand<T: Copy + BitAnd<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-and でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.rbitor.html b/zeta/fn.rbitor.html index 6b0c6cd8..3f967fc1 100644 --- a/zeta/fn.rbitor.html +++ b/zeta/fn.rbitor.html @@ -1,4 +1,4 @@ -rbitor in zeta - Rustrbitor in zeta - Rust
    -

    Function zeta::rbitor

    source ·
    pub fn rbitor<T: Copy + BitOr<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-or でメビウス変換

    +

    Function zeta::rbitor

    source ·
    pub fn rbitor<T: Copy + BitOr<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-or でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.rbitxor.html b/zeta/fn.rbitxor.html index 6ee79d4c..a0d9e6cf 100644 --- a/zeta/fn.rbitxor.html +++ b/zeta/fn.rbitxor.html @@ -1,4 +1,4 @@ -rbitxor in zeta - Rustrbitxor in zeta - Rust
    -

    Function zeta::rbitxor

    source ·
    pub fn rbitxor<T: Copy + BitXor<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-xor でメビウス変換

    +

    Function zeta::rbitxor

    source ·
    pub fn rbitxor<T: Copy + BitXor<Output = T>>(a: &mut [T])
    Expand description

    反転束において bit-xor でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.rmax.html b/zeta/fn.rmax.html index ae3b59f7..42de9fa6 100644 --- a/zeta/fn.rmax.html +++ b/zeta/fn.rmax.html @@ -1,4 +1,4 @@ -rmax in zeta - Rustrmax in zeta - Rust
    -

    Function zeta::rmax

    source ·
    pub fn rmax<T: Copy + Ord>(a: &mut [T])
    Expand description

    反転束において max でメビウス変換

    +

    Function zeta::rmax

    source ·
    pub fn rmax<T: Copy + Ord>(a: &mut [T])
    Expand description

    反転束において max でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.rmin.html b/zeta/fn.rmin.html index bcc222f3..a0692d2f 100644 --- a/zeta/fn.rmin.html +++ b/zeta/fn.rmin.html @@ -1,4 +1,4 @@ -rmin in zeta - Rustrmin in zeta - Rust
    -

    Function zeta::rmin

    source ·
    pub fn rmin<T: Copy + Ord>(a: &mut [T])
    Expand description

    反転束において min でメビウス変換

    +

    Function zeta::rmin

    source ·
    pub fn rmin<T: Copy + Ord>(a: &mut [T])
    Expand description

    反転束において min でメビウス変換

    \ No newline at end of file diff --git a/zeta/fn.rzeta.html b/zeta/fn.rzeta.html index 7260007f..62362e4d 100644 --- a/zeta/fn.rzeta.html +++ b/zeta/fn.rzeta.html @@ -1,4 +1,4 @@ -rzeta in zeta - Rustrzeta in zeta - Rust
    -

    Function zeta::rzeta

    source ·
    pub fn rzeta<T: Copy>(a: &mut [T], f: impl Fn(T, T) -> T)
    Expand description

    反転束において、f を加法とするゼータ変換をします。

    -

    §制約

    +

    Function zeta::rzeta

    source ·
    pub fn rzeta<T: Copy>(a: &mut [T], f: impl Fn(T, T) -> T)
    Expand description

    反転束において、f を加法とするゼータ変換をします。

    +

    制約

    • a の長さが 2 冪
    • f が可換かつ結合的
    -

    §効果

    +

    効果

    a( S ) = f { a ( T ): S ⊆ T }

    -

    §計算量

    +

    計算量

    n が配列の長さであるとして、f を丁度 (n lg n) / 2 回呼びます。

    -

    §Examples

    +

    Examples

    累積和は add を使うとよいのですが、あえて zeta を使うならばこうです。

    let mut a = [1, 2, 4, 8];
    diff --git a/zeta/fn.zeta.html b/zeta/fn.zeta.html
    index 9499e9ae..0e22d62d 100644
    --- a/zeta/fn.zeta.html
    +++ b/zeta/fn.zeta.html
    @@ -1,4 +1,4 @@
    -zeta in zeta - Rustzeta in zeta - Rust
    -

    Function zeta::zeta

    source ·
    pub fn zeta<T: Copy>(a: &mut [T], f: impl Fn(T, T) -> T)
    Expand description

    f を加法とするゼータ変換をします。

    -

    §制約

    +

    Function zeta::zeta

    source ·
    pub fn zeta<T: Copy>(a: &mut [T], f: impl Fn(T, T) -> T)
    Expand description

    f を加法とするゼータ変換をします。

    +

    制約

    • a の長さが 2 冪
    • f が可換かつ結合的
    -

    §効果

    +

    効果

    a( S ) = f { a ( T ): T ⊆ S }

    -

    §計算量

    +

    計算量

    n が配列の長さであるとして、f を丁度 (n lg n) / 2 回呼びます。

    -

    §Examples

    +

    Examples

    累積和は add を使うとよいのですが、あえて zeta を使うならばこうです。

    let mut a = [1, 2, 4, 8];
    diff --git a/zeta/index.html b/zeta/index.html
    index 81856a61..336575e7 100644
    --- a/zeta/index.html
    +++ b/zeta/index.html
    @@ -1,4 +1,4 @@
    -zeta - Rustzeta - Rust
    -

    Crate zeta

    source ·
    Expand description

    冪集合上の高速ゼータ変換、高速メビウス変換をします。

    -

    §なんでも屋さん for_each

    +

    Crate zeta

    source ·
    Expand description

    冪集合上の高速ゼータ変換、高速メビウス変換をします。

    +

    なんでも屋さん for_each

    for_each は要素への可変参照を取ります。 これに |x, y| x + y を入れると正向き・逆向きの高速ゼータ変換ができ、 |x, y| y - x を入れると正向き・逆向きの高速メビウス変換がすべてできます。

    -

    §ゼータ変換

    +

    ゼータ変換

    ゼータ変換は、可換で結合的な 2 項演算に対して定義されています。 メビウス変換が定義されてそれが逆変換になるためには、アーベル群の加法である必要があります。

    @@ -49,7 +49,7 @@

    §

    ゼータ変換反転ゼータ変換メビウス変換反転メビウス変換
    |bitorrbitor非可逆非可逆
    &bitandrbitand非可逆非可逆
    -

    §Examples

    +

    Examples

    add で + に関するゼータ変換ができます。

    use zeta::add;
    @@ -62,4 +62,4 @@ 

    §
    add_inv(&mut a);
     assert_eq!(a, [1, 2, 4, 8]);
    -

    Functions§

    • + でゼータ変換
    • (+, -) でメビウス変換
    • 反転束において (+, -) でメビウス変換
    • すべての添字集合に関して (二項演算 f, 単位元 e) で畳み込んだ結果を構築します。
    • bit-and でゼータ変換
    • bit-or でゼータ変換
    • bit-xor でゼータ変換
    • ゼータ変換・メビウス変換のための基本関数
    • max でゼータ変換
    • min でゼータ変換
    • 反転束において + でゼータ変換
    • 反転束において bit-and でメビウス変換
    • 反転束において bit-or でメビウス変換
    • 反転束において bit-xor でメビウス変換
    • 反転束において max でメビウス変換
    • 反転束において min でメビウス変換
    • 反転束において、f を加法とするゼータ変換をします。
    • f を加法とするゼータ変換をします。
    \ No newline at end of file +

    Functions

    • + でゼータ変換
    • (+, -) でメビウス変換
    • 反転束において (+, -) でメビウス変換
    • すべての添字集合に関して (二項演算 f, 単位元 e) で畳み込んだ結果を構築します。
    • bit-and でゼータ変換
    • bit-or でゼータ変換
    • bit-xor でゼータ変換
    • ゼータ変換・メビウス変換のための基本関数
    • max でゼータ変換
    • min でゼータ変換
    • 反転束において + でゼータ変換
    • 反転束において bit-and でメビウス変換
    • 反転束において bit-or でメビウス変換
    • 反転束において bit-xor でメビウス変換
    • 反転束において max でメビウス変換
    • 反転束において min でメビウス変換
    • 反転束において、f を加法とするゼータ変換をします。
    • f を加法とするゼータ変換をします。
    \ No newline at end of file