structure RustCode = struct val txns = #[ ( 0 , 0 , "/// This is an implementation of a general purpose skip list. It was originally\n/// ported from a version of skiplists intended for efficient string handling\n/// found here - https://github.com/josephg/rustrope\n\n/// This implementation is not optimized for strings (there's some string\n/// specific features like unicode handling which have been intentionally\n/// removed for simplicity). But it does have another somewhat unusual feature -\n/// users can specify their own size function, and lookups, inserts and deletes\n/// can use their custom length property to specify offsets.\n\n/// Unlike other rust rope implementations, this implementation should be very\n/// fast; but it manages that through heavy use of unsafe pointers and C-style\n/// dynamic arrays.\n\nuse std::{mem, ptr};\nuse std::alloc::{alloc, dealloc, Layout};\nuse std::cmp::min;\n\nuse rand::{RngCore, Rng, SeedableRng};\nuse rand::rngs::SmallRng;\n\n/// The likelyhood a node will have height (n+1) instead of n\nconst BIAS: u8 = 100; // out of 256.\n\n/// The number of items in each node. Must fit in a u8 thanks to Node.\n// const NODE_NUM_ITEMS: usize = 100;\nconst NODE_NUM_ITEMS: usize = 100;\n\n/// Rope operations will move to linear time after NODE_STR_SIZE * 2 ^\n/// MAX_HEIGHT length. (With a smaller constant the higher this is). On the flip\n/// side, cursors grow linearly with this number; so smaller is marginally\n/// better when the contents are smaller.\nconst MAX_HEIGHT: usize = 20;\n\nconst MAX_HEIGHT_U8: u8 = MAX_HEIGHT as u8; // convenience.\n\n/// The whole list is configured through a single generic trait parameter\npub trait ListConfig {\n type Item: Default + Copy;\n\n /// Applications which have custom sizes (or do their own\n /// run-length-encoding) can define their own size function for items. When\n /// items are inserted or replaced, the position is specified using the\n /// custom size defined here.\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n\n fn userlen_of_slice(items: &[Self::Item]) -> usize {\n items.iter().fold(0, |acc, item| {\n acc + Self::get_usersize(item)\n })\n }\n\n fn split_item(_item: Self::Item) -> (Self::Item, Self::Item) {\n unimplemented!(\"Cannot insert in the middle of an item - split_item is not defined in trait\");\n }\n\n // type RngType: rand::RngCore = rand::rngs::SmallRng;\n // fn get_rng() -> Self::RngType {\n // use rand::SeedableRng;\n // // rand::rngs::SmallRng::from_seed(SeedableRng::seed_from_u64(10))\n // rand::rngs::SmallRng::from_entropy()\n // }\n}\n\n/// This represents a single entry in either the nexts pointers list or in an\n/// iterator.\n#[derive(Debug, PartialEq, Eq)]\nstruct SkipEntry {\n /// The node being pointed to.\n node: *mut Node,\n\n /// The number of *items* between the start of the current node and the\n /// start of the next node. That means nexts entry 0 contains the length of\n /// the current node.\n skip_usersize: usize,\n}\n\n// We can't use #[derive()] here for Copy and Clone due to a bug in the rust\n// compiler: https://github.com/rust-lang/rust/issues/26925\nimpl Copy for SkipEntry {}\nimpl Clone for SkipEntry {\n fn clone(&self) -> Self { *self }\n}\n\nimpl SkipEntry {\n fn new_null() -> Self {\n SkipEntry { node: ptr::null_mut(), skip_usersize: 0 }\n }\n}\n\n\n/// The node structure is designed in a very fancy way which would be more at\n/// home in C or something like that. The basic idea is that the node structure\n/// is fixed size in memory, but the proportion of that space taken up by\n/// characters and by the height differ depending on a node's height. This\n/// results in a lot of `unsafe` blocks. I think the tradeoff is worth it but I\n/// could be wrong here. You probably wouldn't lose much performance in practice\n/// by replacing the inline structure with a smallvec - but that would waste\n/// memory in small nodes, and require extra pointer indirection on large nodes.\n/// It also wouldn't remove all the unsafe here.\n///\n/// A different representation (which might be better or worse - I can't tell)\n/// would be to have the nodes all be the same size in memory and change the\n/// *proportion* of the node's memory that is used by the string field vs the\n/// next pointers. That might be lighter weight for the allocator because the\n/// struct itself would be a fixed size; but I'm not sure if it would be better.\n#[repr(C)] // Prevent parameter reordering.\nstruct Node {\n /// We start with the items themselves. Only the first `num_items` of this\n /// list is in use. The user specified length of the items in the node is\n /// stored in nexts[0].skip_items. This is initialized with\n /// Default::default() for the type, but when MaybeUninit completely lands,\n /// it will be possible to make this a tiny bit faster by leaving the list\n /// initially uninitialized.\n items: [C::Item; NODE_NUM_ITEMS],\n\n /// Number of items in `items` in use / filled.\n num_items: u8,\n\n /// Height of nexts array.\n height: u8,\n\n // #[repr(align(std::align_of::()))]\n \n /// In reality this array has the size of height, allocated using more or\n /// less direct calls to malloc() at runtime based on the randomly generated\n /// size. The size is always at least 1.\n nexts: [SkipEntry; 0],\n}\n\n// Make sure nexts uses correct alignment. This should be guaranteed by repr(C)\n// This test will fail if this ever stops being true.\n#[test]\nfn test_align() {\n struct TestConfig;\n impl ListConfig for TestConfig {\n type Item = u8;\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n }\n #[repr(C)] struct Check([SkipEntry; 0]);\n assert!(mem::align_of::() >= mem::align_of::>());\n // TODO: It'd be good to also check the alignment of the nexts field in Node.\n}\n\nfn random_height(rng: &mut R) -> u8 {\n let mut h: u8 = 1;\n // Should I use a csrng here? Does it matter?\n while h < MAX_HEIGHT_U8 && rng.gen::() < BIAS { h+=1; }\n h\n}\n\n#[repr(C)]\npub struct SkipList {\n // TODO: Consider putting the head item on the heap. For the use case here\n // its almost certainly fine either way. The code feels a bit cleaner if its\n // on the heap (and then iterators will be able to outlast a move of the\n // skiplist parent). But its also very nice having the code run fast for\n // small lists. Most lists are small, and it makes sense to optimize for\n // that.\n\n // TODO: For safety, pointers in to this structure should be Pin<> if we\n // ever want to hold on to iterators.\n\n /// The total number of items in the skip list. This is not used internally -\n /// just here for bookkeeping.\n num_items: usize,\n /// Size of the list in user specified units.\n num_usercount: usize,\n\n /// The RNG we use to generate node heights. Specifying it explicitly allows\n /// unit tests and randomizer runs to be predictable, which is very helpful\n /// during debugging. I'm still not sure how the type of this should be\n /// specified. Should it be a generic parameter? Box?\n /// ??\n rng: SmallRng,\n\n /// The first node is inline. The height is 1 more than the max height we've\n /// ever used. The highest next entry points to {null, total usersize}.\n head: Node,\n\n /// This is so dirty. The first node is embedded in SkipList; but we need to\n /// allocate enough room for height to get arbitrarily large. I could insist\n /// on SkipList always getting allocated on the heap, but for small lists its\n /// much better to be on the stack.\n ///\n /// So this struct is repr(C) and I'm just padding out the struct directly.\n /// All accesses should go through head because otherwise I think we violate\n /// aliasing rules.\n _nexts_padding: [SkipEntry; MAX_HEIGHT],\n}\n\n\n\nimpl Node {\n // Do I need to be explicit about the lifetime of the references being tied\n // to the lifetime of the node?\n fn nexts(&self) -> &[SkipEntry] {\n unsafe {\n std::slice::from_raw_parts(self.nexts.as_ptr(), self.height as usize)\n }\n }\n\n fn nexts_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.nexts.as_mut_ptr(), self.height as usize)\n }\n }\n\n fn layout_with_height(height: u8) -> Layout {\n Layout::from_size_align(\n mem::size_of::>() + mem::size_of::>() * (height as usize),\n mem::align_of::>()).unwrap()\n }\n\n fn alloc_with_height(height: u8) -> *mut Node {\n assert!(height >= 1 && height <= MAX_HEIGHT_U8);\n\n unsafe {\n let node = alloc(Self::layout_with_height(height)) as *mut Node;\n (*node) = Node {\n items: [C::Item::default(); NODE_NUM_ITEMS],\n num_items: 0,\n height: height,\n nexts: [],\n };\n\n for next in (*node).nexts_mut() {\n *next = SkipEntry::new_null();\n }\n\n node\n }\n }\n\n fn alloc(rng: &mut R) -> *mut Node {\n Self::alloc_with_height(random_height(rng))\n }\n\n unsafe fn free(p: *mut Node) {\n dealloc(p as *mut u8, Self::layout_with_height((*p).height));\n }\n\n fn content_slice(&self) -> &[C::Item] {\n &self.items[..self.num_items as usize]\n }\n\n // The height is at least 1, so this is always valid.\n fn first_skip_entry<'a>(&self) -> &'a SkipEntry {\n unsafe { &*self.nexts.as_ptr() }\n }\n\n fn first_skip_entry_mut<'a>(&mut self) -> &'a mut SkipEntry {\n unsafe { &mut *self.nexts.as_mut_ptr() }\n }\n\n // TODO: Rename to len() ?\n fn get_userlen(&self) -> usize {\n self.first_skip_entry().skip_usersize\n }\n \n fn get_next_ptr(&self) -> *mut Node {\n self.first_skip_entry().node\n }\n\n /// I dunno where this logic should live, but we want to get the index of\n /// the item at the specified offset into the node (and the offset into the\n /// item).\n /// \n /// If the offset lands between items, we could return either the previous or next item.\n /// \n /// Returns (index, item_offset).\n fn get_iter_idx(&self, mut usersize_offset: usize, stick_end: bool) -> (usize, usize) {\n if usersize_offset == 0 { return (0, 0); }\n\n for (i, item) in self.content_slice().iter().enumerate() {\n let usersize = C::get_usersize(item);\n if usersize > usersize_offset {\n return (i, usersize_offset);\n } else if usersize == usersize_offset {\n return if stick_end { (i, usersize_offset) } else { (i+1, 0) }\n } else {\n usersize_offset -= usersize;\n }\n }\n panic!(\"Could not find requested offset within the node\");\n }\n}\n\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone, Debug)]\nstruct Cursor {\n // TODO: Add a phantom lifetime reference to the skip list root for safety.\n\n // This isn't strictly necessary. Earlier versions tacked this on to the\n // last item in entries... I'm still not sure the cleanest way to do this.\n userpos: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n}\n\nimpl Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n\n next\n }\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos { return false; }\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl SkipList {\n pub fn new() -> Self {\n SkipList:: {\n num_items: 0,\n num_usercount: 0,\n rng: SmallRng::seed_from_u64(123),\n head: Node {\n items: [C::Item::default(); NODE_NUM_ITEMS],\n num_items: 0,\n height: 1, // Stores max height of list nodes\n nexts: [],\n },\n _nexts_padding: [SkipEntry::new_null(); MAX_HEIGHT],\n }\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, s);\n rope\n }\n\n pub fn get_userlen(&self) -> usize {\n self.num_usercount\n }\n\n fn iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn len_items(&self) -> usize {\n self.num_items as usize\n }\n\n fn heads_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.head.nexts.as_mut_ptr(), self._nexts_padding.len())\n }\n }\n\n /// Walk the list and validate internal constraints. This is used for\n /// testing the structure itself, and should generally not be called by\n /// users.\n pub fn check(&self) {\n // #[cfg(test)]\n {\n assert!(self.head.height >= 1);\n assert!(self.head.height <= MAX_HEIGHT_U8);\n\n // let skip_over = self.get_top_entry();\n // println!(\"Skip over skip chars {}, num bytes {}\", skip_over.skip_items, self.num_bytes);\n\n let mut iter = [SkipEntry {\n // Bleh.\n node: &self.head as *const Node as *mut Node,\n // The skips will store the total distance travelled since the\n // start of this traversal at each height. All the entries above\n // head.height are ignored though.\n skip_usersize: 0\n }; MAX_HEIGHT];\n\n let mut num_items = 0;\n let mut num_usercount = 0;\n\n for n in self.iter() {\n // println!(\"visiting {:?}\", n.as_str());\n assert!((n as *const Node == &self.head as *const Node) || n.num_items > 0);\n assert!(n.height <= MAX_HEIGHT_U8);\n assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n\n // Make sure the number of items matches the count\n let local_count = C::userlen_of_slice(&n.items[0..n.num_items as usize]);\n assert_eq!(local_count, n.get_userlen());\n\n // assert_eq!(n.as_str().chars().count(), n.num_chars());\n for (i, entry) in iter[0..n.height as usize].iter_mut().enumerate() {\n assert_eq!(entry.node as *const Node, n as *const Node);\n assert_eq!(entry.skip_usersize, num_usercount);\n\n // println!(\"replacing entry {:?} with {:?}\", entry, n.nexts()[i].node);\n entry.node = n.nexts()[i].node;\n entry.skip_usersize += n.nexts()[i].skip_usersize;\n }\n\n num_items += n.num_items as usize;\n num_usercount += n.get_userlen();\n }\n\n for entry in iter[0..self.head.height as usize].iter() {\n // println!(\"{:?}\", entry);\n assert!(entry.node.is_null());\n assert_eq!(entry.skip_usersize, num_usercount);\n }\n \n // println!(\"self bytes: {}, count bytes {}\", self.num_bytes, num_bytes);\n assert_eq!(self.num_items, num_items);\n assert_eq!(self.get_userlen(), num_usercount);\n }\n }\n \n \n /// Internal function for creating a cursor at a particular location in the\n /// skiplist. The returned cursor is a list of nodes which point past the\n /// specified position, as well as offsets of how far into their character\n /// lists the specified characters are.\n /// \n /// Note this does not calculate the index and offset in the current node.\n ///\n /// TODO: This should be Pin<&self>.\n fn iter_at_userpos(&self, target_userpos: usize) -> Cursor {\n assert!(target_userpos <= self.get_userlen());\n\n let mut e: *const Node = &self.head;\n let mut height = self.head.height as usize - 1;\n \n let mut offset = target_userpos; // How many more items to skip\n\n // We're populating the head node pointer to simplify the case when the\n // iterator grows. We could put offset into the skip_usersize but it\n // would only be *mostly* correct, not always correct. (Since cursor\n // entries above height are not updated by insert.)\n let mut cursor = Cursor {\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n userpos: target_userpos,\n };\n\n loop { // while height >= 0\n let en = unsafe { &*e };\n let next = en.nexts()[height];\n let skip = next.skip_usersize;\n if offset > skip {\n // Go right.\n debug_assert!(e == &self.head || en.num_items > 0);\n offset -= skip;\n e = next.node;\n assert!(!e.is_null(), \"Internal constraint violation: Reached rope end prematurely\");\n } else {\n // Record this and go down.\n cursor.entries[height] = SkipEntry {\n skip_usersize: offset,\n node: e as *mut Node, // This is pretty gross\n };\n\n if height == 0 { break; } else { height -= 1; }\n }\n };\n\n // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n cursor\n }\n\n // Internal fn to create a new node at the specified iterator filled with\n // the specified content. The passed cursor should point at the end of the\n // previous node. It will be updated to point to the end of the newly\n // inserted content.\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize) {\n // println!(\"Insert_node_at {} len {}\", contents.len(), self.num_bytes);\n debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n assert!(contents.len() <= NODE_NUM_ITEMS);\n\n let new_node = Node::alloc(&mut self.rng);\n (*new_node).num_items = contents.len() as u8;\n (*new_node).items[..contents.len()].copy_from_slice(contents);\n let new_height = (*new_node).height;\n\n let mut head_height = self.head.height as usize;\n let new_height_usize = new_height as usize;\n while head_height < new_height_usize {\n // This seems weird given we're about to overwrite these values\n // below. What we're doing is retroactively setting up the cursor\n // and head pointers *as if* the height had been this high all\n // along. This way we only have to populate the higher head values\n // lazily.\n let total_userlen = self.num_usercount;\n let nexts = self.heads_mut();\n nexts[head_height].skip_usersize = total_userlen;\n cursor.entries[head_height].skip_usersize = cursor.userpos;\n\n head_height += 1; // This is ugly.\n self.head.height += 1;\n }\n\n for i in 0..new_height_usize {\n let prev_skip = &mut (*cursor.entries[i].node).nexts_mut()[i];\n let new_nexts = (*new_node).nexts_mut();\n\n // The new node points to the successor (or null)\n new_nexts[i] = SkipEntry {\n node: prev_skip.node,\n skip_usersize: new_userlen + prev_skip.skip_usersize - cursor.entries[i].skip_usersize\n };\n\n // The previous node points to the new node\n *prev_skip = SkipEntry {\n node: new_node,\n skip_usersize: cursor.entries[i].skip_usersize\n };\n\n // Move the iterator to the end of the newly inserted node.\n cursor.entries[i] = SkipEntry {\n node: new_node,\n skip_usersize: new_userlen\n };\n }\n\n for i in new_height_usize..head_height {\n (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n cursor.entries[i].skip_usersize += new_userlen;\n }\n\n self.num_items += contents.len();\n self.num_usercount += new_userlen;\n cursor.userpos += new_userlen;\n }\n\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, mut item_idx: usize, contents: &[C::Item]) {\n // iter specifies where to insert.\n\n let mut e = cursor.here_ptr();\n // The insertion offset into the destination node.\n assert!(cursor.userpos <= self.num_usercount);\n assert!(item_idx <= (*e).num_items as usize);\n\n // We might be able to insert the new data into the current node, depending on\n // how big it is.\n let num_inserted_items = contents.len();\n let num_inserted_usercount = C::userlen_of_slice(contents);\n\n // Can we insert into the current node?\n let mut insert_here = (*e).num_items as usize + num_inserted_items <= NODE_NUM_ITEMS;\n\n // Can we insert into the start of the successor node?\n if !insert_here && item_idx == (*e).num_items as usize && num_inserted_items <= NODE_NUM_ITEMS {\n // We can insert into the subsequent node if:\n // - We can't insert into the current node\n // - There _is_ a next node to insert into\n // - The insert would be at the start of the next node\n // - There's room in the next node\n if let Some(next) = (*e).first_skip_entry_mut().node.as_mut() {\n if next.num_items as usize + num_inserted_items <= NODE_NUM_ITEMS {\n item_idx = 0;\n cursor.advance_node();\n e = next;\n\n insert_here = true;\n }\n }\n }\n\n let e_num_items = (*e).num_items as usize; // convenience.\n\n if insert_here {\n // println!(\"insert_here {}\", contents);\n // First push the current items later in the array\n let c = &mut (*e).items;\n if item_idx < e_num_items {\n c[..].copy_within(item_idx..e_num_items,\n item_idx + num_inserted_items);\n }\n\n // Then copy in the new items\n c[item_idx..item_idx + num_inserted_items].copy_from_slice(contents);\n\n (*e).num_items += num_inserted_items as u8;\n self.num_items += num_inserted_items;\n self.num_usercount += num_inserted_usercount;\n\n // .... aaaand update all the offset amounts.\n cursor.update_offsets(self.head.height as usize, num_inserted_usercount as isize);\n\n // TODO: For consistency we might want to think about updating the\n // iterator here.\n } else {\n // There isn't room. We'll need to add at least one new node to the\n // list. We could be a bit more careful here and copy as much as\n // possible into the current node - that would decrease the number\n // of new nodes in some cases, but I don't think the performance\n // difference will be large enough to justify the complexity.\n\n // If we're not at the end of the current node, we'll need to remove\n // the end of the current node's data and reinsert it later.\n let num_end_items = e_num_items - item_idx;\n\n let (end_items, end_usercount) = if num_end_items > 0 {\n // We'll mark the items as deleted from the node, while leaving\n // the data itself there for now to avoid a copy.\n\n // Note that if we wanted to, it would also be correct (and\n // slightly more space efficient) to pack some of the new\n // string's characters into this node after trimming it.\n let end_items = &(*e).items[item_idx..e_num_items];\n (*e).num_items = item_idx as u8;\n let end_usercount = (*e).get_userlen() - cursor.entries[0].skip_usersize;\n\n cursor.update_offsets(self.head.height as usize, -(end_usercount as isize));\n\n // We need to trim the size off because we'll add the characters\n // back with insert_node_at.\n self.num_usercount -= end_usercount;\n self.num_items -= num_end_items;\n\n (Some(end_items), end_usercount)\n } else {\n (None, 0)\n };\n\n // Now we insert new nodes containing the new character data. The\n // data is broken into pieces with a maximum size of NODE_NUM_ITEMS.\n // As further optimization, we could try and fit the last piece into\n // the start of the subsequent node. That optimization hasn't been\n // added.\n \n for chunk in contents.chunks(NODE_NUM_ITEMS) {\n let userlen = C::userlen_of_slice(chunk);\n self.insert_node_at(cursor, chunk, userlen);\n }\n\n // TODO: Consider recursively calling insert_at_iter() here instead\n // of making a whole new node for the remaining content.\n if let Some(end_items) = end_items {\n self.insert_node_at(cursor, end_items, end_usercount);\n }\n }\n }\n\n /// Interestingly unlike the original, here we only care about specifying\n /// the number of removed items by counting them. We do not use usersize in\n /// the deleted item count.\n ///\n /// If the deleted content occurs at the start of a node, the cursor passed\n /// here must point to the end of the previous node, not the start of the\n /// current node.\n unsafe fn del_at_iter(&mut self, cursor: &mut Cursor, mut item_idx: usize, mut num_deleted_items: usize) {\n if num_deleted_items == 0 { return; }\n\n let mut e = cursor.here_ptr();\n while num_deleted_items > 0 {\n if item_idx == (*e).num_items as usize {\n let entry = (*e).first_skip_entry();\n // End of current node. Skip to the start of the next one. We're\n // intentionally not updating the iterator because if we delete\n // a whole node we need the iterator to point to the previous\n // element. And if we only delete here, the iterator doesn't\n // need to be moved.\n e = entry.node;\n if e.is_null() { panic!(\"Cannot delete past the end of the list\"); }\n item_idx = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let removed_here = min(num_deleted_items, e_num_items - item_idx);\n \n let height = (*e).height as usize;\n let removed_userlen;\n\n if removed_here < e_num_items || e as *const _ == &self.head as *const _ {\n // Just trim the node down.\n let trailing_items = e_num_items - item_idx - removed_here;\n \n let c = &mut (*e).items;\n removed_userlen = C::userlen_of_slice(&c[item_idx..item_idx + removed_here]);\n if trailing_items > 0 {\n c[..].copy_within(item_idx + removed_here..e_num_items, item_idx);\n }\n\n (*e).num_items -= removed_here as u8;\n self.num_items -= removed_here;\n self.num_usercount -= removed_userlen;\n\n for s in (*e).nexts_mut() {\n s.skip_usersize -= removed_userlen;\n }\n } else {\n // Remove the node from the skip list entirely. e should be the\n // next node after the position of the iterator.\n assert_ne!(cursor.here_ptr(), e);\n\n removed_userlen = (*e).get_userlen();\n let next = (*e).first_skip_entry().node;\n\n for i in 0..(*e).height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.node = (*e).nexts_mut()[i].node;\n s.skip_usersize += (*e).nexts()[i].skip_usersize - removed_userlen;\n }\n\n self.num_items -= (*e).num_items as usize;\n self.num_usercount -= removed_userlen;\n\n Node::free(e);\n e = next;\n }\n\n for i in height..self.head.height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.skip_usersize -= removed_userlen;\n }\n\n num_deleted_items -= removed_here;\n }\n }\n\n pub fn replace_at(&mut self, mut start_userpos: usize, mut removed_items: usize, mut inserted_content: &[C::Item]) {\n if removed_items == 0 && inserted_content.len() == 0 { return; }\n\n // For validation. This is where the cursor should end up.\n // let expected_final_position = start_userpos + inserted_content.len() - removed_items;\n\n start_userpos = min(start_userpos, self.get_userlen());\n\n let mut cursor = self.iter_at_userpos(start_userpos);\n let (mut index, offset) = unsafe { &*cursor.here_ptr() }.get_iter_idx(cursor.entries[0].skip_usersize, false);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n // Replace as many items from removed_items as we can with inserted_content.\n unsafe {\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n let mut e = cursor.here_ptr();\n if index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n index = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let old_items = &mut (*e).items[index..index + replaced_items_here];\n let new_items = &inserted_content[0..replaced_items_here];\n\n // Replace the items themselves.\n old_items.copy_from_slice(new_items);\n\n // And bookkeeping. Bookkeeping forever.\n let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n\n inserted_content = &inserted_content[replaced_items_here..];\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(&mut cursor, index, inserted_content);\n } else if removed_items > 0 {\n self.del_at_iter(&mut cursor, index, removed_items);\n }\n }\n\n // TODO: Assert that the iterator is after replaced content.\n // #[cfg(debug_assertions)] {\n // let c2 = self.iter_at_userpos(expected_final_position);\n // if &cursor != &c2 { panic!(\"Invalid cursor after replace\"); }\n // }\n }\n\n pub fn insert_at(&mut self, mut userpos: usize, contents: &[C::Item]) {\n if contents.len() == 0 { return; }\n \n userpos = min(userpos, self.get_userlen());\n let mut cursor = self.iter_at_userpos(userpos);\n let (index, offset) = unsafe { &*cursor.here_ptr() }.get_iter_idx(cursor.entries[0].skip_usersize, false);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n unsafe { self.insert_at_iter(&mut cursor, index, contents); }\n\n #[cfg(debug_assertions)] {\n let c2 = self.iter_at_userpos(userpos + C::userlen_of_slice(contents));\n if &cursor != &c2 { panic!(\"Invalid cursor after insert\"); }\n }\n // TODO: Assert that the iterator now points after removed content.\n }\n\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let mut cursor = self.iter_at_userpos(userpos);\n let (index, offset) = unsafe { &*cursor.here_ptr() }.get_iter_idx(cursor.entries[0].skip_usersize, false);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, index, num_items); }\n // TODO: Assert that the iterator remains where it was.\n }\n}\n\n\nimpl SkipList where C::Item: PartialEq {\n pub fn eq_list(&self, other: &[C::Item]) -> bool {\n let mut pos = 0;\n let other_len = other.len();\n\n for node in self.iter() {\n let my_data = node.content_slice();\n let my_len = my_data.len();\n\n if pos + my_len > other_len || my_data != &other[pos..pos + my_data.len()] {\n return false\n }\n pos += my_data.len();\n }\n\n return pos == other_len;\n }\n}\n\nimpl Drop for SkipList {\n fn drop(&mut self) {\n let mut node = self.head.first_skip_entry().node;\n unsafe {\n while !node.is_null() {\n let next = (*node).first_skip_entry().node;\n Node::free(node);\n node = next;\n }\n }\n }\n}\n\n\nimpl From<&[C::Item]> for SkipList {\n fn from(s: &[C::Item]) -> SkipList {\n SkipList::new_from_slice(s)\n }\n}\n\nimpl From> for SkipList {\n fn from(s: Vec) -> SkipList {\n SkipList::new_from_slice(s.as_slice())\n }\n}\n\nimpl Into> for &SkipList {\n fn into(self) -> Vec {\n let mut content = Vec::with_capacity(self.num_items);\n\n for node in self.iter() {\n content.extend(node.content_slice().iter());\n }\n\n content\n }\n}\n\nimpl SkipList where C::Item: std::fmt::Debug {\n // TODO: Don't export this.\n pub fn print(&self) {\n println!(\"items: {}\\tuserlen: {}, height: {}\", self.num_items, self.get_userlen(), self.head.height);\n\n print!(\"HEAD:\");\n for s in self.head.nexts() {\n print!(\" |{} \", s.skip_usersize);\n }\n println!(\"\");\n\n for (i, node) in self.iter().enumerate() {\n print!(\"{}:\", i);\n for s in node.nexts() {\n print!(\" |{} \", s.skip_usersize);\n }\n println!(\" : {:?}\", node.content_slice());\n }\n }\n}\n\n// impl usize> PartialEq for SkipList {\n// // This is quite complicated. It would be cleaner to just write a bytes\n// // iterator, then iterate over the bytes of both strings comparing along the\n// // way.\n// // However, this should be faster because it can memcmp().\n\n// // Another way to implement this would be to rewrite it as a comparison with\n// // an iterator over &str. Then the rope vs rope comparison would be trivial,\n// // but also we could add comparison functions with a single &str and stuff\n// // very easily.\n// fn eq(&self, other: &SkipList) -> bool {\n// if self.num_items != other.num_items\n// || self.num_chars() != other.num_chars() {\n// return false\n// }\n\n// let mut other_iter = other.iter().map(|n| { n.as_str() });\n\n// let mut os = other_iter.next();\n// let mut opos: usize = 0; // Byte offset in os.\n// for n in self.iter() {\n// let s = n.as_str();\n// let mut pos: usize = 0; // Current byte offset in s\n// debug_assert_eq!(s.len(), n.num_bytes as usize);\n\n// // Walk s.len() bytes through the other rope\n// while pos < n.num_bytes as usize {\n// if let Some(oss) = os {\n// let amt = min(s.len() - pos, oss.len() - opos);\n// // println!(\"iter slen {} pos {} osslen {} amt {}\", s.len(), pos, oss.len(), amt);\n\n// if &s[pos..pos+amt] != &oss[opos..opos+amt] {\n// return false\n// }\n\n// pos += amt;\n// opos += amt;\n// debug_assert!(opos <= oss.len());\n\n// if opos == oss.len() {\n// os = other_iter.next();\n// opos = 0;\n// }\n// } else {\n// panic!(\"Internal string length does not match\");\n// }\n// }\n// }\n\n// true\n// }\n// }\n// impl usize> Eq for SkipList {}\n\n// impl Clone for SkipList where F: Fn(&T) -> usize {\n// fn clone(&self) -> Self {\n// let mut r = SkipList::new(self.get_usersize);\n// r.num_items = self.num_items;\n// let head_str = self.head.as_str();\n// r.head.items[..head_str.len()].copy_from_slice(head_str.as_bytes());\n// r.head.num_bytes = self.head.num_bytes;\n// r.head.height = self.head.height;\n \n// {\n// // I could just edit the overflow memory directly, but this is safer\n// // because of aliasing rules.\n// let head_nexts = r.head.nexts_mut();\n// for i in 0..self.head.height as usize {\n// head_nexts[i].skip_items = self.nexts[i].skip_items;\n// }\n// }\n\n// let mut nodes = [&mut r.head as *mut Node; MAX_HEIGHT];\n\n// // The first node the iterator will return is the head. Ignore it.\n// let mut iter = self.iter();\n// iter.next();\n// for other in iter {\n// // This also sets height.\n// let height = other.height;\n// let node = Node::alloc_with_height(height);\n// unsafe {\n// (*node).num_bytes = other.num_bytes;\n// let len = other.num_bytes as usize;\n// (*node).items[..len].copy_from_slice(&other.items[..len]);\n\n// let other_nexts = other.nexts();\n// let nexts = (*node).nexts_mut();\n// for i in 0..height as usize {\n// nexts[i].skip_items = other_nexts[i].skip_items;\n// (*nodes[i]).nexts_mut()[i].node = node;\n// nodes[i] = node;\n// }\n// }\n// }\n\n// r\n// }\n// }\n" ) , (25738, 108, "") , (25738, 0, "\n ") , (25747, 4, "") , (25743, 4, "") , (25739, 4, "") , (25738, 1, "") , (25737, 1, "") , (25737, 0, "\n ") , (25750, 0, "/") , (25751, 0, "/") , (25752, 0, " ") , (25753, 0, "T") , (25754, 0, "h") , (25755, 0, "i") , (25756, 0, "s") , (25757, 0, " ") , (25758, 0, "i") , (25759, 0, "s") , (25760, 0, " ") , (25761, 0, "s") , (25762, 0, "u") , (25762, 1, "") , (25761, 1, "") , (25761, 0, "u") , (25762, 0, "s") , (25763, 0, "u") , (25764, 0, "a") , (25765, 0, "l") , (25766, 0, "l") , (25767, 0, "y") , (25768, 0, " ") , (25769, 0, "n") , (25770, 0, "o") , (25771, 0, "t") , (25772, 0, " ") , (25773, 0, "n") , (25774, 0, "e") , (25775, 0, "e") , (25776, 0, "d") , (25777, 0, "e") , (25778, 0, "d") , (25779, 0, ",") , (25780, 0, " ") , (25781, 0, "s") , (25782, 0, "o") , (25783, 0, " ") , (25784, 0, "i") , (25785, 0, "t") , (25786, 0, " ") , (25787, 0, "f") , (25788, 0, "e") , (25789, 0, "e") , (25790, 0, "l") , (25791, 0, "s") , (25792, 0, " ") , (25793, 0, "l") , (25794, 0, "i") , (25795, 0, "k") , (25796, 0, "e") , (25797, 0, " ") , (25798, 0, "a") , (25799, 0, " ") , (25800, 0, "b") , (25801, 0, "i") , (25802, 0, "t") , (25803, 0, " ") , (25804, 0, "o") , (25805, 0, "f") , (25806, 0, " ") , (25807, 0, "a") , (25808, 0, " ") , (25809, 0, "w") , (25810, 0, "a") , (25811, 0, "s") , (25812, 0, "t") , (25813, 0, "e") , (25814, 0, " ") , (25815, 0, "o") , (25816, 0, "f") , (25817, 0, " ") , (25818, 0, "C") , (25819, 0, "P") , (25820, 0, "U") , (25821, 0, " ") , (25822, 0, "a") , (25823, 0, "n") , (25824, 0, "d") , (25825, 0, " ") , (25826, 0, "c") , (25827, 0, "o") , (25828, 0, "m") , (25829, 0, "p") , (25830, 0, "l") , (25831, 0, "e") , (25832, 0, "x") , (25833, 0, "i") , (25821, 13, ",") , (25822, 0, " ") , (25823, 0, "b") , (25824, 0, "u") , (25753, 72, "U") , (25754, 0, "p") , (25755, 0, "d") , (25756, 0, "a") , (25757, 0, "t") , (25758, 0, "i") , (25759, 0, "n") , (25760, 0, "g") , (25761, 0, " ") , (25762, 0, "t") , (25763, 0, "h") , (25764, 0, "e") , (25765, 0, " ") , (25766, 0, "c") , (25767, 0, "u") , (25768, 0, "r") , (25769, 0, "s") , (25770, 0, "o") , (25771, 0, "r") , (25772, 0, " ") , (25773, 0, "a") , (25774, 0, "f") , (25775, 0, "t") , (25776, 0, "e") , (25777, 0, "r") , (25778, 0, " ") , (25779, 0, "t") , (25780, 0, "h") , (25781, 0, "e") , (25782, 0, " ") , (25783, 0, "o") , (25784, 0, "p") , (25785, 0, "e") , (25786, 0, "r") , (25787, 0, "a") , (25788, 0, "t") , (25789, 0, "i") , (25790, 0, "o") , (25791, 0, "n") , (25792, 0, " ") , (25793, 0, "d") , (25793, 1, "") , (25793, 0, "f") , (25794, 0, "e") , (25795, 0, "e") , (25796, 0, "l") , (25797, 0, "s") , (25798, 0, " ") , (25799, 0, "a") , (25800, 0, " ") , (25801, 0, "b") , (25802, 0, "i") , (25803, 0, "t") , (25804, 0, " ") , (25805, 0, "e") , (25806, 0, "x") , (25807, 0, "c") , (25808, 0, "e") , (25809, 0, "s") , (25810, 0, "s") , (25811, 0, "i") , (25812, 0, "v") , (25813, 0, "e") , (25814, 0, ",") , (25815, 0, " ") , (25816, 0, "b") , (25817, 0, "u") , (25818, 0, "t") , (25819, 0, " ") , (25820, 0, "i") , (25821, 0, "t") , (25822, 0, "s") , (25823, 0, " ") , (25824, 0, "i") , (25825, 0, "m") , (25826, 0, "p") , (25827, 0, "o") , (25828, 0, "r") , (25829, 0, "t") , (25830, 0, "a") , (25831, 0, "n") , (25832, 0, "t") , (25833, 0, " ") , (25752, 82, " ") , (25753, 0, "U") , (25754, 0, "s") , (25755, 0, "u") , (25756, 0, "a") , (25757, 0, "l") , (25758, 0, "l") , (25759, 0, "y") , (25760, 0, " ") , (25761, 0, "t") , (25762, 0, "h") , (25763, 0, "e") , (25764, 0, " ") , (25765, 0, "c") , (25766, 0, "u") , (25767, 0, "r") , (25768, 0, "s") , (25769, 0, "o") , (25770, 0, "r") , (25771, 0, " ") , (25772, 0, "w") , (25773, 0, "i") , (25774, 0, "l") , (25775, 0, "l") , (25776, 0, " ") , (25777, 0, "b") , (25778, 0, "e") , (25779, 0, " ") , (25780, 0, "d") , (25781, 0, "i") , (25782, 0, "s") , (25783, 0, "c") , (25784, 0, "a") , (25785, 0, "r") , (25786, 0, "d") , (25787, 0, "e") , (25788, 0, "d") , (25789, 0, " ") , (25790, 0, "a") , (25791, 0, "f") , (25792, 0, "t") , (25793, 0, "e") , (25794, 0, "r") , (25795, 0, " ") , (25796, 0, "o") , (25797, 0, "n") , (25798, 0, "e") , (25799, 0, " ") , (25800, 0, "c") , (25801, 0, "h") , (25802, 0, "a") , (25803, 0, "n") , (25804, 0, "g") , (25805, 0, "e") , (25806, 0, ",") , (25807, 0, " ") , (25808, 0, "b") , (25809, 0, "u") , (25810, 0, "t") , (25811, 0, " ") , (25812, 0, "f") , (25813, 0, "o") , (25814, 0, "r") , (25815, 0, " ") , (25816, 0, "c") , (25817, 0, "o") , (25818, 0, "m") , (25819, 0, "p") , (25820, 0, "o") , (25821, 0, "u") , (25822, 0, "n") , (25823, 0, "d") , (25824, 0, " ") , (25825, 0, "e") , (25826, 0, "d") , (25827, 0, "i") , (25828, 0, "t") , (25829, 0, "s") , (25830, 0, " ") , (25831, 0, "i") , (25832, 0, "t") , (25833, 0, "s") , (25834, 0, " ") , (25835, 0, "i") , (25836, 0, "m") , (25837, 0, "p") , (25838, 0, "o") , (25839, 0, "r") , (25840, 0, "t") , (25841, 0, "a") , (25842, 0, "n") , (25843, 0, "t") , (25844, 0, " ") , (25845, 0, "t") , (25846, 0, "h") , (25847, 0, "e") , (25848, 0, " ") , (25849, 0, "p") , (25850, 0, "a") , (25851, 0, "s") , (25852, 0, "s") , (25853, 0, "e") , (25854, 0, "d") , (25855, 0, " ") , (25856, 0, "c") , (25857, 0, "u") , (25858, 0, "r") , (25859, 0, "s") , (25860, 0, "o") , (25861, 0, "r") , (25812, 50, "f") , (25813, 0, "o") , (25814, 0, "r") , (25815, 0, " ") , (25816, 0, "c") , (25817, 0, "o") , (25818, 0, "n") , (25819, 0, "s") , (25820, 0, "i") , (25821, 0, "s") , (25822, 0, "t") , (25823, 0, "e") , (25824, 0, "n") , (25825, 0, "c") , (25826, 0, "y") , (25827, 0, " ") , (25828, 0, "o") , (25829, 0, "f") , (25830, 0, " ") , (25831, 0, "c") , (25832, 0, "o") , (25833, 0, "m") , (25834, 0, "p") , (25835, 0, "o") , (25836, 0, "u") , (25837, 0, "n") , (25838, 0, "d") , (25839, 0, " ") , (25840, 0, "e") , (25841, 0, "d") , (25842, 0, "i") , (25843, 0, "r") , (25844, 0, "s") , (25845, 0, " ") , (25845, 1, "") , (25844, 1, "") , (25843, 1, "") , (25843, 0, "t") , (25844, 0, "s") , (25845, 0, " ") , (25846, 0, "w") , (25847, 0, "e") , (25848, 0, " ") , (25848, 1, "") , (25848, 0, " ") , (25849, 0, "k") , (25850, 0, "e") , (25851, 0, "e") , (25852, 0, "p") , (25853, 0, " ") , (25854, 0, "t") , (25855, 0, "h") , (25856, 0, "e") , (25857, 0, " ") , (25858, 0, "c") , (25859, 0, "u") , (25860, 0, "r") , (25861, 0, "s") , (25862, 0, "o") , (25846, 17, "w") , (25847, 0, "e") , (25848, 0, "'") , (25849, 0, "l") , (25850, 0, "l") , (25851, 0, " ") , (25852, 0, "u") , (25853, 0, "p") , (25854, 0, "d") , (25855, 0, "a") , (25856, 0, "t") , (25857, 0, "e") , (25858, 0, " ") , (25859, 0, "t") , (25860, 0, "h") , (25861, 0, "e") , (25862, 0, " ") , (25863, 0, "c") , (25864, 0, "u") , (25865, 0, "r") , (25866, 0, "s") , (25867, 0, "o") , (25868, 0, "r") , (25869, 0, " ") , (25870, 0, "t") , (25871, 0, "o") , (25872, 0, " ") , (25873, 0, "p") , (25874, 0, "o") , (25875, 0, "i") , (25876, 0, "n") , (25877, 0, "t") , (25878, 0, " ") , (25879, 0, "t") , (25880, 0, "o") , (25881, 0, "t") , (25882, 0, " ") , (25882, 1, "") , (25881, 1, "") , (25881, 0, " ") , (25882, 0, "t") , (25883, 0, "h") , (25884, 0, "e") , (25885, 0, " ") , (25886, 0, "e") , (25887, 0, "n") , (25888, 0, "d") , (25889, 0, " ") , (25890, 0, "o") , (25891, 0, "f") , (25892, 0, " ") , (25893, 0, "t") , (25894, 0, "h") , (25895, 0, "e") , (25896, 0, " ") , (25897, 0, "n") , (25898, 0, "o") , (25899, 0, "e") , (25899, 1, "") , (25898, 1, "") , (25898, 0, "e") , (25899, 0, "w") , (25900, 0, " ") , (25901, 0, "c") , (25902, 0, "o") , (25903, 0, "n") , (25904, 0, "t") , (25905, 0, "e") , (25906, 0, "n") , (25907, 0, "t") , (25908, 0, ".") , ( 25738 , 171 , " // Usually the cursor will be discarded after one change, but for\n // consistency of compound edits we'll update the cursor to point to\n // the end of the new content." ) , (25939, 0, "\n ") , (25952, 0, "c") , (25953, 0, "u") , (25954, 0, "r") , (25955, 0, "s") , (25956, 0, "o") , (25957, 0, "r") , (25958, 0, ".") , (25952, 7, "") , (25952, 0, "c") , (25953, 0, "u") , (25954, 0, "r") , (25955, 0, "s") , (25956, 0, "o") , (25957, 0, "r") , (25958, 0, ".") , (25959, 0, "userpos") , (25966, 0, " ") , (25967, 0, "+") , (25968, 0, "=") , (25969, 0, " ") , (25970, 0, "n") , (25971, 0, "u") , (25972, 0, "m") , (25973, 0, "_") , (25970, 4, "num_inserted_usercount") , (25992, 0, ";") , (25939, 0, "\n ") , (25952, 0, "f") , (25953, 0, "o") , (25954, 0, "r") , (25955, 0, " ") , (25956, 0, "_") , (25957, 0, " ") , (25958, 0, "i") , (25959, 0, "n") , (25960, 0, " ") , (25956, 5, "e") , (25957, 0, "n") , (25958, 0, "t") , (25959, 0, "r") , (25960, 0, "y") , (25956, 0, "&") , (25957, 0, "m") , (25958, 0, "u") , (25959, 0, "t") , (25960, 0, " ") , (25966, 0, " ") , (25967, 0, "i") , (25968, 0, "n") , (25969, 0, " ") , (25970, 0, "c") , (25971, 0, "u") , (25972, 0, "r") , (25973, 0, "s") , (25974, 0, "o") , (25975, 0, "r") , (25976, 0, ".") , (25977, 0, "entries") , (25984, 0, " ") , (25985, 0, "{") , (25986, 0, "\n ") , (26003, 0, "\n ") , (25987, 16, "") , (25988, 16, " }") , (25984, 0, "[") , (25985, 0, "0") , (25986, 0, ".") , (25987, 0, ".") , (25988, 0, "s") , (25989, 0, "e") , (25990, 0, "l") , (25991, 0, "f") , (25992, 0, ".") , (25993, 0, "h") , (25994, 0, "e") , (25994, 1, "") , (25993, 1, "") , (25993, 0, "h") , (25994, 0, "e") , (25995, 0, "a") , (25996, 0, "d") , (25997, 0, ".") , (25998, 0, "h") , (25999, 0, "e") , (26000, 0, "i") , (26001, 0, "g") , (26002, 0, "h") , (26003, 0, "t") , (26004, 0, " ") , (26005, 0, "a") , (26006, 0, "s") , (26007, 0, " ") , (26008, 0, "u") , (26009, 0, "s") , (26010, 0, "i") , (26011, 0, "z") , (26012, 0, "e") , (26013, 0, ")") , (26013, 1, "") , (26013, 0, "]") , (26017, 0, " ") , (26017, 16, "") , (26014, 0, ".") , (26015, 0, "i") , (26016, 0, "t") , (26017, 0, "e") , (26018, 0, "r") , (26019, 0, "(") , (26020, 0, ")") , (26019, 0, "_") , (26020, 0, "m") , (26021, 0, "u") , (26022, 0, "t") , (26028, 0, " ") , (26044, 0, "e") , (26045, 0, "n") , (26046, 0, "t") , (26047, 0, "r") , (26048, 0, "y") , (26049, 0, ".") , (26050, 0, "s") , (26051, 0, "k") , (26052, 0, "i") , (26053, 0, "p") , (26054, 0, "_") , (26055, 0, "u") , (26050, 6, "skip_usersize") , (26063, 0, " ") , (26064, 0, "+") , (26065, 0, "=") , (26066, 0, " ") , (26067, 0, "num_inserted_usercount") , (26089, 0, ";") , (25956, 5, "") , (1150, 3, "1") , (1449, 2, "1") , (1150, 1, "") , (1150, 0, "2") , (20926, 0, ",") , (20927, 0, " ") , (20928, 0, "m") , (20929, 0, "o") , (20930, 0, "v") , (20931, 0, "e") , (20932, 0, "_") , (20933, 0, "c") , (20934, 0, "u") , (20935, 0, "r") , (20936, 0, "s") , (20937, 0, "o") , (20938, 0, "r") , (20939, 0, ":") , (20940, 0, " ") , (20941, 0, "b") , (20942, 0, "o") , (20943, 0, "o") , (20944, 0, "l") , (20941, 4, "bool") , (22884, 0, "\n ") , (22897, 0, "f") , (22897, 1, "") , (22897, 0, "i") , (22898, 0, "f") , (22899, 0, " ") , (22900, 0, "m") , (22901, 0, "o") , (22902, 0, "v") , (22903, 0, "e") , (22904, 0, "_") , (22900, 5, "move_cursor") , (22911, 0, " ") , (22912, 0, "{") , (23033, 12, " ") , (22990, 16, " ") , (22958, 16, " ") , (22914, 12, " ") , (23063, 0, "\n ") , (23064, 16, " }") , (23088, 0, "\n ") , (23097, 0, "i") , (23098, 0, "f") , (23099, 0, " ") , (23100, 0, "m") , (23101, 0, "o") , (23102, 0, "v") , (23103, 0, "e") , (23100, 4, "move_cursor") , (23111, 0, " ") , (23112, 0, "{") , (23306, 8, " ") , (23246, 12, " ") , (23163, 12, " ") , (23114, 8, " ") , (23331, 0, "\n ") , (23332, 12, " }") , (23113, 53, "") , (23089, 8, " ") , (23089, 0, " for i in new_height_usize..head_height {\n") , (23166, 87, "") , (23138, 12, " ") , ( 23138 , 0 , " (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n" ) , (23341, 0, "\n }") , (23332, 8, " ") , (23318, 14, "") , (23221, 16, " ") , (23328, 12, " ") , (28502, 0, ",") , (28503, 0, " ") , (28504, 0, "t") , (28505, 0, "r") , (28506, 0, "u") , (28507, 0, "e") , (28503, 5, "") , (28502, 1, "") , (28502, 0, ",") , (28503, 0, " true") , (28792, 0, ",") , (28793, 0, " ") , (28794, 0, "f") , (28795, 0, "a") , (28796, 0, "l") , (28797, 0, "s") , (28798, 0, "e") , (28674, 0, "\n ") , (28687, 0, "/") , (28688, 0, "/") , (28689, 0, " ") , (28675, 15, "") , (28674, 1, "") , (28723, 0, "\n ") , (28740, 0, "/") , (28741, 0, "/") , (28742, 0, " ") , (28743, 0, "P") , (28744, 0, "a") , (28745, 0, "s") , (28746, 0, "s") , (28747, 0, "i") , (28748, 0, "n") , (28749, 0, "g") , (28750, 0, " ") , (28751, 0, "f") , (28752, 0, "a") , (28753, 0, "l") , (28754, 0, "s") , (28755, 0, "e") , (28756, 0, " ") , (28757, 0, "t") , (28758, 0, "o") , (28759, 0, " ") , (28760, 0, "i") , (28761, 0, "n") , (28762, 0, "d") , (28763, 0, "i") , (28764, 0, "c") , (28765, 0, "a") , (28766, 0, "t") , (28767, 0, "e") , (28768, 0, " ") , (28769, 0, "w") , (28770, 0, "e") , (28771, 0, " ") , (28772, 0, "d") , (28773, 0, "o") , (28774, 0, "n") , (28775, 0, "'") , (28776, 0, "t") , (28777, 0, " ") , (28778, 0, "w") , (28779, 0, "a") , (28780, 0, "n") , (28781, 0, "t") , (28782, 0, " ") , (28783, 0, "t") , (28784, 0, "o") , (28785, 0, " ") , (28783, 3, "t") , (28784, 0, "h") , (28785, 0, "e") , (28786, 0, " ") , (28787, 0, "c") , (28788, 0, "u") , (28789, 0, "r") , (28790, 0, "s") , (28791, 0, "o") , (28792, 0, "r") , (28793, 0, " ") , (28794, 0, "u") , (28795, 0, "p") , (28796, 0, "d") , (28797, 0, "a") , (28798, 0, "t") , (28799, 0, "e") , (28800, 0, "d") , (28801, 0, " ") , (28802, 0, "a") , (28803, 0, "f") , (28804, 0, "t") , (28805, 0, "e") , (28806, 0, " ") , (28807, 0, "t") , (28807, 1, "") , (28806, 1, "") , (28806, 0, "r") , (28807, 0, " ") , (28808, 0, "t") , (28809, 0, "h") , (28810, 0, "i") , (28811, 0, "s") , (28812, 0, " ") , (28813, 0, "-") , (28814, 0, " ") , (28815, 0, "i") , (28816, 0, "t") , (28817, 0, " ") , (28818, 0, "s") , (28819, 0, "h") , (28820, 0, "o") , (28821, 0, "u") , (28822, 0, "l") , (28823, 0, "d") , (28824, 0, " ") , (28825, 0, "r") , (28826, 0, "e") , (28827, 0, "m") , (28828, 0, "a") , (28829, 0, "i") , (28830, 0, "n") , (28831, 0, " ") , (28832, 0, "a") , (28833, 0, "t") , (28834, 0, " ") , (28835, 0, "t") , (28836, 0, "h") , (28837, 0, "e") , (28838, 0, " ") , (28839, 0, "e") , (28840, 0, "n") , (28841, 0, "d") , (28842, 0, " ") , (28843, 0, "o") , (28844, 0, "f") , (28845, 0, " ") , (28846, 0, "t") , (28847, 0, "h") , (28848, 0, "e") , (28849, 0, " ") , (28850, 0, "n") , (28851, 0, "e") , (28852, 0, "w") , (28853, 0, "l") , (28854, 0, "y") , (28855, 0, " ") , (28856, 0, "i") , (28857, 0, "n") , (28858, 0, "s") , (28859, 0, "e") , (28860, 0, "r") , (28861, 0, "t") , (28862, 0, "e") , (28863, 0, "d") , (28864, 0, " ") , (28865, 0, "c") , (28866, 0, "o") , (28867, 0, "n") , (28868, 0, "t") , (28869, 0, "e") , (28870, 0, "n") , (28871, 0, "t") , (28872, 0, ",") , (28873, 0, " ") , (28874, 0, "w") , (28875, 0, "h") , (28876, 0, "i") , (28877, 0, "c") , (28878, 0, "h") , (28879, 0, " ") , (28880, 0, "i") , (28881, 0, "s") , (28882, 0, " ") , (28883, 0, "b") , (28884, 0, "e") , (28885, 0, "f") , (28886, 0, "o") , (28887, 0, "r") , (28888, 0, "e") , (28883, 0, "*") , (28890, 0, "*") , (28891, 0, " ") , (28892, 0, "t") , (28893, 0, "h") , (28894, 0, "i") , (28895, 0, "s") , (28896, 0, " ") , (28897, 0, "a") , (28898, 0, "e") , (28898, 1, "") , (28897, 1, "") , (28897, 0, "e") , (28898, 0, "n") , (28899, 0, "d") , (28900, 0, " ") , (28901, 0, "b") , (28902, 0, "i") , (28903, 0, "t") , (28904, 0, ".") , ( 28724 , 181 , " // Passing false to indicate we don't want the cursor updated\n // after this - it should remain at the end of the newly\n // inserted content, which is *before* this end bit." ) , (23221, 0, " if move_cursor {\n") , (23278, 64, "") , (23250, 12, " ") , ( 23250 , 0 , " cursor.entries[i].skip_usersize += new_userlen;\n" ) , (23346, 14, "") , (23314, 16, " ") , (23314, 0, " }\n") , (23364, 10, "") , (23328, 20, " ") , (23328, 0, " }\n") , (23378, 1, "") , (23338, 24, " ") , (23338, 0, " \n") , (23371, 42, "") , (23347, 8, " ") , (23347, 0, " self.num_items += contents.len();\n") , (23417, 43, "") , (23389, 12, " ") , (23389, 0, " self.num_usercount += new_userlen;\n") , (23432, 16, " ") , (23432, 12, " ") , (23465, 0, " ") , (23499, 0, "\n ") , (23500, 12, " }") , (12303, 0, "\n ") , (12320, 0, " ") , (12304, 4, "") , (12317, 0, "f") , (12318, 0, "i") , (12319, 0, "e") , (12320, 0, "l") , (12321, 0, "d") , (12347, 1, " ") , (12348, 0, "-") , (12350, 1, "") , (12350, 0, "e") , ( 12305 , 162 , " // This field isn't strictly necessary - earlier versions tacked this on to\n // the last item in entries... I'm still not sure the cleanest way to do\n // this." ) , (12468, 0, "/") , (12391, 0, "/") , (12311, 0, "/") , (12304, 0, "\n ") , (12309, 0, "/") , (12310, 0, "/") , (12311, 0, "/") , (12312, 0, " ") , (12313, 0, "T") , (12314, 0, "h") , (12315, 0, "e") , (12316, 0, " ") , (12317, 0, "g") , (12318, 0, "l") , (12319, 0, "o") , (12320, 0, "a") , (12320, 1, "") , (12320, 0, "b") , (12321, 0, "a") , (12322, 0, "l") , (12323, 0, " ") , (12324, 0, "u") , (12325, 0, "s") , (12326, 0, "e") , (12327, 0, "r") , (12328, 0, " ") , (12329, 0, "p") , (12330, 0, "o") , (12331, 0, "s") , (12332, 0, "i") , (12333, 0, "t") , (12334, 0, "i") , (12335, 0, "o") , (12336, 0, "n") , (12337, 0, " ") , (12338, 0, "i") , (12339, 0, "n") , (12340, 0, " ") , (12341, 0, "t") , (12342, 0, "h") , (12343, 0, "e") , (12344, 0, " ") , (12345, 0, "l") , (12346, 0, "i") , (12347, 0, "s") , (12348, 0, "t") , (12338, 0, "o") , (12339, 0, "f") , (12340, 0, " ") , (12341, 0, "t") , (12342, 0, "h") , (12343, 0, "e") , (12344, 0, " ") , (12345, 0, "c") , (12346, 0, "u") , (12347, 0, "r") , (12348, 0, "s") , (12349, 0, "o") , (12350, 0, " ") , (12351, 0, "r") , (12362, 1, "") , (12361, 1, "") , (12360, 1, "") , (12359, 1, "") , (12358, 1, "") , (12357, 1, "") , (12356, 1, "") , (12355, 1, "") , (12354, 1, "") , (12353, 1, "") , (12352, 1, "") , (12351, 1, "") , (12350, 1, "") , (12350, 0, "r") , (12351, 0, " ") , (12352, 0, "i") , (12353, 0, "n") , (12354, 0, " ") , (12355, 0, "t") , (12356, 0, "h") , (12357, 0, "e") , (12358, 0, " ") , (12359, 0, "e") , (12360, 0, "n") , (12361, 0, "t") , (12362, 0, "i") , (12363, 0, "r") , (12364, 0, "e") , (12365, 0, " ") , (12366, 0, "l") , (12367, 0, "i") , (12368, 0, "s") , (12369, 0, "t") , (12370, 0, ".") , (12371, 0, " ") , (12372, 0, "T") , (12373, 0, "i") , (12374, 0, "s") , (12375, 0, " ") , (12375, 1, "") , (12374, 1, "") , (12373, 1, "") , (12373, 0, "h") , (12374, 0, "i") , (12375, 0, "s") , (12376, 0, " ") , (12377, 0, "i") , (12378, 0, "s") , (12379, 0, " ") , (12380, 0, "u") , (12381, 0, "s") , (12382, 0, "e") , (12383, 0, "d") , (12384, 0, " ") , (12385, 0, "f") , (12386, 0, "o") , (12387, 0, "r") , (12388, 0, " ") , (12389, 0, "h") , (12389, 1, "") , (12389, 0, "w") , (12390, 0, "h") , (12391, 0, "e") , (12392, 0, "n") , (12393, 0, " ") , (12394, 0, "t") , (12395, 0, "h") , (12396, 0, "e") , (12397, 0, " ") , (12398, 0, "h") , (12399, 0, "e") , (12400, 0, "i") , (12401, 0, "g") , (12402, 0, "h") , (12403, 0, "t") , (12404, 0, " ") , (12398, 7, "m") , (12399, 0, "a") , (12400, 0, "x") , (12401, 0, " ") , (12402, 0, "s") , (12403, 0, "e") , (12404, 0, "e") , (12405, 0, "n") , (12406, 0, " ") , (12407, 0, "h") , (12408, 0, "e") , (12409, 0, "i") , (12410, 0, "g") , (12411, 0, "h") , (12412, 0, "t") , (12413, 0, " ") , (12414, 0, "i") , (12415, 0, "n") , (12416, 0, "c") , (12417, 0, "r") , (12418, 0, "e") , (12419, 0, "a") , (12420, 0, "s") , (12421, 0, "e") , (12422, 0, "s") , (12423, 0, ",") , (12424, 0, " ") , (12425, 0, "s") , (12426, 0, "o") , (12427, 0, " ") , (12428, 0, "w") , (12429, 0, "e") , (12430, 0, " ") , (12431, 0, "c") , (12432, 0, "a") , (12433, 0, "n") , (12434, 0, " ") , (12435, 0, "p") , (12436, 0, "o") , (12437, 0, "p") , (12438, 0, "u") , (12439, 0, "l") , (12440, 0, "a") , (12441, 0, "t") , (12442, 0, "e") , (12443, 0, " ") , (12444, 0, "f") , (12445, 0, "i") , (12446, 0, "e") , (12447, 0, "l") , (12448, 0, "d") , (12449, 0, "s") , (12450, 0, " ") , (12451, 0, "i") , (12452, 0, "n") , (12453, 0, " ") , (12454, 0, "t") , (12455, 0, "h") , (12456, 0, "e") , (12457, 0, " ") , (12458, 0, "c") , (12459, 0, "u") , (12460, 0, "r") , (12461, 0, "s") , (12462, 0, "o") , (12463, 0, "r") , (12464, 0, " ") , (12465, 0, "a") , (12466, 0, "n") , (12467, 0, "d") , (12468, 0, " ") , (12469, 0, "i") , (12470, 0, "n") , (12471, 0, " ") , (12444, 7, "p") , (12445, 0, "r") , (12446, 0, "e") , (12447, 0, "v") , (12448, 0, "i") , (12449, 0, "u") , (12450, 0, "s") , (12451, 0, "l") , (12451, 1, "") , (12450, 1, "") , (12449, 1, "") , (12448, 1, "") , (12448, 0, "i") , (12449, 0, "o") , (12450, 0, "u") , (12451, 0, "s") , (12452, 0, "l") , (12453, 0, "y") , (12454, 0, " ") , (12455, 0, "u") , (12456, 0, "n") , (12457, 0, "u") , (12458, 0, "s") , (12459, 0, "e") , (12460, 0, "d") , (12461, 0, " ") , (12462, 0, "e") , (12463, 0, "n") , (12464, 0, "t") , (12465, 0, "r") , (12466, 0, "i") , (12467, 0, "e") , (12468, 0, "s") , (12469, 0, " ") , (12484, 7, "a") , (12485, 0, "n") , (12486, 0, "d") , (12487, 0, " ") , (12488, 0, "i") , (12489, 0, "n") , (12490, 0, " ") , (12491, 0, "t") , (12492, 0, "h") , (12493, 0, "e") , (12494, 0, " ") , (12495, 0, "h") , (12496, 0, "e") , (12497, 0, "a") , (12498, 0, "d") , (12499, 0, " ") , (12500, 0, "n") , (12501, 0, "o") , (12502, 0, "d") , (12503, 0, "e") , (12504, 0, "'") , (12505, 0, "s") , (12506, 0, " ") , (12507, 0, "h") , (12508, 0, "e") , (12509, 0, "i") , (12510, 0, "g") , (12511, 0, "h") , (12512, 0, "t") , (12504, 9, ".") , (12505, 0, "assert_eq!") , (12505, 10, "") , (12505, 0, "\n /// ") , ( 12305 , 209 , " /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///" ) , (12722, 0, "\n ") , (12727, 0, "\n ") , (12723, 4, "") , (12728, 0, "l") , (12729, 0, "o") , (12730, 0, "c") , (12731, 0, "a") , (12732, 0, "l") , (12733, 0, "_") , (12734, 0, "i") , (12735, 0, "n") , (12736, 0, "d") , (12737, 0, "e") , (12738, 0, ":") , (12738, 1, "") , (12738, 0, "x") , (12739, 0, ":") , (12740, 0, " ") , (12741, 0, "u") , (12742, 0, "s") , (12743, 0, "i") , (12744, 0, "z") , (12745, 0, "e") , (12746, 0, ",") , (12723, 0, "\n ") , (12728, 0, "/") , (12729, 0, "/") , (12730, 0, "/") , (12731, 0, " ") , (12732, 0, "T") , (12733, 0, "h") , (12734, 0, "i") , (12735, 0, "s") , (12736, 0, " ") , (12737, 0, "i") , (12738, 0, "s") , (12739, 0, " ") , (12740, 0, "n") , (12741, 0, "e") , (12742, 0, "e") , (12743, 0, "d") , (12744, 0, "e") , (12745, 0, "d") , (12746, 0, " ") , (12747, 0, "e") , (12748, 0, "b") , (12749, 0, "c") , (12750, 0, "a") , (12732, 19, "W") , (12733, 0, "h") , (12734, 0, "e") , (12735, 0, "n") , (12736, 0, " ") , (12737, 0, "t") , (12738, 0, "h") , (12739, 0, "e") , (12740, 0, " ") , (12741, 0, "u") , (12742, 0, "s") , (12743, 0, "e") , (12744, 0, "r") , (12745, 0, "p") , (12746, 0, "o") , (12747, 0, "s") , (12748, 0, " ") , (12749, 0, "o") , (12750, 0, "f") , (12751, 0, " ") , (12752, 0, "a") , (12753, 0, "n") , (12754, 0, " ") , (12755, 0, "e") , (12756, 0, "n") , (12757, 0, "t") , (12758, 0, "r") , (12759, 0, "y") , (12760, 0, " ") , (12761, 0, "i") , (12762, 0, "s") , (12763, 0, " ") , (12764, 0, "0") , (12765, 0, " ") , (12766, 0, "(") , (12767, 0, "t") , (12768, 0, "o") , (12769, 0, "t") , (12770, 0, "a") , (12771, 0, "l") , (12772, 0, "l") , (12773, 0, "y") , (12774, 0, " ") , (12775, 0, "v") , (12776, 0, "a") , (12777, 0, "l") , (12778, 0, "i") , (12779, 0, "d") , (12780, 0, " ") , (12781, 0, "a") , (12782, 0, "n") , (12783, 0, "d") , (12784, 0, " ") , (12785, 0, "u") , (12786, 0, "s") , (12787, 0, "e") , (12788, 0, "f") , (12789, 0, "u") , (12790, 0, "l") , (12791, 0, ")") , (12792, 0, ",") , (12793, 0, " ") , (12794, 0, "t") , (12795, 0, "h") , (12796, 0, "e") , (12797, 0, " ") , (12794, 4, "a") , (12795, 0, " ") , (12796, 0, "c") , (12797, 0, "u") , (12798, 0, "r") , (12799, 0, "s") , (12800, 0, "o") , (12801, 0, "r") , (12802, 0, " ") , (12803, 0, "b") , (12804, 0, "e") , (12805, 0, "c") , (12806, 0, "o") , (12807, 0, "m") , (12808, 0, "e") , (12809, 0, "s") , (12810, 0, " ") , (12811, 0, "a") , (12812, 0, "m") , (12813, 0, "b") , (12814, 0, "i") , (12815, 0, "g") , (12816, 0, "u") , (12817, 0, "o") , (12818, 0, "u") , (12819, 0, "s") , (12820, 0, " ") , (12821, 0, "i") , (12822, 0, "n") , (12823, 0, " ") , (12824, 0, "w") , (12825, 0, "h") , (12826, 0, "e") , (12827, 0, "r") , (12828, 0, "e") , (12829, 0, " ") , (12830, 0, "i") , (12831, 0, "t") , (12832, 0, "s") , (12833, 0, " ") , (12834, 0, "p") , (12835, 0, "o") , (12836, 0, "i") , (12837, 0, "n") , (12838, 0, "t") , (12839, 0, "i") , (12840, 0, "n") , (12841, 0, "g") , (12842, 0, ".") , ( 12724 , 119 , " /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous in where its pointing." ) , (12829, 2, "a") , (12830, 0, "b") , (12831, 0, "o") , (12832, 0, "u") , (12833, 0, "t") , (12854, 0, " ") , (12855, 0, "T") , (12856, 0, "h") , (12857, 0, "i") , (12858, 0, "s") , (12859, 0, " ") , (12860, 0, "i") , (12861, 0, "s") , (12862, 0, " ") , (12863, 0, "u") , (12864, 0, "s") , (12865, 0, "e") , (12866, 0, "d") , (12829, 5, "w") , (12830, 0, "i") , (12831, 0, "t") , (12832, 0, "h") , (12833, 0, " ") , (12834, 0, "r") , (12835, 0, "e") , (12836, 0, "g") , (12837, 0, "a") , (12838, 0, "r") , (12839, 0, "d") , (12840, 0, " ") , (12841, 0, "t") , (12842, 0, "o") , (12849, 0, " ") , (12850, 0, "e") , (12851, 0, "x") , (12852, 0, "a") , (12853, 0, "c") , (12854, 0, "t") , (12855, 0, "l") , (12856, 0, "y") , (12870, 0, " ") , (12871, 0, "i") , (12872, 0, "n") , (12873, 0, " ") , (12874, 0, "t") , (12875, 0, "h") , (12876, 0, "e") , (12877, 0, " ") , (12878, 0, "c") , (12879, 0, "u") , (12880, 0, "r") , (12881, 0, "r") , (12882, 0, "e") , (12883, 0, "n") , (12884, 0, "t") , (12885, 0, " ") , (12886, 0, "e") , (12887, 0, "n") , (12888, 0, "t") , (12889, 0, "r") , (12890, 0, "y") , ( 12803 , 102 , " /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used" ) , (12913, 0, "t") , (12914, 0, " ") , (12914, 1, "") , (12913, 1, "") , (12913, 0, " ") , (12914, 0, "t") , (12915, 0, "o") , (12916, 0, " ") , (12917, 0, "r") , (12918, 0, "e") , (12919, 0, "s") , (12920, 0, "o") , (12921, 0, "v") , (12922, 0, "l") , (12923, 0, "e") , (12924, 0, " ") , (12925, 0, "t") , (12926, 0, "a") , (12917, 10, "r") , (12918, 0, "e") , (12919, 0, "s") , (12920, 0, "o") , (12921, 0, "l") , (12922, 0, "v") , (12923, 0, "e") , (12924, 0, " ") , (12925, 0, "t") , (12926, 0, "h") , (12927, 0, "a") , (12928, 0, "t") , (12929, 0, " ") , (12930, 0, "a") , (12931, 0, "m") , (12932, 0, "b") , (12933, 0, "u") , (12933, 1, "") , (12933, 0, "i") , (12934, 0, "g") , (12935, 0, "u") , (12936, 0, "i") , (12937, 0, "t") , (12938, 0, "y") , (12939, 0, ".") , (19299, 0, "(") , (19309, 0, ",") , (19310, 0, " ") , (19311, 0, "u") , (19312, 0, "s") , (19313, 0, "i") , (19314, 0, "z") , (19315, 0, "e") , (19316, 0, ")") , (18943, 4, "c") , (18944, 0, "o") , (18945, 0, "n") , (18946, 0, "t") , (18947, 0, "a") , (18948, 0, "i") , (18949, 0, "n") , (18950, 0, "s") , ( 18905 , 213 , " /// skiplist. The returned cursor contains list of nodes which point past\n /// the specified position, as well as offsets of how far into their\n /// character lists the specified characters are.\n ///" ) , (19126, 70, "B") , (19127, 0, "y") , (19128, 0, " ") , (19129, 0, "d") , (19130, 0, "e") , (19126, 5, "T") , (19127, 0, "h") , (19127, 1, "") , (19126, 1, "") , (19126, 0, "i") , (19127, 0, "t") , (19128, 0, "e") , (19129, 0, "r") , (19130, 0, "_") , (19131, 0, "a") , (19132, 0, "t") , (19133, 0, "_") , (19134, 0, "u") , (19135, 0, "s") , (19136, 0, "e") , (19137, 0, "r") , (19138, 0, "p") , (19139, 0, "o") , (19140, 0, "s") , (19141, 0, " ") , (19142, 0, "c") , (19143, 0, "u") , (19144, 0, "r") , (19145, 0, "r") , (19146, 0, "e") , (19147, 0, "n") , (19148, 0, "t") , (19149, 0, "l") , (19150, 0, "y") , (19151, 0, " ") , (19152, 0, "r") , (19153, 0, "e") , (19154, 0, "t") , (19155, 0, "u") , (19156, 0, "r") , (19157, 0, "n") , (19158, 0, "s") , (19159, 0, " ") , (19160, 0, "t") , (19161, 0, "h") , (19162, 0, "e") , (19163, 0, " ") , (19164, 0, "l") , (19165, 0, "a") , (19166, 0, "s") , (19167, 0, "t") , (19168, 0, " ") , (19126, 43, "S") , (19127, 0, "o") , (19128, 0, "m") , (19129, 0, "e") , (19130, 0, "t") , (19131, 0, "i") , (19132, 0, "m") , (19133, 0, "e") , (19134, 0, "s") , (19135, 0, " ") , (19136, 0, "a") , (19137, 0, " ") , (19138, 0, "c") , (19139, 0, "a") , (19140, 0, "l") , (19141, 0, "l") , (19142, 0, " ") , (19143, 0, "t") , (19144, 0, "o") , (19145, 0, " ") , (19146, 0, "i") , (19147, 0, "t") , (19148, 0, "e") , (19149, 0, "r") , (19150, 0, "_") , (19151, 0, "a") , (19152, 0, "t") , (19153, 0, "_") , (19154, 0, "u") , (19155, 0, "s") , (19156, 0, "e") , (19157, 0, "r") , (19158, 0, "p") , (19159, 0, "o") , (19160, 0, "s") , (19161, 0, " ") , (19162, 0, "i") , (19163, 0, "s") , (19164, 0, " ") , (19165, 0, "a") , (19166, 0, "m") , (19167, 0, "b") , (19168, 0, "i") , (19169, 0, "g") , (19170, 0, "u") , (19171, 0, "o") , (19172, 0, "u") , (19173, 0, "s") , (19174, 0, ":") , (19175, 0, "assert_eq!") , (19185, 0, "\n /// ") , (19194, 0, "-") , (19185, 10, "") , (19175, 10, "") , (19175, 0, "\n /// ") , (19184, 0, "\n /// ") , (19193, 0, "-") , (19194, 0, " ") , (19195, 0, "T") , (19196, 0, "h") , (19197, 0, "e") , (19198, 0, " ") , (19199, 0, "u") , (19200, 0, "s") , (19201, 0, "e") , (19202, 0, "r") , (19199, 4, "") , (19199, 0, "i") , (19200, 0, "t") , (19201, 0, "e") , (19202, 0, "m") , (19203, 0, " ") , (19204, 0, "c") , (19205, 0, "a") , (19206, 0, "n") , (19207, 0, " ") , (19208, 0, "c") , (19209, 0, "o") , (19210, 0, "n") , (19211, 0, "t") , (19212, 0, "a") , (19213, 0, "i") , (19214, 0, "n") , (19215, 0, " ") , (19216, 0, "z") , (19217, 0, "e") , (19218, 0, "r") , (19219, 0, "o") , (19220, 0, "-") , (19221, 0, "s") , (19222, 0, "i") , (19223, 0, "z") , (19224, 0, "e") , (19225, 0, "d") , (19220, 6, "i") , (19216, 5, "i") , (19217, 0, "t") , (19218, 0, "e") , (19219, 0, "m") , (19220, 0, "s") , (19221, 0, " ") , (19222, 0, "w") , (19223, 0, "i") , (19224, 0, "t") , (19225, 0, "h") , (19226, 0, " ") , (19227, 0, "z") , (19228, 0, "e") , (19229, 0, "r") , (19230, 0, "o") , (19231, 0, " ") , (19232, 0, "u") , (19233, 0, "s") , (19234, 0, "e") , (19235, 0, "r") , (19236, 0, "s") , (19237, 0, "i") , (19238, 0, "z") , (19239, 0, "e") , (19240, 0, ".") , (19241, 0, " ") , (19242, 0, "T") , (19243, 0, "h") , (19244, 0, "e") , (19245, 0, " ") , (19246, 0, "c") , (19247, 0, "u") , (19248, 0, "r") , (19249, 0, "s") , (19250, 0, "o") , (19251, 0, "r") , (19252, 0, " ") , (19253, 0, "c") , (19254, 0, "o") , (19255, 0, "u") , (19256, 0, "l") , (19257, 0, "d") , (19258, 0, " ") , (19259, 0, "p") , (19260, 0, "o") , (19261, 0, "i") , (19262, 0, "n") , (19263, 0, "t") , (19264, 0, " ") , (19265, 0, "t") , (19266, 0, "o") , (19267, 0, " ") , (19268, 0, "t") , (19268, 1, "") , (19268, 0, "a") , (19269, 0, "n") , (19270, 0, "y") , (19271, 0, " ") , (19272, 0, "o") , (19273, 0, "f") , (19274, 0, " ") , (19275, 0, "t") , (19276, 0, "h") , (19277, 0, "e") , (19278, 0, "m") , (19279, 0, ".") , (19280, 0, "assert_eq!") , (19280, 10, "") , (19280, 0, "\n /// ") , (19289, 0, "/") , (19289, 1, "") , (19289, 0, "-") , (19290, 0, " ") , (19291, 0, "T") , (19292, 0, "h") , (19293, 0, "e") , (19294, 0, " ") , (19295, 0, "c") , (19296, 0, "u") , (19297, 0, "r") , (19298, 0, "s") , (19299, 0, "o") , (19300, 0, "r") , (19301, 0, " ") , (19302, 0, "c") , (19303, 0, "o") , (19304, 0, "u") , (19305, 0, "l") , (19306, 0, "d") , (19307, 0, " ") , (19308, 0, "o") , (19308, 1, "") , (19280, 0, " ") , (19281, 0, "F") , (19282, 0, "o") , (19283, 0, "r") , (19284, 0, " ") , (19285, 0, "n") , (19286, 0, "o") , (19287, 0, "w") , (19288, 0, " ") , (19289, 0, "w") , (19289, 1, "") , (19289, 0, "t") , (19290, 0, "h") , (19291, 0, "i") , (19292, 0, "s") , (19293, 0, " ") , (19294, 0, "m") , (19295, 0, "e") , (19296, 0, "t") , (19297, 0, "h") , (19298, 0, "o") , (19299, 0, "d") , (19300, 0, " ") , (19301, 0, "a") , (19302, 0, "l") , (19303, 0, "w") , (19304, 0, "a") , (19305, 0, "y") , (19306, 0, "s") , (19307, 0, " ") , (19308, 0, "r") , (19309, 0, "e") , (19310, 0, "t") , (19311, 0, "u") , (19312, 0, "r") , (19280, 33, "") , (19295, 0, "r") , (19296, 0, "e") , (19297, 0, "t") , (19298, 0, "u") , (19299, 0, "r") , (19300, 0, "n") , (19301, 0, "e") , (19302, 0, "d") , (19303, 0, " ") , (19317, 0, "b") , (19318, 0, "e") , (19319, 0, " ") , (19320, 0, "e") , (19321, 0, "i") , (19322, 0, "t") , (19323, 0, "h") , (19324, 0, "e") , (19325, 0, "r") , (19326, 0, " ") , (19327, 0, "a") , (19328, 0, "t") , (19329, 0, " ") , (19330, 0, "t") , (19331, 0, "h") , (19332, 0, "e") , (19333, 0, "e") , (19333, 1, "") , (19333, 0, " ") , (19334, 0, "e") , (19335, 0, "n") , (19336, 0, "d") , (19337, 0, " ") , (19338, 0, "o") , (19339, 0, "f") , (19340, 0, " ") , (19341, 0, "t") , (19342, 0, "h") , (19343, 0, "e") , (19344, 0, " ") , (19338, 0, "o") , (19339, 0, "f") , (19340, 0, " ") , (19291, 57, "I") , (19292, 0, "f") , (19293, 0, " ") , (19294, 0, "t") , (19295, 0, "h") , (19296, 0, "e") , (19297, 0, " ") , (19298, 0, "l") , (19299, 0, "o") , (19300, 0, "c") , (19301, 0, "a") , (19302, 0, "t") , (19303, 0, "i") , (19304, 0, "o") , (19305, 0, "n") , (19306, 0, " ") , (19307, 0, "i") , (19308, 0, "s") , (19309, 0, " ") , (19310, 0, "a") , (19311, 0, "t") , (19312, 0, " ") , (19313, 0, "t") , (19314, 0, "h") , (19315, 0, "e") , (19316, 0, " ") , (19317, 0, "e") , (19318, 0, "n") , (19319, 0, "d") , (19320, 0, " ") , (19321, 0, "o") , (19322, 0, "f") , (19323, 0, " ") , (19324, 0, "a") , (19325, 0, " ") , (19326, 0, "n") , (19327, 0, "o") , (19328, 0, "d") , (19329, 0, "e") , (19330, 0, ",") , (19331, 0, " ") , (19332, 0, "i") , (19333, 0, "t") , (19334, 0, " ") , (19335, 0, "i") , (19336, 0, "s") , (19337, 0, " ") , (19338, 0, "e") , (19339, 0, "q") , (19340, 0, "u") , (19341, 0, "a") , (19342, 0, "l") , (19343, 0, "l") , (19344, 0, "y") , (19345, 0, " ") , (19346, 0, "v") , (19347, 0, "a") , (19348, 0, "l") , (19349, 0, "i") , (19350, 0, "d") , (19351, 0, " ") , (19352, 0, "t") , (19353, 0, "o") , (19354, 0, " ") , (19355, 0, "r") , (19356, 0, "e") , (19357, 0, "t") , (19358, 0, "u") , (19359, 0, "r") , (19360, 0, "n") , (19361, 0, " ") , (19362, 0, "a") , (19363, 0, " ") , (19364, 0, "p") , (19365, 0, "o") , (19366, 0, "s") , (19367, 0, "i") , (19368, 0, "t") , (19369, 0, "i") , (19370, 0, "o") , (19371, 0, "n") , (19372, 0, " ") , (19373, 0, "a") , (19374, 0, "t") , (19375, 0, " ") , (19376, 0, "t") , (19377, 0, "h") , (19378, 0, "e") , (19379, 0, " ") , (19380, 0, "e") , (19380, 1, "") , (19380, 0, "s") , (19381, 0, "t") , (19382, 0, "a") , (19383, 0, "r") , (19384, 0, "t") , (19385, 0, " ") , (19386, 0, "o") , (19387, 0, " ") , (19387, 1, "") , (19387, 0, "f") , (19388, 0, " ") , (19389, 0, "t") , (19390, 0, " ") , (19390, 1, "") , (19390, 0, "h") , (19391, 0, "e") , (19392, 0, " ") , (19393, 0, "n") , (19394, 0, "e") , (19395, 0, "x") , (19396, 0, "t") , (19397, 0, " ") , (19398, 0, "n") , (19399, 0, "o") , (19400, 0, "d") , (19401, 0, "e") , (19402, 0, ".") , ( 19176 , 227 , " ///\n /// - The item can contain items with zero usersize. The cursor could point\n /// to any of them.\n /// - If the location is at the end of a node, it is equally valid to return\n /// a position at the start of the next node." ) , (19422, 0, "\n /// ") , (19431, 0, "\n /// ") , (19440, 0, "B") , (19441, 0, "e") , (19442, 0, "c") , (19443, 0, "a") , (19444, 0, "u") , (19445, 0, "s") , (19446, 0, "e") , (19447, 0, " ") , (19448, 0, "i") , (19449, 0, "t") , (19450, 0, "s") , (19451, 0, " ") , (19452, 0, "i") , (19453, 0, "m") , (19454, 0, "p") , (19455, 0, "o") , (19456, 0, "s") , (19457, 0, "s") , (19458, 0, "i") , (19459, 0, "b") , (19460, 0, "l") , (19461, 0, "e") , (19462, 0, " ") , (19463, 0, "m") , (19464, 0, "t") , (19464, 1, "") , (19463, 1, "") , (19463, 0, "t") , (19464, 0, "o") , (19465, 0, " ") , (19466, 0, "m") , (19467, 0, "v") , (19468, 0, "o") , (19468, 1, "") , (19467, 1, "") , (19467, 0, "o") , (19468, 0, "v") , (19469, 0, "e") , (19470, 0, " ") , (19471, 0, "b") , (19472, 0, "a") , (19473, 0, "c") , (19474, 0, "k") , (19475, 0, "w") , (19476, 0, "a") , (19477, 0, "r") , (19478, 0, "d") , (19479, 0, "s") , (19480, 0, " ") , (19481, 0, "i") , (19482, 0, "n") , (19483, 0, " ") , (19484, 0, "t") , (19485, 0, "h") , (19486, 0, "e") , (19487, 0, " ") , (19488, 0, "l") , (19489, 0, "i") , (19490, 0, "s") , (19491, 0, "t") , (19492, 0, ",") , (19493, 0, " ") , (19494, 0, "w") , (19495, 0, "e") , (19496, 0, " ") , (19497, 0, "r") , (19498, 0, "e") , (19499, 0, "t") , (19500, 0, "u") , (19501, 0, "r") , (19502, 0, "n") , (19503, 0, " ") , (19504, 0, "t") , (19505, 0, "h") , (19506, 0, "e") , (19507, 0, " ") , (19508, 0, "f") , (19509, 0, "i") , (19510, 0, "r") , (19511, 0, "s") , (19512, 0, "t") , (19513, 0, " ") , (19514, 0, "v") , (19515, 0, "a") , (19516, 0, "l") , (19517, 0, "i") , (19518, 0, "d") , (19519, 0, " ") , (19520, 0, "l") , (19521, 0, "o") , (19522, 0, "c") , (19523, 0, "a") , (19524, 0, "t") , (19525, 0, "i") , (19526, 0, "o") , (19527, 0, "n") , (19494, 2, "i") , (19495, 0, "t") , (19496, 0, "e") , (19497, 0, "r") , (19498, 0, "_") , (19499, 0, "a") , (19500, 0, "t") , (19501, 0, "_") , (19502, 0, "u") , (19503, 0, "s") , (19504, 0, "e") , (19505, 0, "r") , (19506, 0, "p") , (19507, 0, "o") , (19508, 0, "s") , (19516, 0, "s") , (19528, 0, "*") , (19534, 0, "*") , (19534, 1, "") , (19528, 1, "") , (19528, 5, "a") , (19528, 1, "") , (19528, 0, "a") , (19529, 0, "d") , (19530, 0, "m") , (19531, 0, "i") , (19532, 0, "s") , (19533, 0, "s") , (19534, 0, "i") , (19535, 0, "o") , (19536, 0, "n") , (19536, 1, "") , (19535, 1, "") , (19535, 0, "b") , (19536, 0, "l") , (19537, 0, "e") , (19547, 0, " ") , (19548, 0, "w") , (19549, 0, "i") , (19550, 0, "t") , (19551, 0, "h") , (19552, 0, " ") , (19553, 0, "t") , (19554, 0, "h") , (19555, 0, "e") , (19556, 0, " ") , (19557, 0, "s") , (19558, 0, "p") , (19559, 0, "e") , (19560, 0, "c") , (19561, 0, "i") , (19562, 0, "f") , (19563, 0, "i") , (19564, 0, "e") , (19565, 0, "d") , (19566, 0, " ") , (19567, 0, "u") , (19568, 0, "s") , (19569, 0, "e") , (19570, 0, "r") , (19571, 0, "p") , (19572, 0, "o") , (19573, 0, "s") , (19574, 0, ".") , ( 19423 , 152 , " ///\n /// Because its impossible to move backwards in the list, iter_at_userpos\n /// returns the first admissible location with the specified userpos." ) , (19582, 0, "\n /// ") , (19591, 0, "\n /// ") , (19600, 0, "@") , (19601, 0, "r") , (19602, 0, "e") , (19603, 0, "t") , (19604, 0, "u") , (19605, 0, "r") , (19600, 6, "R") , (19601, 0, "e") , (19602, 0, "t") , (19603, 0, "u") , (19604, 0, "r") , (19605, 0, "n") , (19606, 0, "s") , (19607, 0, " ") , (19608, 0, "c") , (19609, 0, "u") , (19610, 0, "r") , (19611, 0, "s") , (19612, 0, "o") , (19613, 0, "r") , (19614, 0, ",") , (19615, 0, " ") , (19608, 0, "(") , (19617, 0, "l") , (19618, 0, "e") , (19619, 0, "n") , (19620, 0, "g") , (19621, 0, "t") , (19622, 0, "h") , (19617, 6, "o") , (19618, 0, "f") , (19619, 0, "f") , (19620, 0, "s") , (19621, 0, "e") , (19622, 0, "t") , (19623, 0, " ") , (19624, 0, "i") , (19625, 0, "n") , (19626, 0, "t") , (19627, 0, "o") , (19628, 0, " ") , (19629, 0, "t") , (19630, 0, "h") , (19631, 0, "e") , (19632, 0, " ") , (19633, 0, "c") , (19634, 0, "u") , (19635, 0, "r") , (19636, 0, "r") , (19637, 0, "e") , (19638, 0, "n") , (19639, 0, "t") , (19640, 0, " ") , (19641, 0, "i") , (19642, 0, "t") , (19643, 0, "e") , (19644, 0, "m") , (19645, 0, ")") , (19633, 7, "") , (19632, 1, "") , (19632, 0, " ") , (19633, 0, "p") , (19634, 0, "o") , (19635, 0, "i") , (19636, 0, "n") , (19637, 0, "t") , (19638, 0, "e") , (19639, 0, "d") , (19633, 7, "i") , (19633, 1, "") , (19632, 1, "") , (19632, 0, " ") , (19633, 0, "s") , (19634, 0, "p") , (19635, 0, "e") , (19636, 0, "c") , (19637, 0, "i") , (19638, 0, "f") , (19639, 0, "i") , (19640, 0, "e") , (19641, 0, "d") , (19648, 0, ".") , (21345, 0, "\n ") , (21354, 0, "\n ") , (21346, 8, "") , (21355, 0, "/") , (21356, 0, "/") , (21357, 0, " ") , (21358, 0, "W") , (21359, 0, "e") , (21360, 0, "'") , (21361, 0, "v") , (21362, 0, "e") , (21363, 0, " ") , (21364, 0, "f") , (21365, 0, "o") , (21366, 0, "u") , (21367, 0, "n") , (21368, 0, "d") , (21369, 0, " ") , (21370, 0, "t") , (21371, 0, "h") , (21372, 0, "e") , (21373, 0, " ") , (21374, 0, "n") , (21375, 0, "o") , (21376, 0, "d") , (21377, 0, "e") , (21378, 0, ".") , (21379, 0, " ") , (21380, 0, "N") , (21381, 0, "o") , (21382, 0, "w") , (21383, 0, " ") , (21384, 0, "w") , (21385, 0, "e") , (21386, 0, " ") , (21387, 0, "n") , (21388, 0, "e") , (21389, 0, "e") , (21390, 0, "d") , (21391, 0, " ") , (21392, 0, "t") , (21393, 0, "o") , (21394, 0, " ") , (21395, 0, "f") , (21396, 0, "i") , (21397, 0, "n") , (21398, 0, "d") , (21399, 0, " ") , (21400, 0, "t") , (21401, 0, "h") , (21402, 0, "e") , (21403, 0, " ") , (21404, 0, "l") , (21405, 0, "o") , (21406, 0, "c") , (21407, 0, "a") , (21408, 0, "t") , (21409, 0, "i") , (21410, 0, "o") , (21411, 0, " ") , (21412, 0, "n") , (21413, 0, "w") , (21414, 0, "i") , (21415, 0, "t") , (21416, 0, "h") , (21417, 0, "i") , (21418, 0, "n") , (21384, 35, "l") , (21385, 0, "o") , (21386, 0, "o") , (21387, 0, "k") , (21388, 0, " ") , (21389, 0, "f") , (21390, 0, "o") , (21391, 0, "r") , (21392, 0, " ") , (21393, 0, "t") , (21394, 0, "h") , (21395, 0, "e") , (21396, 0, " ") , (21397, 0, "i") , (21398, 0, "n") , (21399, 0, "d") , (21400, 0, "e") , (21401, 0, "x") , (21402, 0, " ") , (21403, 0, "w") , (21404, 0, "i") , (21405, 0, "t") , (21406, 0, "h") , (21407, 0, "i") , (21408, 0, "n") , (21409, 0, " ") , (21410, 0, "t") , (21411, 0, "h") , (21412, 0, "e") , (21413, 0, " ") , (21414, 0, "n") , (21415, 0, "o") , (21416, 0, "d") , (21417, 0, "e") , (21418, 0, ".") , (10048, 966, "") , (10047, 1, "") , (20452, 0, "\n ") , ( 20461 , 0 , "\n /// I dunno where this logic should live, but we want to get the index of\n /// the item at the specified offset into the node (and the offset into the\n /// item).\n /// \n /// If the offset lands between items, we could return either the previous or next item.\n /// \n /// Returns (index, item_offset).\n fn get_iter_idx(&self, mut usersize_offset: usize, stick_end: bool) -> (usize, usize) {\n if usersize_offset == 0 { return (0, 0); }\n\n for (i, item) in self.content_slice().iter().enumerate() {\n let usersize = C::get_usersize(item);\n if usersize > usersize_offset {\n return (i, usersize_offset);\n } else if usersize == usersize_offset {\n return if stick_end { (i, usersize_offset) } else { (i+1, 0) }\n } else {\n usersize_offset -= usersize;\n }\n }\n panic!(\"Could not find requested offset within the node\");\n }" ) , (20453, 8, "") , (20453, 323, "") , (20453, 92, "") , (20999, 5, "") , (20998, 1, "") , (20932, 66, "") , (20931, 1, "") , (20931, 0, "\n ") , (20931, 9, "") , (20931, 0, "\n") , ( 20932 , 0 , " panic!(\"Could not find requested offset within the node\");" ) , (20998, 0, "\n") , (20999, 0, " }") , ( 20453 , 0 , " fn get_iter_idx(&self, mut usersize_offset: usize, stick_end: bool) -> (usize, usize) {\n" ) , (20457, 0, "// ") , (20453, 0, " ") , (21098, 5, "") , (21097, 1, "") , (21039, 0, "// ") , (20629, 4, "c") , (20630, 0, "u") , (20631, 0, "r") , (20632, 0, "s") , (20633, 0, "o") , (20634, 0, "r") , (20629, 6, "self") , (20560, 0, "// ") , (20560, 3, "") , (20551, 0, "\n ") , (20560, 4, "") , (20560, 0, "l") , (20561, 0, "e") , (20562, 0, "t") , (20563, 0, " ") , (20564, 0, "e") , (20565, 0, " ") , (20566, 0, "=") , (20567, 0, " ") , (20560, 8, "") , (20572, 15, "o") , (20573, 0, "f") , (20574, 0, "f") , (20575, 0, "s") , (20576, 0, "e") , (20577, 0, "t") , (20552, 8, "") , (20551, 1, "") , (20585, 1, "") , (20585, 0, "c") , (20586, 0, "r") , (20586, 1, "") , (20586, 0, "u") , (20587, 0, "r") , (20588, 0, "s") , (20589, 0, "o") , (20590, 0, "r") , (19538, 0, "\n ") , (19551, 0, "i") , (19552, 0, "n") , (19553, 0, "d") , (19551, 3, "") , (19551, 0, "l") , (19552, 0, "o") , (19553, 0, "c") , (19554, 0, "a") , (19555, 0, "l") , (19556, 0, "_") , (19557, 0, "i") , (19558, 0, "n") , (19559, 0, "d") , (19560, 0, "e") , (19561, 0, "x") , (19562, 0, ":") , (19563, 0, " ") , (19564, 0, "0") , (19565, 0, ",") , (20653, 4, "") , (20653, 0, "(") , (20654, 0, "*") , (20655, 0, "e") , (20656, 0, ")") , (20771, 15, "o") , (20772, 0, "f") , (20773, 0, "f") , (20774, 0, "s") , (20775, 0, "e") , (20776, 0, "t") , (20779, 0, "\n ") , (20796, 0, "c") , (20797, 0, "u") , (20798, 0, "r") , (20799, 0, "s") , (20800, 0, "o") , (20801, 0, "r") , (20802, 0, ".") , (20803, 0, "l") , (20804, 0, "o") , (20805, 0, "c") , (20806, 0, "a") , (20807, 0, "l") , (20803, 5, "local_index") , (20814, 0, " ") , (20815, 0, " ") , (20815, 1, "") , (20815, 0, "=") , (20816, 0, " ") , (20817, 0, "i") , (20818, 0, ";") , (20836, 28, "b") , (20836, 1, "return (i, usersize_offset);") , (20977, 18, "") , (20940, 13, "") , (20770, 0, "=") , (20866, 100, "") , (20837, 28, "b") , (20838, 0, "r") , (20839, 0, "e") , (20840, 0, "a") , (20841, 0, "k") , (20842, 0, ";") , (20627, 0, "\n ") , (20636, 0, "l") , (20637, 0, "e") , (20638, 0, "t") , (20639, 0, " ") , (20640, 0, "m") , (20641, 0, "u") , (20642, 0, "t") , (20643, 0, " ") , (20644, 0, "f") , (20645, 0, "o") , (20646, 0, "u") , (20647, 0, "n") , (20648, 0, "d") , (20649, 0, " ") , (20650, 0, "=") , (20651, 0, " ") , (20652, 0, "f") , (20653, 0, "a") , (20654, 0, "l") , (20655, 0, "s") , (20656, 0, "e") , (20657, 0, ";") , (20851, 0, "\n ") , (20868, 0, "f") , (20869, 0, "o") , (20870, 0, "u") , (20871, 0, "n") , (20872, 0, "d") , (20873, 0, " ") , (20874, 0, "=") , (20875, 0, " ") , (20876, 0, "t") , (20877, 0, "r") , (20878, 0, "u") , (20879, 0, "e") , (20880, 0, ";") , (20994, 0, "\n ") , (21003, 0, "a") , (21004, 0, "s") , (21005, 0, "s") , (21006, 0, "e") , (21007, 0, "r") , (21008, 0, "t") , (21009, 0, "!") , (21010, 0, "(") , (21011, 0, "f") , (21012, 0, "o") , (21013, 0, "u") , (21014, 0, "n") , (21015, 0, "d") , (21016, 0, ")") , (21017, 0, ";") , (20994, 0, "\n ") , (21027, 0, "\n ") , (20995, 8, "") , (21020, 8, "") , (20942, 15, "o") , (20943, 0, "f") , (20944, 0, "f") , (20945, 0, "s") , (20946, 0, "e") , (20947, 0, "t") , (21238, 0, "(") , (21245, 0, ",") , (21246, 0, " ") , (21247, 0, "o") , (21248, 0, "f") , (21249, 0, "f") , (21250, 0, "s") , (21251, 0, "e") , (21252, 0, "t") , (21253, 0, ")") , (37472, 0, "(") , (37479, 0, ",") , (37480, 0, " ") , (37481, 0, "o") , (37482, 0, "f") , (37483, 0, "f") , (37484, 0, "s") , (37485, 0, "e") , (37486, 0, "t") , (37487, 0, ")") , (37468, 4, "") , (37469, 0, "m") , (37470, 0, "u") , (37471, 0, "t") , (37472, 0, " ") , (37522, 115, "") , (37636, 7, "") , (30233, 21, "") , (30313, 0, "\n ") , (30322, 0, ", mut item_idx: usize") , (30322, 1, "l") , (30323, 0, "e") , (30324, 0, "t") , (30338, 7, " ") , (30339, 0, "=") , (30340, 0, " ") , (30341, 0, "c") , (30342, 0, "u") , (30343, 0, "r") , (30344, 0, "s") , (30345, 0, "o") , (30346, 0, "r") , (30347, 0, ".") , (30348, 0, ".") , (30349, 0, "l") , (30349, 1, "") , (30348, 1, "") , (30348, 0, "l") , (30349, 0, "o") , (30350, 0, "c") , (30351, 0, "a") , (30352, 0, "l") , (30348, 5, "local_index") , (30359, 0, ";") , (36635, 44, "(mut cursor, offset) = self.iter_at_userpos(userpos);") , (36635, 0, " ") , (36690, 115, "") , (36806, 7, "") , (24277, 19, "") , (24276, 1, "") , (24275, 1, "") , (24383, 0, "\n ") , (24392, 0, "l") , (24393, 0, "e") , (24394, 0, " ") , (24394, 1, "") , (24394, 0, "t") , (24395, 0, " ") , (24396, 0, "mut item_idx: usize") , (24408, 7, " ") , (24409, 0, "=") , (24410, 0, " ") , (24411, 0, "c") , (24412, 0, "u") , (24413, 0, "r") , (24414, 0, "s") , (24415, 0, "o") , (24416, 0, "r") , (24417, 0, ".") , (24418, 0, "l") , (24419, 0, "o") , (24420, 0, "c") , (24421, 0, "a") , (24418, 4, "local_index") , (24429, 0, ";") , (24430, 0, "\n ") , (24431, 8, "") , (13610, 0, "\n ") , (13623, 0, "s") , (13624, 0, "e") , (13625, 0, "l") , (13626, 0, "f") , (13627, 0, ".") , (13628, 0, "l") , (13629, 0, "o") , (13630, 0, "c") , (13631, 0, "a") , (13632, 0, "l") , (13628, 5, "local_index") , (13639, 0, " ") , (13640, 0, "=") , (13641, 0, " ") , (13642, 0, "0") , (13643, 0, ";") , (24426, 0, "// ") , (24599, 8, "cursor.local_index") , (25112, 8, "cursor.local_index") , (25642, 33, "") , (25641, 1, "") , (25798, 0, "\n ") , (25807, 0, "let mut item_idx = cursor.local_index;") , (25810, 4, "") , (24417, 50, "") , (13898, 0, "\n ") , (13907, 0, "/") , (13908, 0, "/") , (13909, 0, " ") , (13910, 0, "N") , (13911, 0, "o") , (13912, 0, "t") , (13913, 0, "e") , (13899, 15, "") , (13898, 1, "") , (13857, 0, "\n ") , (13862, 0, "/") , (13863, 0, "/") , (13864, 0, "/") , (13865, 0, " ") , (13866, 0, "W") , (13867, 0, "a") , (13868, 0, "r") , (13869, 0, "n") , (13870, 0, "i") , (13871, 0, "n") , (13872, 0, "g") , (13873, 0, ":") , (13874, 0, " ") , (13875, 0, "T") , (13876, 0, "h") , (13877, 0, "i") , (13878, 0, "s") , (13879, 0, " ") , (13880, 0, "r") , (13881, 0, "e") , (13882, 0, "t") , (13883, 0, "u") , (13884, 0, "r") , (13885, 0, "n") , (13886, 0, "s") , (13887, 0, " ") , (13888, 0, "f") , (13889, 0, "a") , (13890, 0, "l") , (13891, 0, "s") , (13892, 0, "e") , (13893, 0, " ") , (13894, 0, "i") , (13895, 0, "f") , (13896, 0, " ") , (13897, 0, "o") , (13898, 0, "n") , (13899, 0, "e") , (13900, 0, " ") , (13901, 0, "c") , (13902, 0, "u") , (13903, 0, "r") , (13904, 0, "s") , (13905, 0, "o") , (13906, 0, "r") , (13907, 0, " ") , (13908, 0, "i") , (13909, 0, "s") , (13910, 0, " ") , (13911, 0, "a") , (13912, 0, "t") , (13913, 0, " ") , (13914, 0, "t") , (13915, 0, "h") , (13916, 0, "e") , (13917, 0, "e") , (13918, 0, " ") , (13918, 1, "") , (13917, 1, "") , (13917, 0, " ") , (13918, 0, "e") , (13919, 0, "n") , (13920, 0, "d") , (13921, 0, " ") , (13922, 0, "f") , (13922, 1, "") , (13922, 0, "o") , (13923, 0, "f") , (13924, 0, " ") , (13925, 0, "a") , (13926, 0, " ") , (13927, 0, "n") , (13928, 0, "o") , (13929, 0, "d") , (13930, 0, "e") , (13931, 0, ",") , (13932, 0, " ") , (13933, 0, "a") , (13934, 0, "n") , (13935, 0, "d") , (13936, 0, " ") , (13937, 0, "t") , (13938, 0, "h") , (13939, 0, "e") , (13940, 0, " ") , (13941, 0, "o") , (13942, 0, "t") , (13943, 0, "h") , (13944, 0, "e") , (13945, 0, "r") , (13946, 0, " ") , (13947, 0, "a") , (13948, 0, "t") , (13949, 0, " ") , (13950, 0, "t") , (13951, 0, "h") , (13952, 0, "e") , (13953, 0, " ") , (13954, 0, "s") , (13955, 0, "t") , (13956, 0, "a") , (13957, 0, "r") , (13958, 0, "t") , (13959, 0, " ") , (13960, 0, "o") , (13961, 0, "f") , (13962, 0, " ") , (13963, 0, "t") , (13964, 0, "h") , (13965, 0, "e") , (13966, 0, " ") , (13967, 0, "n") , (13968, 0, "e") , (13969, 0, "x") , (13970, 0, "t") , (13971, 0, " ") , (13972, 0, "n") , (13973, 0, "o") , (13974, 0, "d") , (13975, 0, "e") , (13976, 0, ".") , (13977, 0, " ") , (13978, 0, "A") , (13979, 0, "l") , (13980, 0, "m") , (13981, 0, "o") , (13982, 0, "s") , (13983, 0, "t") , (13984, 0, " ") , (13985, 0, "a") , (13986, 0, "l") , (13987, 0, "l") , (13988, 0, " ") , (13989, 0, "c") , (13990, 0, "o") , (13991, 0, "d") , (13992, 0, "e") , (13993, 0, " ") , (13994, 0, "b") , (13995, 0, "e") , (13995, 1, "") , (13995, 0, "i") , (13995, 1, "") , (13994, 1, "") , (13994, 0, "i") , (13995, 0, "n") , (13996, 0, " ") , (13997, 0, "t") , (13998, 0, "h") , (13999, 0, "i") , (14000, 0, "s") , (14001, 0, " ") , (14002, 0, "l") , (14003, 0, "i") , (14004, 0, "b") , (14005, 0, "r") , (14006, 0, "a") , (14007, 0, "r") , (14008, 0, "y") , (14009, 0, " ") , (14010, 0, "l") , (14011, 0, "e") , (14012, 0, "a") , (14013, 0, "v") , (14014, 0, "e") , (14015, 0, "s") , (14016, 0, " ") , (14017, 0, "c") , (14018, 0, "u") , (14019, 0, "r") , (14020, 0, "s") , (14021, 0, "o") , (14022, 0, "r") , (14023, 0, "s") , (14024, 0, " ") , (14025, 0, "a") , (14026, 0, "t") , (14027, 0, " ") , (14028, 0, "t") , (14029, 0, "h") , (14030, 0, "e") , (14031, 0, "e") , (14032, 0, "n") , (14032, 1, "") , (14031, 1, "") , (14031, 0, " ") , (14032, 0, "e") , (14033, 0, "n") , (14034, 0, "d") , (14035, 0, " ") , (14036, 0, "o") , (14037, 0, "f") , (14038, 0, " ") , (14039, 0, "n") , (14040, 0, "o") , (14041, 0, "d") , (14042, 0, "e") , (14043, 0, "s") , (14044, 0, ",") , (14045, 0, " ") , (14046, 0, "s") , (14047, 0, "o") , (14048, 0, " ") , (14049, 0, "t") , (14050, 0, "h") , (14051, 0, "i") , (14052, 0, "s") , (14053, 0, " ") , (14054, 0, "s") , (14055, 0, "h") , (14056, 0, "o") , (14057, 0, "u") , (14058, 0, "l") , (14059, 0, "d") , (14060, 0, "n") , (14061, 0, "'") , (14062, 0, "t") , (14063, 0, " ") , (14064, 0, "m") , (14065, 0, "a") , (14066, 0, "t") , (14067, 0, "t") , (14068, 0, "e") , (14069, 0, "r") , (14070, 0, " ") , (14071, 0, "o") , (14071, 1, "") , (14071, 0, "t") , (14072, 0, "o") , (14073, 0, "o") , (14074, 0, " ") , (14075, 0, "m") , (14076, 0, "u") , (14077, 0, "c") , (14078, 0, "h") , (14079, 0, " ") , (14080, 0, "i") , (14081, 0, "n") , (14082, 0, " ") , (14083, 0, "p") , (14084, 0, "r") , (14085, 0, "a") , (14086, 0, "c") , (14087, 0, "t") , (14088, 0, "i") , (14089, 0, "c") , (14090, 0, "e") , (14091, 0, " ") , (14092, 0, "n") , (14093, 0, "b") , (14094, 0, "u") , (14094, 1, "") , (14093, 1, "") , (14092, 1, "") , (14091, 1, "") , (14091, 0, ".") , ( 13858 , 234 , " /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice." ) , (14158, 0, " if self.userpos != other.userpos { return false; }\n") , (14158, 59, "") , (14198, 0, " ") , (14199, 0, "|") , (14200, 0, "|") , (14201, 0, " ") , (14202, 0, "s") , (14203, 0, "e") , (14204, 0, "l") , (14205, 0, "f") , (14206, 0, ".") , (14207, 0, "l") , (14208, 0, "o") , (14209, 0, "c") , (14210, 0, "a") , (14211, 0, "l") , (14207, 5, "local_index") , (14218, 0, " ") , (14219, 0, "!") , (14220, 0, "=") , (14221, 0, " ") , (14222, 0, "s") , (14223, 0, "e") , (14223, 1, "") , (14222, 1, "") , (14222, 0, "o") , (14223, 0, "t") , (14224, 0, "h") , (14225, 0, "e") , (14226, 0, "r") , (14227, 0, ".") , (14228, 0, "u") , (14229, 0, "s") , (14230, 0, "e") , (14231, 0, "r") , (14231, 1, "") , (14230, 1, "") , (14229, 1, "") , (14228, 1, "") , (14228, 0, "l") , (14229, 0, "c") , (14230, 0, "a") , (14228, 3, "local_index") , (14198, 1, "") , (14198, 0, "\n ") , (14207, 0, " ") , (14253, 1, "") , (14253, 0, "\n ") , (14253, 17, "") , (14268, 0, "\n ") , (14269, 12, "") , (14199, 12, " ") , (14199, 8, " ") , (33923, 0, "(") , (33934, 0, ",") , (33935, 0, " ") , (33936, 0, "o") , (33937, 0, "f") , (33938, 0, "f") , (33939, 0, "s") , (33940, 0, "e") , (33941, 0, "t") , (33942, 0, ")") , (33991, 0, "// ") , (34508, 0, "c") , (34509, 0, "u") , (34510, 0, "r") , (34511, 0, "s") , (34512, 0, "o") , (34513, 0, "r") , (34514, 0, ".") , (34515, 0, "l") , (34516, 0, "o") , (34517, 0, "c") , (34518, 0, "a") , (34515, 4, "local_index") , (34526, 5, "") , (34739, 30, "") , (34738, 1, "") , (34756, 0, "\n ") , (34773, 0, "\n ") , (34757, 16, "") , (34774, 0, "l") , (34775, 0, "e") , (34776, 0, "t") , (34777, 0, " ") , (34778, 0, "i") , (34779, 0, "n") , (34780, 0, "d") , (34781, 0, "e") , (34782, 0, "x") , (34783, 0, " ") , (34784, 0, "=") , (34785, 0, " ") , (34786, 0, "c") , (34787, 0, "u") , (34788, 0, "r") , (34789, 0, "s") , (34790, 0, "o") , (34791, 0, "r") , (34792, 0, ".") , (34793, 0, "l") , (34793, 1, "local_index") , (34804, 0, ";") , (36404, 7, "") , (36511, 7, "") , (35851, 0, "c") , (35852, 0, "r") , (35852, 1, "") , (35852, 0, "u") , (35853, 0, "r") , (35854, 0, "s") , (35855, 0, "o") , (35856, 0, "r") , (35857, 0, ".") , (35858, 0, "l") , (35859, 0, "o") , (35860, 0, "c") , (35861, 0, "a") , (35862, 0, "l") , (35863, 0, "_") , (37271, 0, "(") , (37274, 0, ",") , (37275, 0, " ") , (37276, 0, "_") , (37277, 0, ")") , (21030, 1, "") , (21030, 0, "u") , (21031, 0, "n") , (21032, 0, "s") , (21033, 0, "a") , (21034, 0, "f") , (21035, 0, "e") , (21036, 0, " ") , (21037, 0, "{") , (21040, 1, "") , (21040, 0, "}") , (21038, 0, "&") , (21038, 0, " ") , (21042, 0, " ") , (27383, 0, "\n ") , (27396, 0, "c") , (27397, 0, "u") , (27398, 0, "r") , (27399, 0, "s") , (27400, 0, "o") , (27401, 0, "r") , (27402, 0, ".") , (27403, 0, "l") , (27404, 0, "o") , (27405, 0, "c") , (27406, 0, "a") , (27407, 0, "l") , (27403, 5, "local_index") , (27414, 0, " ") , (27415, 0, "+") , (27416, 0, "=") , (27417, 0, " ") , (27418, 0, "n") , (27419, 0, "u") , (27420, 0, "m") , (27421, 0, "_") , (27422, 0, "i") , (27423, 0, "n") , (27418, 6, "num_inserted_items") , (27436, 0, ";") , (24551, 0, "\n ") , (24564, 0, "c") , (24565, 0, "u") , (24566, 0, "r") , (24567, 0, "s") , (24568, 0, "o") , (24569, 0, "r") , (24570, 0, ".") , (24571, 0, "l") , (24572, 0, "o") , (24573, 0, "c") , (24574, 0, "a") , (24571, 4, "local_index") , (24582, 0, " ") , (24583, 0, "=") , (24584, 0, " ") , (24585, 0, " += contents.len();") , (24588, 1, "") , (24587, 1, "") , (24586, 1, "") , (24585, 1, "") , (21157, 1, "") , (21259, 0, "\n ") , (21260, 16, " }") , (21273, 0, " ") , (21274, 0, "if usersize > offset {") , (21274, 0, "e") , (21275, 0, "l") , (21276, 0, "s") , (21277, 0, "e") , (21278, 0, " ") , (21291, 1, "") , (21291, 0, "=") , (21292, 0, "=") , (21302, 0, "\n ") , ( 21319 , 0 , " cursor.local_index = i;\n found = true;\n break;" ) , (21303, 32, " ") , (21341, 0, "+") , (21342, 0, "1") , (21454, 0, "\n offset -= usersize;") , (21454, 0, "\n } else {") , (21398, 21, "") , (21433, 0, "\n break;") , (21375, 23, "") , (21410, 0, "\n found = true;") , (21345, 30, "") , (21380, 0, "\n cursor.local_index = i+1;") , (21303, 42, "") , (21326, 1, "") , (21328, 8, "0") , (21369, 0, " ") , (21371, 0, " ") , ( 21005 , 0 , " for (i, item) in unsafe { &*e }.content_slice().iter().enumerate() {\n let usersize = C::get_usersize(item);\n if usersize > offset {\n cursor.local_index = i;\n found = true;\n break;\n } else if usersize == offset {\n offset = 0;\n cursor.local_index = i + 1;\n found = true;\n break;\n } else {\n offset -= usersize;\n }\n }\n" ) , (22011, 0, "// ") , (21997, 0, "// ") , (21961, 0, "// ") , (21940, 0, "// ") , (21917, 0, "// ") , (21887, 0, "// ") , (21843, 0, "// ") , (21815, 0, "// ") , (21772, 0, "// ") , (21749, 0, "// ") , (21719, 0, "// ") , (21679, 0, "// ") , (21644, 0, "// ") , (21594, 0, "// ") , (21517, 0, "// ") , (20974, 30, "") , (20973, 1, "") , (20982, 66, "") , (20982, 0, "w") , (20983, 0, "h") , (20984, 0, "i") , (20985, 0, "l") , (20986, 0, " ") , (20986, 1, "") , (20986, 0, "e") , (20987, 0, " ") , (20982, 6, "") , (20982, 0, "l") , (20983, 0, "e") , (20984, 0, "t") , (20984, 1, "") , (20983, 1, "") , (20982, 1, "") , (20982, 0, "f") , (20983, 0, "o") , (20984, 0, "r") , (20985, 0, " ") , (20986, 0, "i") , (20987, 0, "n") , (20988, 0, "d") , (20989, 0, "e") , (20990, 0, "x") , (20991, 0, " ") , (20992, 0, "i") , (20993, 0, "n") , (20994, 0, " ") , (20995, 0, "[") , (20996, 0, "0") , (20997, 0, ".") , (20998, 0, ".") , (20995, 1, "") , (20998, 0, "=") , (20973, 0, "\n ") , (20982, 0, "l") , (20983, 0, "e") , (20984, 0, "t") , (20985, 0, " ") , (20986, 0, "e") , (20987, 0, "n") , (20988, 0, " ") , (20989, 0, "=") , (20990, 0, " ") , (20991, 0, "unsafe { &*e }") , (21005, 0, ";") , (21032, 0, "e") , (21033, 0, "n") , (21034, 0, ".") , (21035, 0, "n") , (21036, 0, "u") , (21037, 0, "m") , (21035, 3, "num_items") , (21044, 0, " ") , (21045, 0, "a") , (21046, 0, "s") , (21047, 0, " ") , (21048, 0, "u") , (21049, 0, "s") , (21050, 0, "i") , (21051, 0, "z") , (21052, 0, "e") , (21055, 0, "\n for index in 0..=en.num_items as usize {") , (21015, 0, "// ") , (21067, 38, "w") , (21068, 0, "h") , (21069, 0, "i") , (21070, 0, "l") , (21071, 0, "e") , (21072, 0, " ") , (21073, 0, "o") , (21074, 0, "f") , (21075, 0, "f") , (21076, 0, "s") , (21077, 0, "e") , (21078, 0, "t") , (21079, 0, " ") , (21080, 0, ">") , (21081, 0, " ") , (21082, 0, "0") , (21058, 0, "\n ") , (21071, 0, "l") , (21072, 0, "e") , (21073, 0, "t") , (21073, 1, "") , (21072, 1, "") , (21071, 1, "") , (21067, 4, "") , (21067, 0, "l") , (21068, 0, "e") , (21069, 0, "t") , (21070, 0, " ") , (21071, 0, "m") , (21072, 0, "u") , (21073, 0, "t") , (21074, 0, " ") , (21075, 0, "i") , (21076, 0, "n") , (21077, 0, "d") , (21078, 0, "e") , (21079, 0, "x") , (21080, 0, " ") , (21081, 0, "=") , (21082, 0, " ") , (21083, 0, "0") , (21084, 0, ";") , (21156, 4, "e") , (21157, 0, "n") , (21158, 0, ".") , (21159, 0, "i") , (21160, 0, "t") , (21161, 0, "e") , (21162, 0, "m") , (21163, 0, "s") , (21164, 0, "[") , (21165, 0, "i") , (21166, 0, "n") , (21167, 0, "d") , (21168, 0, "e") , (21169, 0, "x") , (21170, 0, "]") , (21156, 0, "&") , (21190, 17, "o") , (21191, 0, "f") , (21192, 0, "f") , (21193, 0, "s") , (21194, 0, "e") , (21195, 0, "t") , (21196, 0, " ") , (21197, 0, "<") , (21198, 0, "=") , (21199, 0, " ") , (21200, 0, "u") , (21201, 0, "s") , (21202, 0, "e") , (21203, 0, "r") , (21204, 0, "s") , (21205, 0, "i") , (21200, 6, "usersize") , (21198, 1, "") , (21197, 1, "") , (21197, 0, ">") , (21197, 1, "") , (21197, 0, "<=") , (21200, 8, "usersi") , (21199, 7, "") , (21196, 3, "") , (21190, 6, "usersize > offset") , (21174, 0, "\n ") , (21187, 0, "i") , (21188, 0, "f") , (21189, 0, " ") , (21190, 0, "u") , (21191, 0, "s") , (21192, 0, "e") , (21193, 0, "r") , (21194, 0, "s") , (21195, 0, "i") , (21190, 6, "usersize") , (21198, 0, " ") , (21199, 0, "<") , (21200, 0, "=") , (21201, 0, " ") , (21202, 0, "o") , (21203, 0, "f") , (21204, 0, "f") , (21205, 0, "s") , (21206, 0, "e") , (21207, 0, "t") , (21208, 0, " ") , (21209, 0, "{") , (21210, 0, "\n ") , (21227, 0, "o") , (21228, 0, "f") , (21229, 0, "f") , (21230, 0, "s") , (21231, 0, "e") , (21232, 0, "t") , (21233, 0, " ") , (21234, 0, "-") , (21235, 0, "=") , (21236, 0, " ") , (21237, 0, "u") , (21238, 0, "s") , (21239, 0, "e") , (21240, 0, "r") , (21241, 0, "z") , (21242, 0, "i") , (21237, 6, "usersize") , (21245, 0, ";") , (21246, 0, "\n ") , (21247, 16, " }") , (21260, 0, " ") , (21261, 0, "e") , (21262, 0, "l") , (21263, 0, "s") , (21264, 0, "e") , (21265, 0, " ") , (21266, 0, "{") , (21267, 0, "\n ") , (21284, 0, "\n ") , (21268, 16, "") , (21269, 16, " }") , (21268, 0, " ") , (21284, 0, "/") , (21285, 0, "/") , (21286, 0, " ") , (21287, 0, "T") , (21288, 0, "o") , (21289, 0, "o") , (21290, 0, " ") , (21291, 0, "b") , (21292, 0, "i") , (21293, 0, "g") , (21294, 0, "!") , (21295, 0, " ") , (21296, 0, "W") , (21297, 0, "e") , (21298, 0, "'") , (21299, 0, "r") , (21300, 0, "e") , (21284, 17, "") , (21284, 0, "b") , (21285, 0, "r") , (21286, 0, "e") , (21287, 0, "a") , (21288, 0, "k") , (21289, 0, ";") , (21305, 366, "") , (21304, 1, "") , (21112, 0, "\n ") , (21125, 0, "a") , (21126, 0, "s") , (21127, 0, "s") , (21128, 0, "e") , (21129, 0, "r") , (21125, 5, "assert_eq!") , (21134, 1, "") , (21133, 1, "") , (21132, 1, "") , (21131, 1, "") , (21131, 0, "!") , (21132, 0, "(") , (21133, 0, "i") , (21134, 0, "n") , (21135, 0, "d") , (21136, 0, "e") , (21137, 0, "x") , (21138, 0, " ") , (21139, 0, "<") , (21140, 0, " ") , (21141, 0, "e") , (21142, 0, "n") , (21143, 0, ".") , (21144, 0, "i") , (21145, 0, "t") , (21146, 0, "e") , (21147, 0, "m") , (21148, 0, "s") , (21149, 0, ".") , (21144, 6, "n") , (21145, 0, "u") , (21146, 0, "m") , (21147, 0, "_") , (21148, 0, "i") , (21149, 0, "t") , (21144, 6, "num_items") , (21153, 0, " ") , (21154, 0, "a") , (21155, 0, "s") , (21156, 0, " ") , (21157, 0, "u") , (21158, 0, "s") , (21159, 0, "i") , (21160, 0, "z") , (21161, 0, "e") , (21162, 0, ")") , (21163, 0, ";") , (21164, 0, "\n ") , (21165, 12, "") , (21153, 9, "") , (21156, 0, " ") , (21153, 0, " as usize") , (21007, 51, "") , (21877, 1, "") , (21886, 0, "// ") , (21213, 2, ">") , (21223, 0, " ") , (21224, 0, "b") , (21225, 0, "r") , (21226, 0, "e") , (21227, 0, "a") , (21228, 0, "k") , (21229, 0, ";") , (21230, 0, " ") , (21231, 0, "}") , (21233, 16, " ") , (21265, 58, "") , (21264, 0, "\n ") , (21277, 0, "i") , (21278, 0, "n") , (21279, 0, "d") , (21280, 0, "e") , (21281, 0, "x") , (21282, 0, " ") , (21283, 0, "+") , (21284, 0, "=") , (21285, 0, " ") , (21286, 0, "1") , (21287, 0, ";") , (21232, 0, " ") , (21232, 1, "") , (21232, 0, " ") , (21232, 1, "") , (21232, 0, " ") , (21233, 0, "/") , (21234, 0, "/") , (21235, 0, " ") , (21236, 0, "F") , (21236, 1, "") , (21235, 1, "") , (21234, 1, "") , (21233, 1, "") , (21232, 1, "") , (21232, 0, " ") , (21233, 0, "/") , (21234, 0, "/") , (21235, 0, " ") , (21236, 0, "W") , (21237, 0, "e") , (21238, 0, "'") , (21239, 0, "r") , (21240, 0, "e") , (21241, 0, " ") , (21242, 0, "p") , (21243, 0, "a") , (21244, 0, "r") , (21245, 0, "t") , (21246, 0, "w") , (21247, 0, "a") , (21248, 0, "y") , (21249, 0, " ") , (21250, 0, "t") , (21251, 0, "h") , (21252, 0, "r") , (21253, 0, "o") , (21254, 0, "u") , (21242, 13, "i") , (21243, 0, "n") , (21244, 0, " ") , (21245, 0, "t") , (21246, 0, "h") , (21247, 0, "e") , (21248, 0, " ") , (21249, 0, "m") , (21250, 0, "i") , (21251, 0, "d") , (21252, 0, "d") , (21253, 0, "l") , (21254, 0, "e") , (21255, 0, " ") , (21256, 0, "o") , (21257, 0, "f") , (21258, 0, " ") , (21259, 0, "a") , (21260, 0, "n") , (21261, 0, " ") , (21262, 0, "i") , (21263, 0, "t") , (21264, 0, "e") , (21265, 0, "m") , (21266, 0, ".") , (21333, 0, "\n ") , (21342, 0, "c") , (21343, 0, "u") , (21344, 0, "r") , (21345, 0, "s") , (21346, 0, "o") , (21347, 0, "r") , (21348, 0, ".") , (21349, 0, "i") , (21350, 0, "n") , (21351, 0, "d") , (21352, 0, "e") , (21353, 0, "x") , (21354, 0, " ") , (21354, 1, "") , (21349, 5, "l") , (21350, 0, "o") , (21351, 0, "c") , (21352, 0, "a") , (21353, 0, "l") , (21349, 5, "local_index") , (21360, 0, " ") , (21361, 0, "=") , (21362, 0, " ") , (21363, 0, "i") , (21364, 0, "n") , (21365, 0, "d") , (21366, 0, "e") , (21367, 0, "x") , (21368, 0, ";") , (21370, 575, "") , (21369, 1, "") , (21371, 69, "") , (21370, 1, "") , (21369, 1, "") , (21371, 147, "") , ( 20753 , 0 , " // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n" ) , (20753, 8, "\n ") , (20975, 99, "") , (20975, 47, "") , (20974, 1, "") , (21007, 1, "") , (21034, 0, "\n ") , (21035, 8, "") , (13678, 0, "\n ") , (13683, 0, "\n ") , (13679, 4, "") , (13684, 0, "f") , (13685, 0, "n") , (13686, 0, " ") , (13687, 0, "a") , (13688, 0, "d") , (13689, 0, "v") , (13690, 0, "a") , (13691, 0, "n") , (13692, 0, "c") , (13693, 0, "e") , (13694, 0, "_") , (13695, 0, "i") , (13696, 0, "t") , (13697, 0, "e") , (13698, 0, "m") , (13699, 0, "(") , (13700, 0, "*") , (13700, 1, "") , (13700, 0, "&") , (13701, 0, "m") , (13702, 0, "u") , (13703, 0, "t") , (13704, 0, " ") , (13705, 0, "s") , (13706, 0, "e") , (13707, 0, "l") , (13708, 0, "f") , (13709, 0, ")") , (13710, 0, " ") , (13711, 0, "{") , (13712, 0, "\n ") , (13721, 0, "\n ") , (13713, 8, "") , (13714, 8, " }") , (13713, 0, " ") , (13721, 0, "if cursor.local_index == (*e).num_items as usize {") , (13721, 0, "// ") , (13678, 0, "\n ") , (13683, 0, "\n ") , (13679, 4, "") , (13684, 0, "f") , (13685, 0, "n") , (13686, 0, " ") , (13687, 0, "i") , (13688, 0, "s") , (13689, 0, "_") , (13690, 0, "a") , (13691, 0, "t") , (13692, 0, "_") , (13693, 0, "n") , (13694, 0, "o") , (13695, 0, "d") , (13696, 0, "e") , (13697, 0, "_") , (13698, 0, "e") , (13699, 0, "n") , (13700, 0, "d") , (13701, 0, "(") , (13702, 0, "&") , (13703, 0, "s") , (13704, 0, "e") , (13705, 0, "l") , (13706, 0, "f") , (13707, 0, ")") , (13708, 0, " ") , (13709, 0, "-") , (13710, 0, ">") , (13711, 0, " ") , (13712, 0, "b") , (13713, 0, "o") , (13714, 0, "o") , (13715, 0, "l") , (13716, 0, " ") , (13717, 0, "{") , (13718, 0, "\n ") , (13727, 0, "\n ") , (13719, 8, "") , (13720, 8, " }") , (13719, 0, "if cursor.local_index == (*e).num_items as usize {") , (13719, 0, " ") , (13727, 2, "") , (13727, 1, "") , (13727, 6, "s") , (13728, 0, "e") , (13729, 0, "l") , (13730, 0, "f") , (13749, 1, "") , (13749, 0, "self.entries[0].node") , (13790, 1, "") , (13789, 1, "") , (13747, 0, "n") , (13747, 1, "") , (13747, 0, "u") , (13748, 0, "n") , (13749, 0, "s") , (13750, 0, "a") , (13751, 0, "f") , (13752, 0, "e") , (13753, 0, " ") , (13754, 0, "{") , (13755, 0, " ") , (13756, 1, "") , (13756, 0, "(") , (13789, 0, " ") , (13790, 0, "}") , (13840, 0, "\n ") , (13849, 0, "i") , (13850, 0, "f") , (13851, 0, " ") , (13852, 0, "s") , (13853, 0, "e") , (13854, 0, "l") , (13855, 0, "f") , (13856, 0, ".") , (13857, 0, "i") , (13858, 0, "s") , (13859, 0, "_") , (13857, 3, "is_at_node_end()") , (13873, 0, " ") , (13874, 0, "{") , (13875, 0, " ") , (13876, 0, "a") , (13877, 0, "d") , (13878, 0, "v") , (13879, 0, "a") , (13876, 4, "advance_by") , (13885, 1, "") , (13884, 1, "") , (13883, 1, "") , (13876, 7, "advance_node") , (13888, 0, "(") , (13889, 0, ")") , (13890, 0, ";") , (13891, 0, " ") , (13892, 0, "}") , (13893, 0, "\n ") , (13894, 8, "") , (13876, 0, "s") , (13877, 0, "e") , (13878, 0, "l") , (13879, 0, "f") , (13880, 0, ".") , (13849, 2, "s") , (13849, 1, "") , (13849, 0, "w") , (13850, 0, "h") , (13851, 0, "i") , (13852, 0, "l") , (13853, 0, "e") , (13902, 0, " ") , ( 17086 , 0 , " assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n" ) , (13902, 8, "") , (17179, 26, ">") , (17180, 0, " ") , (17181, 0, "0") , (17184, 0, " ") , (17185, 0, "/") , (17186, 0, "/") , (17187, 0, " ") , (17188, 0, "e") , (17189, 0, "m") , (17190, 0, "p") , (17191, 0, "t") , (17192, 0, "y") , (17193, 0, " ") , (17194, 0, "n") , (17195, 0, "o") , (17196, 0, "d") , (17197, 0, "d") , (17198, 0, "e") , (17199, 0, "s") , (17184, 16, "") , (17182, 0, ",") , (17183, 0, " ") , (17184, 0, "\"") , (17185, 0, "E") , (17186, 0, "m") , (17187, 0, "p") , (17188, 0, "t") , (17189, 0, "y") , (17190, 0, " ") , (17191, 0, "n") , (17192, 0, "o") , (17193, 0, "t") , (17193, 1, "") , (17193, 0, "d") , (17194, 0, "e") , (17195, 0, "s") , (17196, 0, " ") , (17197, 0, "n") , (17198, 0, "o") , (17199, 0, "t") , (17200, 0, " ") , (17201, 0, "a") , (17202, 0, "l") , (17203, 0, "l") , (17204, 0, "o") , (17205, 0, "w") , (17206, 0, "e") , (17207, 0, "d") , (17208, 0, "\"") , (13849, 5, "i") , (13850, 0, "f") , (13898, 0, "\n ") , (13907, 0, "/") , (13908, 0, "/") , (13909, 0, " ") , (13910, 0, "T") , (13911, 0, "e") , (13912, 0, "h") , (13913, 0, " ") , (13914, 0, "n") , (13915, 0, "o") , (13916, 0, "d") , (13917, 0, "e") , (13910, 8, "") , (13910, 0, "T") , (13911, 0, "h") , (13912, 0, "e") , (13913, 0, " ") , (13913, 1, "") , (13907, 6, "") , (13907, 0, "s") , (13908, 0, "e") , (13909, 0, "l") , (13910, 0, "f") , (13911, 0, ".") , (13912, 0, "l") , (13913, 0, "o") , (13914, 0, "c") , (13915, 0, "a") , (13916, 0, "l") , (13912, 5, "local_index") , (13923, 0, " ") , (13924, 0, "+") , (13925, 0, "=") , (13926, 0, " ") , (13927, 0, "1") , (13928, 0, ";") , (13930, 63, "") , (13935, 0, "\n ") , (13940, 0, "\n ") , (13936, 4, "") , (13941, 0, "f") , (13942, 0, "n") , (13943, 0, " ") , (13944, 0, "a") , (13945, 0, "d") , (13946, 0, "v") , (13947, 0, "a") , (13948, 0, "n") , (13949, 0, "c") , (13950, 0, "e") , (13951, 0, "_") , (13952, 0, "b") , (13953, 0, "y") , (13954, 0, "_") , (13955, 0, "i") , (13956, 0, "t") , (13957, 0, "e") , (13958, 0, "m") , (13959, 0, "s") , (13960, 0, "(") , (13961, 0, "&") , (13962, 0, "m") , (13963, 0, "u") , (13964, 0, "s") , (13965, 0, "t") , (13966, 0, " ") , (13966, 1, "") , (13965, 1, "") , (13964, 1, "") , (13964, 0, "t") , (13965, 0, " ") , (13966, 0, "s") , (13967, 0, "e") , (13968, 0, "l") , (13969, 0, "f") , (13970, 0, ")") , (13971, 0, " ") , (13972, 0, "{") , (13973, 0, "\n ") , (13982, 0, "\n ") , (13974, 8, "") , (13975, 8, " }") , (13974, 0, " ") , (13982, 0, "f") , (13983, 0, "o") , (13984, 0, "r") , (13985, 0, " ") , (13986, 0, "0") , (13986, 1, "") , (13986, 0, "_") , (13987, 0, " ") , (13987, 1, "") , (13986, 1, "") , (13986, 0, "0") , (13987, 0, ".") , (13988, 0, ".") , (13970, 0, " ") , (13970, 1, "") , (13970, 0, ",") , (13971, 0, " ") , (13972, 0, "n") , (13973, 0, "u") , (13974, 0, "m") , (13975, 0, ":") , (13976, 0, " ") , (13977, 0, "u") , (13978, 0, "s") , (13979, 0, "i") , (13980, 0, "z") , (13981, 0, "e") , (14001, 0, "n") , (14002, 0, "u") , (14003, 0, "m") , (14004, 0, " ") , (14005, 0, "{") , (14006, 0, " ") , (14007, 0, "s") , (14008, 0, "e") , (14009, 0, "l") , (14010, 0, "f") , (14011, 0, ".") , (14012, 0, "a") , (14013, 0, "d") , (14014, 0, "v") , (14012, 3, "advance_item()") , (14026, 0, ";") , (14027, 0, " ") , (14028, 0, "}") , (13997, 0, " ") , (13998, 0, "_") , (13999, 0, " ") , (14000, 0, "i") , (14001, 0, "n") , ( 37673 , 0 , "\n let (c2, _) = self.iter_at_userpos(userpos + C::userlen_of_slice(contents));" ) , (37597, 0, "// ") , (37731, 32, "") , (37733, 0, "\n ") , (37746, 0, "c") , (37747, 0, "2") , (37748, 0, ".") , (37749, 0, "a") , (37750, 0, "d") , (37751, 0, "v") , (37749, 3, "advance_by_items(num: usize)") , (37766, 10, "c") , (37767, 0, "o") , (37768, 0, "n") , (37769, 0, "t") , (37770, 0, "e") , (37771, 0, "n") , (37772, 0, "t") , (37773, 0, "s") , (37774, 0, ".") , (37775, 0, "l") , (37776, 0, "e") , (37777, 0, "n") , (37778, 0, "(") , (37779, 1, ")") , (37780, 0, ")") , (37781, 0, ";") , (37694, 0, "m") , (37695, 0, "u") , (37696, 0, "t") , (37697, 0, " ") , (16996, 0, "\n ") , (17013, 0, "e") , (17014, 0, "t") , (17015, 0, " ") , (17015, 1, "") , (17014, 1, "") , (17013, 1, "") , (17013, 0, "l") , (17014, 0, "e") , (17015, 0, "t") , (17016, 0, " ") , (17017, 0, "i") , (17018, 0, "s") , (17019, 0, "_") , (17020, 0, "h") , (17021, 0, "e") , (17022, 0, "a") , (17023, 0, "d") , (17024, 0, " ") , (17025, 0, "=") , (17026, 0, " ") , (17052, 53, "") , (17027, 0, "(n as *const Node == &self.head as *const Node)") , (17079, 1, "") , (17027, 1, "") , (17071, 7, "_") , (17039, 7, "_") , (17066, 0, ";") , (17092, 0, "i") , (17093, 0, "s") , (17094, 0, "_") , (17095, 0, "h") , (17096, 0, "e") , (17097, 0, "a") , (17098, 0, "d") , (17238, 69, "") , (17084, 0, "i") , (17085, 0, "f") , (17086, 0, " ") , (17087, 0, "!") , (17088, 0, "i") , (17089, 0, "s") , (17090, 0, "_") , (17091, 0, "h") , (17092, 0, "e") , (17093, 0, "a") , (17094, 0, "d") , (17095, 0, " ") , (17104, 11, "") , (17121, 0, "}") , (17096, 0, "{") , (17097, 0, " ") , (17123, 0, " ") , (17125, 0, "\n ") , (17126, 16, "") , (17125, 1, "") , (13898, 0, "\n ") , (13907, 0, "l") , (13908, 0, "e") , (13909, 0, "t") , (13910, 0, " ") , (13911, 0, "s") , (13912, 0, "i") , (13913, 0, "z") , (13914, 0, "e") , (13915, 0, " ") , (13916, 0, "=") , (13917, 0, " ") , (13907, 11, "") , (13907, 0, "l") , (13908, 0, "e") , (13909, 0, "t") , (13910, 0, " ") , (13758, 20, "h") , (13759, 0, "e") , (13760, 0, "r") , (13761, 0, "e") , (13758, 4, "s") , (13759, 0, "e") , (13760, 0, "l") , (13761, 0, "f") , (13762, 0, ".") , (13763, 0, "h") , (13764, 0, "e") , (13765, 0, "r") , (13766, 0, "e") , (13763, 4, "here_ptr()") , (13832, 0, ",") , (13833, 0, " ") , (13834, 0, "h") , (13835, 0, "e") , (13836, 0, "i") , (13837, 0, "g") , (13838, 0, "h") , (13839, 0, "t") , (13840, 0, ":") , (13841, 0, " ") , (13842, 0, "s") , (13843, 0, "z") , (13843, 1, "") , (13843, 0, "i") , (13844, 0, "z") , (13845, 0, "e") , (13846, 0, "-") , (13846, 1, "") , (13842, 4, "u") , (13843, 0, "s") , (13844, 0, "i") , (13845, 0, "z") , (13846, 0, "e") , (14005, 0, ",") , (14006, 0, " ") , (14007, 0, "h") , (14008, 0, "e") , (14009, 0, "i") , (14010, 0, "g") , (14011, 0, "h") , (14012, 0, "t") , (14013, 0, ":") , (14014, 0, " ") , (14015, 0, "u") , (14016, 0, "s") , (14017, 0, "i") , (14018, 0, "z") , (14019, 0, "e") , (14068, 0, "h") , (14069, 0, "e") , (14070, 0, "i") , (14071, 0, "g") , (14072, 0, "h") , (14073, 0, "t") , (13921, 0, "u") , (13922, 0, "s") , (13923, 0, "e") , (13924, 0, "r") , (13925, 0, "s") , (13926, 0, "i") , (13927, 0, "z") , (13928, 0, "e") , (13929, 0, " ") , (13930, 0, "=") , (13931, 0, " ") , (13932, 0, "s") , (13933, 0, "e") , (13934, 0, "l") , (13935, 0, "f") , (13936, 0, ".") , (13937, 0, "h") , (13938, 0, "e") , (13939, 0, "r") , (13940, 0, "e") , (13937, 4, "here_ptr()") , (13932, 0, "u") , (13933, 0, "n") , (13934, 0, "s") , (13935, 0, "a") , (13936, 0, "f") , (13937, 0, "e") , (13938, 0, " ") , (13939, 0, "{") , (13940, 0, " ") , (13941, 0, "*") , (13941, 0, "(") , (13958, 0, ")") , (13959, 0, ".") , (13960, 0, "i") , (13961, 0, "t") , (13962, 0, "e") , (13963, 0, "m") , (13964, 0, "s") , (13965, 0, "[") , (13966, 0, "self.local_index") , (13982, 0, "]") , (13983, 0, " ") , (13984, 0, "}") , (13985, 0, ";") , (13908, 0, "\n ") , (13917, 0, "l") , (13918, 0, "e") , (13919, 0, "t") , (13920, 0, " ") , (13921, 0, "f") , (13922, 0, "i") , (13923, 0, "r") , (13924, 0, "s") , (13925, 0, "t") , (13926, 0, "_") , (13927, 0, "i") , (13928, 0, "t") , (13929, 0, "e") , (13930, 0, "m") , (13931, 0, " ") , (13932, 0, "=") , (13933, 0, " ") , (13958, 54, "") , (13934, 0, "unsafe { (*self.here_ptr()).items[self.local_index] };") , (13921, 10, "c") , (13922, 0, "u") , (13923, 0, "r") , (13924, 0, "r") , (13925, 0, "e") , (13926, 0, "n") , (13927, 0, "t") , (13928, 0, "_") , (13929, 0, "i") , (13930, 0, "t") , (13931, 0, "e") , (13932, 0, "m") , (14177, 0, "\n ") , (14182, 0, "\n ") , (14178, 4, "") , (14183, 0, "f") , (14184, 0, "n") , (14185, 0, " ") , (14186, 0, "c") , (14187, 0, "u") , (14188, 0, "r") , (14189, 0, "r") , (14190, 0, "e") , (14191, 0, "n") , (14192, 0, "t") , (14193, 0, "_") , (14194, 0, "i") , (14195, 0, "t") , (14196, 0, "e") , (14197, 0, "m") , (14183, 0, "u") , (14184, 0, "n") , (14185, 0, "s") , (14186, 0, "a") , (14187, 0, "f") , (14188, 0, "e") , (14189, 0, " ") , (14205, 0, "(") , (14206, 0, "&") , (14207, 0, "u") , (14207, 1, "") , (14207, 0, "m") , (14208, 0, "u") , (14209, 0, "t") , (14210, 0, " ") , (14211, 0, "s") , (14212, 0, "e") , (14213, 0, "l") , (14214, 0, "f") , (14215, 0, ")") , (14216, 0, " ") , (14217, 0, "{") , (14218, 0, "\n ") , (14227, 0, "\n ") , (14219, 8, "") , (14220, 8, " }") , (14219, 0, "(*self.here_ptr()).items[self.local_index]") , (14219, 0, " ") , (14227, 1, "") , (14243, 1, "") , (14227, 0, "(") , (14244, 0, ")") , (14216, 0, " ") , (14217, 0, "-") , (14218, 0, ">") , (14219, 0, " ") , (14220, 0, "&") , (14221, 0, "T") , (14221, 1, "") , (14221, 0, "C") , (14222, 0, ":") , (14223, 0, ":") , (14224, 0, "I") , (14225, 0, "t") , (14226, 0, "e") , (14227, 0, "m") , (14239, 0, "&") , (14014, 0, "u") , (14015, 0, "n") , (14016, 0, "s") , (14017, 0, "a") , (14018, 0, "f") , (14019, 0, "e") , (14020, 0, " ") , (14021, 0, "{") , (14022, 0, " ") , (14023, 0, "s") , (14024, 0, "e") , (14025, 0, "l") , (14026, 0, "f") , (14027, 0, ".") , (14028, 0, "c") , (14029, 0, "u") , (14030, 0, "r") , (14031, 0, "r") , (14028, 4, "Current") , (14028, 7, "c") , (14029, 0, "u") , (14030, 0, "r") , (14031, 0, "r") , (14032, 0, "e") , (14033, 0, "n") , (14034, 0, "t") , (14035, 0, "_") , (14036, 0, "i") , (14028, 9, "current_item") , (14040, 0, "(") , (14041, 0, ")") , (14042, 0, " ") , (14043, 0, "}") , (14013, 0, " ") , (14014, 0, "C") , (14015, 0, ":") , (14016, 0, ":") , (14017, 0, "get_usersize(_item: &Self::Item)") , (14030, 18, "") , (14030, 1, "") , (14030, 1, "") , (14060, 0, ")") , (14061, 0, ";") , (13909, 81, "") , (13908, 1, "") , (13980, 0, "\n ") , (13989, 0, "\n ") , (13981, 8, "") , (13990, 0, "f") , (13991, 0, "o") , (13992, 0, "r") , (13993, 0, " ") , (13994, 0, "_") , (13995, 0, " ") , (13996, 0, "i") , (13997, 0, " ") , (13997, 1, "") , (13997, 0, "n") , (13998, 0, " ") , (13999, 0, "0") , (14000, 0, ".") , (14001, 0, ".") , (14002, 0, "h") , (14003, 0, "e") , (14004, 0, "i") , (14005, 0, "g") , (14006, 0, "h") , (14007, 0, "t") , (14008, 0, " ") , (14009, 0, "{") , (14010, 0, "\n ") , (14023, 0, "\n ") , (14011, 12, "") , (14012, 12, " }") , (14011, 0, " ") , (14023, 0, "e") , (14024, 0, "s") , (14025, 0, "l") , (14026, 0, "f") , (14026, 1, "") , (14025, 1, "") , (14024, 1, "") , (14023, 1, "") , (14023, 0, "s") , (14024, 0, "e") , (14025, 0, "l") , (14026, 0, "f") , (14027, 0, ".") , (14028, 0, "e") , (14029, 0, "n") , (14030, 0, "t") , (14028, 3, "entries") , (14035, 0, "[") , (14036, 0, "i") , (14037, 0, "]") , (14038, 0, ".") , (14039, 0, "s") , (14040, 0, "k") , (14041, 0, "i") , (14042, 0, "p") , (14043, 0, "_") , (14044, 0, "u") , (14045, 0, "s") , (14039, 7, "skip_usersize") , (14052, 0, " ") , (14053, 0, "+") , (14054, 0, "=") , (14055, 0, " ") , (14056, 0, "u") , (14057, 0, "s") , (14058, 0, "e") , (14059, 0, "r") , (14060, 0, "s") , (14061, 0, "i") , (14062, 0, "z") , (14063, 0, "e") , (14064, 0, ";") , (14075, 0, "\n ") , (14084, 0, "s") , (14085, 0, "e") , (14086, 0, "l") , (14087, 0, "f") , (14088, 0, ".") , (14089, 0, "g") , (14090, 0, "l") , (14091, 0, "o") , (14089, 3, "u") , (14090, 0, "s") , (14091, 0, "e") , (14092, 0, "r") , (14089, 4, "userpos") , (14096, 0, " ") , (14097, 0, "+") , (14098, 0, " ") , (14098, 1, "") , (14098, 0, "=") , (14099, 0, " ") , (14100, 0, "u") , (14101, 0, "s") , (14102, 0, "e") , (14103, 0, "r") , (14104, 0, "s") , (14105, 0, "i") , (14106, 0, "z") , (14107, 0, "e") , (14108, 0, ";") , (13994, 1, "") , (13994, 0, "e") , (13995, 0, "n") , (13996, 0, "t") , (13997, 0, "r") , (13998, 0, "y") , (14003, 0, "s") , (14004, 0, "e") , (14005, 0, "l") , (14006, 0, "f") , (14007, 0, ".") , (14008, 0, "e") , (14009, 0, "n") , (14010, 0, "t") , (14011, 0, "r") , (14012, 0, "i") , (14013, 0, "e") , (14014, 0, "s") , (14015, 0, "[") , (14025, 0, "]") , (14041, 15, "e") , (14042, 0, "n") , (14043, 0, "t") , (14044, 0, "r") , (14045, 0, "y") , (14026, 0, ".") , (14027, 0, "i") , (14028, 0, "t") , (14029, 0, "e") , (14030, 0, "r") , (14031, 0, "9") , (14031, 1, "") , (14031, 0, "(") , (14032, 0, ")") , (14026, 7, "") , (14003, 0, "&") , (14004, 0, "m") , (14005, 0, "u") , (14006, 0, "t") , (14007, 0, " ") , (14004, 3, "") , (14004, 1, "") , (38097, 0, ",") , (38098, 0, " ") , (38099, 0, "s") , (38100, 0, "e") , (38101, 0, "l") , (38102, 0, "f") , (38103, 0, ".") , (38104, 0, "h") , (38105, 0, "e") , (38106, 0, "i") , (38107, 0, "\n ") , (38108, 8, "") , (38107, 1, "") , (38106, 1, "") , (38106, 0, "i") , (38107, 0, "g") , (38108, 0, "h") , (38109, 0, "t") , (38104, 0, "e") , (38105, 0, "a") , (38105, 1, "") , (38104, 1, "") , (38104, 0, "h") , (38105, 0, "e") , (38106, 0, "a") , (38107, 0, "d") , (38108, 0, ".") , (38115, 0, " ") , (38116, 0, "a") , (38117, 0, "s") , (38118, 0, " ") , (38119, 0, "u") , (38120, 0, "s") , (38121, 0, "z") , (38119, 3, "usize") , (14212, 5, "u") , (14213, 0, "8") , (13842, 5, "u") , (13843, 0, "8") , (14023, 0, " ") , (14024, 0, "a") , (14025, 0, "s") , (14026, 0, " ") , (14027, 0, "u") , (14028, 0, "s") , (14029, 0, "i") , (14030, 0, "z") , (14031, 0, "e") , (38118, 9, "") , (14001, 0, "m") , (14002, 0, "u") , (14003, 0, "t") , (14004, 0, " ") , (38208, 76, "") , (37905, 92, "") , (38582, 63, "\n ") , ( 38591 , 0 , " #[cfg(debug_assertions)] {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(contents.len(), self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after insert\"); }\n }\n" ) , (38583, 16, " ") , (38828, 1, "") , (38679, 67, "") , (38740, 6, "d") , (38741, 0, "e") , (38742, 0, "l") , (38743, 0, "e") , (38744, 0, "t") , (38745, 0, "e") , (38635, 3, "") , (38635, 1, "") , (37480, 3, "") , (37403, 3, "") , (37332, 3, "") , (37294, 3, "") , (34406, 3, "") , (34410, 23, "a") , (34411, 0, "d") , (34412, 0, "v") , (34413, 0, "a") , (34414, 0, "n") , (34415, 0, "c") , (34416, 0, "e") , (34417, 0, "d") , (34418, 0, "_") , (34419, 0, "b") , (34420, 0, "y") , (34424, 16, "") , (37357, 0, "\n ") , (37370, 0, "c2.advance_by_items(contents.len(), self.head.height);") , (37332, 23, "c2.advance_by_items(contents.len(), self.head.height);") , (37332, 54, "expected_final_position") , (37332, 23, "s") , (37333, 0, "t") , (37334, 0, "a") , (37335, 0, "r") , (37332, 4, "start_userpos") , (37380, 14, "") , (37380, 0, "a") , (37381, 0, "d") , (37382, 0, "v") , (37383, 0, "a") , (37380, 4, "advanced_by") , (37306, 0, "m") , (37307, 0, "u") , (37308, 0, "t") , (37309, 0, " ") , (37306, 0, "(") , (37313, 0, ",") , (37314, 0, " ") , (37315, 0, "_") , (37316, 0, ")") , (34446, 0, ";") , (34447, 0, "/") , (34448, 0, "/") , (34447, 19, "") , (1150, 1, "") , (1150, 0, "1") , (1150, 1, "") , (1150, 0, "1") , (1151, 0, "0") , (1152, 0, "0") , (1150, 3, "") , (1150, 0, "1") , (1449, 1, "") , (1449, 0, "2") , (1449, 1, "") , (1449, 0, "1") , (1450, 0, "0") , (1119, 0, "\n") , (1120, 0, "#[cfg(test)]") , (1094, 0, "_") , (1094, 1, "") , (1082, 3, "") , (1116, 13, "") , (1082, 0, "#[cfg(test)]\n") , (1129, 33, "") , (1095, 0, "const NODE_NUM_ITEMS: usize = 1;\n") , (1082, 0, "#[cfg(test)]\n") , (1107, 33, "") , (1095, 0, "const NODE_NUM_ITEMS: usize = 1;\n") , (1134, 0, "!") , (1134, 1, "") , (1130, 0, "!") , (1130, 1, "") , (1133, 0, "!") , (1133, 1, "") , (1133, 0, ")") , (1134, 0, "n") , (1135, 0, "o") , (1135, 1, "") , (1134, 1, "") , (1133, 1, "") , (1133, 0, "(") , (1134, 0, "n") , (1135, 0, "o") , (1136, 0, "t") , (1143, 0, ")") , ( 1451 , 30 , "#[cfg(test)]\nconst NODE_NUM_ITEMS: usize = 1;\n#[cfg(not(test))]\nconst NODE_NUM_ITEMS: usize = 100;\n" ) , (1451, 99, "const MAX_HEIGHT: usize = 10;\n") , (1451, 0, "\n") , ( 1451 , 0 , "#[cfg(test)]\nconst NODE_NUM_ITEMS: usize = 1;\n#[cfg(not(test))]\nconst NODE_NUM_ITEMS: usize = 100;\n" ) , (1580, 0, "\n") , (1550, 1, "") , (1579, 0, "\nconst NODE_NUM_ITEMS: usize = 100;") , (1515, 35, "") , (1545, 35, "") , (1544, 0, "\nconst MAX_HEIGHT: usize = 10;") , (1544, 0, "\n#[cfg(not(test))]") , (1497, 18, "") , (1526, 0, "\nconst NODE_NUM_ITEMS: usize = 1;") , (1464, 33, "") , (1493, 33, "") , (1464, 0, "const NODE_NUM_ITEMS: usize = 1;\n") , (1464, 33, "") , (1491, 1, "") , (1490, 1, "") , (1490, 0, "2") , (1490, 1, "") , (1490, 0, "1") , (1490, 1, "") , (1490, 0, "1") , (1491, 0, "0") , (1493, 0, "\n") , (1128, 0, "\n") , (1126, 0, "0") , (1127, 0, "0") , (1127, 1, "") , (1126, 1, "") , (1125, 1, "") , (1125, 0, "2") , (1491, 2, "2") , (34678, 122, "") , (1505, 4, "d") , (1458, 4, "d") , (1139, 4, "d") , (1088, 4, "d") , (1497, 0, "e") , (1453, 0, "e") , (1137, 0, "e") , (1089, 0, "e") , (1501, 0, "b") , (1456, 0, "b") , (1139, 0, "b") , (1090, 0, "b") , (1505, 0, "u") , (1459, 0, "u") , (1141, 0, "u") , (1091, 0, "u") , (1509, 0, "g") , (1462, 0, "g") , (1143, 0, "g") , (1092, 0, "g") , (1513, 0, "_") , (1465, 0, "_") , (1145, 0, "_") , (1093, 0, "_") , (1517, 0, "a") , (1468, 0, "a") , (1147, 0, "a") , (1094, 0, "a") , (1521, 0, "s") , (1471, 0, "s") , (1149, 0, "s") , (1095, 0, "s") , (1525, 0, "s") , (1474, 0, "s") , (1151, 0, "s") , (1096, 0, "s") , (1529, 0, "e") , (1477, 0, "e") , (1153, 0, "e") , (1097, 0, "e") , (1533, 0, "r") , (1480, 0, "r") , (1155, 0, "r") , (1098, 0, "r") , (1537, 0, "t") , (1483, 0, "t") , (1157, 0, "t") , (1099, 0, "t") , (1541, 0, "i") , (1486, 0, "i") , (1159, 0, "i") , (1100, 0, "i") , (1545, 0, "o") , (1489, 0, "o") , (1161, 0, "o") , (1101, 0, "o") , (1549, 0, "n") , (1492, 0, "n") , (1163, 0, "n") , (1102, 0, "n") , (1553, 0, "s") , (1495, 0, "s") , (1165, 0, "s") , (1103, 0, "s") , (13279, 0, "d") , (13280, 0, "b") , (13281, 0, "g") , (13282, 0, "!") , (13283, 0, "(") , (13302, 0, ")") , (35841, 1, "") , (35788, 0, " \n") , (35858, 57, "") , (35805, 0, " // And bookkeeping. Bookkeeping forever.\n") , (35915, 67, "") , ( 35862 , 0 , " let new_usersize = C::userlen_of_slice(new_items);\n" ) , (35982, 102, "") , ( 35929 , 0 , " let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n" ) , (36084, 41, "") , (36031, 16, " ") , (36031, 0, " if usersize_delta != 0 {\n") , (36129, 0, "\n if usersize_delta != 0 {") , (36072, 20, " ") , (36031, 41, "") , (35787, 17, "") , (35739, 0, " \n") , (35804, 57, "") , (35756, 0, " // And bookkeeping. Bookkeeping forever.\n") , (35861, 67, "") , ( 35813 , 0 , " let new_usersize = C::userlen_of_slice(new_items);\n" ) , (35928, 102, "") , ( 35880 , 0 , " let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n" ) , (35981, 0, "\n ") , (35982, 16, "") , (35739, 16, "") , (35738, 1, "") , (35738, 58, "") , (35738, 16, "\n ") , (36011, 0, "\n ") , (36012, 16, "") , (35957, 0, " ") , (35958, 0, "E") , (35959, 0, "v") , (35960, 0, "e") , (35961, 0, "r") , (35962, 0, "y") , (35963, 0, "t") , (35964, 0, "h") , (35965, 0, "i") , (35966, 0, "n") , (35967, 0, "g") , (35968, 0, " ") , (35969, 0, "e") , (35970, 0, "l") , (35971, 0, "s") , (35972, 0, "e") , (35973, 0, " ") , (35974, 0, "i") , (35975, 0, "s") , (35976, 0, " ") , (35977, 0, "c") , (35978, 0, "o") , (35979, 0, "m") , (35980, 0, "m") , (35981, 0, "e") , (35982, 0, "n") , (35983, 0, "t") , (35984, 0, "a") , (35985, 0, "r") , (35986, 0, "y") , (35987, 0, ".") , (36187, 0, "\n ") , (36204, 0, "s") , (36205, 0, "e") , (36206, 0, "l") , (36207, 0, "f") , (36208, 0, ".") , (36209, 0, "u") , (36210, 0, "s") , (36211, 0, "e") , (36212, 0, "r") , (36209, 4, "num_usercount") , (36222, 0, " ") , (36223, 0, "+") , (36224, 0, "=") , (36225, 0, " ") , (36226, 0, "u") , (36227, 0, "s") , (36228, 0, "e") , (36229, 0, "r") , (36230, 0, "s") , (36231, 0, "i") , (36232, 0, "z") , (36233, 0, "e") , (36234, 0, "_") , (36235, 0, "d") , (36236, 0, "e") , (36237, 0, "l") , (36238, 0, "t") , (36239, 0, "a") , (36240, 0, ";") , (36222, 0, " ") , (36223, 0, "a") , (36224, 0, "s") , (36225, 0, " ") , (36226, 0, "i") , (36227, 0, "s") , (36228, 0, "u") , (36229, 0, "z") , (36230, 0, "e") , (36230, 1, "") , (36229, 1, "") , (36228, 1, "") , (36228, 0, "i") , (36229, 0, "z") , (36230, 0, "e") , (36204, 0, "(") , (36232, 0, ")") , (36232, 1, "") , (36204, 1, "") , (36228, 3, "") , (36228, 0, "uze") , (36225, 6, "") , (36222, 3, "") , (36222, 0, " ") , (36223, 0, "=") , (36224, 0, " ") , (36225, 0, "s") , (36226, 0, "e") , (36227, 0, "l") , (36228, 0, "f") , (36229, 0, ".") , (36230, 0, "u") , (36231, 0, "s") , (36232, 0, "e") , (36233, 0, "r") , (36230, 4, "num_usercount") , (36243, 0, ".") , (36244, 0, "w") , (36245, 0, "r") , (36246, 0, "a") , (36247, 0, "p") , (36244, 4, "wrapping_add") , (36256, 0, "(") , (36257, 1, "") , (36257, 1, "") , (36257, 1, "") , (36257, 1, "") , (36271, 0, " ") , (36272, 0, "a") , (36273, 0, "s") , (36274, 0, " ") , (36275, 0, "u") , (36276, 0, "s") , (36277, 0, "i") , (36278, 0, "z") , (36279, 0, "e") , (36280, 0, ")") , (36187, 0, "\n ") , (36204, 0, "/") , (36205, 0, "/") , (36206, 0, " ") , (36207, 0, "I") , (36208, 0, " ") , (36209, 0, "h") , (36210, 0, "a") , (36211, 0, "t") , (36212, 0, "e") , (36213, 0, " ") , (36214, 0, "t") , (36215, 0, "h") , (36216, 0, "i") , (36217, 0, "s") , (36218, 0, ".") , (37399, 0, "\n #[cfg(debug_assertions)] {") , (37373, 0, "// ") , (37411, 0, "i") , (37412, 0, "f") , (37413, 0, " ") , (37414, 1, "") , (37414, 1, "") , (37417, 0, "!") , (37438, 1, "") , (37437, 1, "") , (37436, 1, "") , (37436, 0, " ") , (37437, 0, "{") , (37365, 37, "") , (37364, 1, "") , (38722, 26, "if cfg!(debug_assertions) {") , (38009, 26, "if cfg!(debug_assertions) {") , (13279, 5, "") , (13297, 1, "") , (37871, 0, "// ") , (37862, 0, "\n ") , (37871, 0, "\n ") , (37863, 8, "") , (37872, 0, "i") , (37873, 0, "f") , (37874, 0, " ") , (37875, 0, "o") , (37876, 0, "f") , (37877, 0, "f") , (37878, 0, "s") , (37879, 0, "e") , (37880, 0, "t") , (37881, 0, " ") , (37882, 0, "=") , (37883, 0, "=") , (37884, 0, " ") , (37885, 0, "0") , (37886, 0, " ") , (37887, 0, "{") , (37959, 0, "\n if offset == 0 {") , (37864, 25, "") , (37934, 0, "\n") , (37863, 1, "") , (37968, 0, " ") , (38026, 0, "\n ") , (38027, 12, " }") , (38036, 0, " ") , (38037, 0, "e") , (38038, 0, "l") , (38039, 0, "s") , (38040, 0, "e") , (38041, 0, " ") , (38042, 0, "{") , (38043, 0, "\n ") , (38056, 0, "\n ") , (38044, 12, "") , (38045, 12, " }") , (38044, 0, " ") , (38056, 0, "l") , (38057, 0, "e") , (38058, 0, "t") , (38059, 0, " ") , (38060, 0, "c") , (38061, 0, "u") , (38062, 0, "r") , (38063, 0, "r") , (38064, 0, "e") , (38065, 0, "n") , (38066, 0, "t") , (38067, 0, "_") , (38068, 0, "i") , (38069, 0, "t") , (38070, 0, "e") , (38071, 0, "m") , (38072, 0, " ") , (38073, 0, "=") , (38074, 0, " ") , (38075, 0, "c") , (38076, 0, "u") , (38077, 0, "r") , (38078, 0, "s") , (38079, 0, "o") , (38080, 0, "r") , (38081, 0, ".") , (38082, 0, "g") , (38083, 0, "e") , (38084, 0, "t") , (38085, 0, "_") , (38086, 0, "c") , (38087, 0, "u") , (38088, 0, "r") , (38089, 0, "r") , (38082, 8, "") , (38081, 1, "") , (38081, 0, ".") , (38082, 0, "current_item()") , (38096, 0, ";") , (38097, 0, "\n ") , (38098, 12, "") , (37972, 9, "") , (38016, 1, "") , (38015, 1, "") , (37934, 0, "\n ") , (37943, 0, "u") , (37944, 0, "n") , (37945, 0, "s") , (37946, 0, "a") , (37947, 0, "f") , (37948, 0, "e") , (37949, 0, " ") , (37950, 0, "{") , (38105, 8, " ") , (38050, 12, " ") , (38033, 8, " ") , (37977, 12, " ") , (37952, 8, " ") , (38134, 0, "\n ") , (38135, 12, " }") , (38120, 0, " ") , (38136, 0, "C") , (38137, 0, ":") , (38138, 0, ":") , (38139, 0, "split_item(_item: Self::Item)") , (38150, 17, "c") , (38151, 0, "u") , (38152, 0, "r") , (38153, 0, "r") , (38154, 0, "e") , (38155, 0, "n") , (38156, 0, "t") , (38157, 0, "_") , (38158, 0, "i") , (38159, 0, "t") , (38160, 0, "e") , (38161, 0, "m") , (38163, 0, ";") , (2277, 0, "&") , (38137, 0, "l") , (38138, 0, "e") , (38139, 0, "t") , (38140, 0, " ") , (38141, 0, "(") , (38142, 0, "s") , (38143, 0, "t") , (38144, 0, "a") , (38145, 0, "r") , (38146, 0, "t") , (38147, 0, ",") , (38148, 0, " ") , (38149, 0, "e") , (38150, 0, "n") , (38151, 0, "d") , (38152, 0, ")") , (38153, 0, " ") , (38154, 0, "=") , (38155, 0, " ") , (38184, 0, "\n ") , (38201, 0, "s") , (38202, 0, "e") , (38203, 0, "l") , (38204, 0, "f") , (38205, 0, ".") , (38206, 0, "r") , (38207, 0, "e") , (38208, 0, "p") , (38209, 0, "l") , (38201, 9, "") , ( 34397 , 0 , "\n pub fn replace_at(&mut self, mut start_userpos: usize, mut removed_items: usize, mut inserted_content: &[C::Item]) {" ) , (34397, 0, "\n ") , (34406, 0, "\n ") , (34398, 8, "") , (34399, 8, " }") , (34404, 0, "\n ") , (34405, 4, "") , (34310, 24, "") , (34310, 0, "cursor: &mut Cursor, ") , (34334, 1, "") , (34334, 1, "") , (34298, 0, "_") , (34299, 0, "i") , (34300, 0, "e") , (34301, 0, "r") , (34301, 1, "") , (34300, 1, "") , (34300, 0, "t") , (34301, 0, "e") , (34302, 0, "r") , (34281, 0, "u") , (34282, 0, "n") , (34283, 0, "s") , (34284, 0, "a") , (34285, 0, "f") , (34286, 0, "e") , (34287, 0, " ") , ( 34609 , 0 , "\n pub fn replace_at(&mut self, mut start_userpos: usize, mut removed_items: usize, mut inserted_content: &[C::Item]) {" ) , (34537, 8, " ") , (34416, 121, "") , (34484, 0, "\n") , (34415, 1, "") , (34483, 0, "\n }") , (34415, 4, " ") , (34409, 6, "") , (34481, 0, "\n") , (34408, 1, "") , (34281, 6, "") , (34281, 1, "") , (34284, 0, " ") , (34285, 0, "u") , (34286, 0, "n") , (34287, 0, "s") , (34288, 0, "a") , (34289, 0, "f") , (34290, 0, "e") , (34281, 4, "") , (34281, 0, "p") , (34282, 0, "u") , (34283, 0, "b") , (34284, 0, " ") , (34284, 1, "") , (34281, 3, "") , (34281, 0, "pub ") , (34281, 4, "") , (34606, 2818, "") , ( 34477 , 0 , "\n // For validation. This is where the cursor should end up.\n let advanced_by = inserted_content.len();\n\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n // Replace as many items from removed_items as we can with inserted_content.\n unsafe {\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n let mut e = cursor.here_ptr();\n if cursor.local_index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n }\n\n let index = cursor.local_index;\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let old_items = &mut (*e).items[index..index + replaced_items_here];\n let new_items = &inserted_content[0..replaced_items_here];\n\n let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n\n // Replace the items themselves. Everything else is commentary.\n old_items.copy_from_slice(new_items);\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n\n inserted_content = &inserted_content[replaced_items_here..];\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n cursor.local_index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(&mut cursor, inserted_content);\n } else if removed_items > 0 {\n self.del_at_iter(&mut cursor, removed_items);\n }\n }" ) , (34596, 205, "") , (34596, 0, "\n ") , (34605, 0, "\n ") , (34597, 8, "") , (34606, 0, "\n ") , (34598, 8, "") , ( 37230 , 0 , " start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n" ) , (34599, 8, "") , (37426, 1, "") , (34478, 117, "") , (37515, 11, "i") , (37516, 0, "n") , (37517, 0, "s") , (37518, 0, "e") , (37519, 0, "r") , (37515, 5, "inserted_content") , (37531, 0, ".") , (37532, 0, "l") , (37533, 0, "e") , (37534, 0, "n") , (37535, 0, "(") , (37536, 0, ")") , (37069, 4, "") , (37017, 4, "") , (37017, 0, "mut ") , (37043, 4, "") , (37302, 0, "\n ") , (37311, 0, "s") , (37312, 0, "e") , (37313, 0, "l") , (37314, 0, "f") , (37315, 0, ".") , (37316, 0, "r") , (37317, 0, "e") , (37318, 0, "p") , (37319, 0, "l") , ( 37316 , 4 , "replace_at_iter(cursor: &mut Cursor, mut removed_items: usize, mut inserted_content: &[C::Item])" ) , (37332, 22, "&") , (37333, 0, "m") , (37334, 0, "u") , (37335, 0, "t") , (37336, 0, " ") , (37337, 0, "c") , (37338, 0, "u") , (37339, 0, "r") , (37340, 0, "s") , (37341, 0, "o") , (37342, 0, "r") , (37345, 24, "r") , (37346, 0, "e") , (37347, 0, "m") , (37348, 0, "o") , (37349, 0, "v") , (37350, 0, "e") , (37351, 0, "d") , (37352, 0, "_") , (37353, 0, "i") , (37354, 0, "t") , (37355, 0, "e") , (37356, 0, "m") , (37357, 0, "s") , (37360, 32, "i") , (37361, 0, "n") , (37362, 0, "s") , (37363, 0, "e") , (37364, 0, "r") , (37365, 0, "t") , (37366, 0, "e") , (37367, 0, "d") , (37368, 0, "_") , (37369, 0, "c") , (37370, 0, "o") , (37371, 0, "n") , (37372, 0, "t") , (37373, 0, "e") , (37374, 0, "n") , (37375, 0, "t") , (37377, 0, ";") , (37378, 0, "\n ") , (37388, 69, "") , (37379, 8, "") , (37311, 0, "u") , (37312, 0, "n") , (37313, 0, "s") , (37314, 0, "a") , (37315, 0, "f") , (37316, 0, "e") , (37317, 0, " ") , (37318, 0, "{") , (37319, 0, " ") , (37387, 0, " ") , (37388, 0, "}") , (36924, 5, "") , (36817, 5, "") , (34481, 1, "") , (34480, 1, "") , (34479, 1, "") , (34478, 1, "") , (34477, 1, "") , (34563, 16, "") , (34562, 1, "") , (36921, 12, " ") , (36864, 16, " ") , (36822, 12, " ") , (36759, 16, " ") , (36708, 16, " ") , (36681, 16, " ") , (36637, 12, " ") , (36568, 12, " ") , (36490, 12, " ") , (36475, 12, " ") , (36427, 16, " ") , (36409, 16, " ") , (36340, 20, " ") , (36284, 16, " ") , (36224, 16, " ") , (36184, 16, " ") , (36108, 16, " ") , (36053, 16, " ") , (35976, 16, " ") , (35880, 16, " ") , (35848, 16, " ") , (35830, 16, " ") , (35745, 20, " ") , (35704, 16, " ") , (35649, 16, " ") , (35569, 16, " ") , (35466, 16, " ") , (35399, 16, " ") , (35323, 16, " ") , (35238, 16, " ") , (35153, 16, " ") , (35094, 16, " ") , (35045, 16, " ") , (35026, 16, " ") , (34936, 20, " ") , (34889, 20, " ") , (34843, 20, " ") , (34776, 16, " ") , (34729, 16, " ") , (34690, 12, " ") , (34644, 12, " ") , (34563, 12, " ") , (36767, 9, "") , (36766, 1, "") , (37969, 0, "// ") , (37911, 0, "// ") , (37704, 3, "") , (37969, 3, "") , (37908, 3, "") , (38030, 0, "s") , (38031, 0, "e") , (38032, 0, "l") , (38033, 0, "f") , (38034, 0, ".") , (38035, 0, "r") , (38036, 0, "e") , ( 38035 , 2 , "replace_at_iter(cursor: &mut Cursor, mut removed_items: usize, mut inserted_content: &[C::Item])" ) , (38051, 22, "&") , (38052, 0, "m") , (38053, 0, "u") , (38054, 0, "t") , (38055, 0, " ") , (38056, 0, "c") , (38057, 0, "u") , (38058, 0, "r") , (38059, 0, "s") , (38060, 0, "o") , (38061, 0, "r") , (38064, 24, "1") , (38030, 0, "// ") , (38013, 0, "\n ") , (38030, 0, "p") , (38031, 0, "a") , (38032, 0, "n") , (38033, 0, "i") , (38030, 4, "panic!") , (38036, 0, "(") , (38037, 0, "'") , (38038, 0, "n") , (38039, 0, "o") , (38040, 0, "t") , (38041, 0, " ") , (38042, 0, "i") , (38043, 0, "m") , (38044, 0, "p") , (38045, 0, "l") , (38046, 0, "e") , (38047, 0, "m") , (38030, 18, "u") , (38031, 0, "n") , (38032, 0, "i") , (38033, 0, "m") , (38034, 0, "p") , (38035, 0, "l") , (38030, 6, "unimplemented!") , (38044, 0, "(") , (38045, 0, ")") , (38046, 0, ";") , (38030, 17, "") , (38030, 0, "s") , (38031, 0, "e") , (38032, 0, "l") , (38033, 0, "f") , (38034, 0, ":") , (38035, 0, ":") , (38035, 1, "") , (38034, 1, "") , (38034, 0, ".") , (38035, 0, "r") , (38036, 0, "e") , (38037, 0, "p") , (38038, 0, "l") , (38039, 0, "a") , ( 38035 , 5 , "replace_at_iter(cursor: &mut Cursor, mut removed_items: usize, mut inserted_content: &[C::Item])" ) , (38051, 22, "c") , (38052, 0, "u") , (38053, 0, "r") , (38054, 0, "s") , (38055, 0, "o") , (38056, 0, "r") , (38059, 24, "1") , (38062, 32, "&") , (38063, 0, "[") , (38064, 0, "s") , (38065, 0, "t") , (38066, 0, "a") , (38067, 0, "r") , (38068, 0, "t") , (38069, 0, "]") , (38071, 0, ";") , (38014, 0, " self.replace_at_iter(cursor, 1, &[start]);\n") , (38014, 59, "") , ( 37811 , 0 , " self.insert_at_iter(&mut cursor, contents);\n" ) , (37930, 21, "") , (37871, 0, " } else {\n") , (37951, 58, "") , (37892, 0, " let current_item = cursor.current_item();\n") , (38009, 64, "") , ( 37950 , 0 , " let (start, end) = C::split_item(current_item);\n" ) , (38073, 59, "") , (38014, 0, " self.replace_at_iter(cursor, 1, &[start]);\n") , (38051, 0, "&") , (38052, 0, "m") , (38053, 0, "u") , (38054, 0, "t") , (38055, 0, " ") , ( 38078 , 0 , " self.insert_at_iter(&mut cursor, contents);\n" ) , (38187, 8, "&") , (38188, 0, "[") , (38189, 0, "e") , (38190, 0, "n") , (38191, 0, "d") , (38192, 0, "]") , (38013, 0, "\n ") , (38030, 0, "/") , (38031, 0, "/") , (38032, 0, " ") , (38033, 0, "T") , (38034, 0, "h") , (38035, 0, "s") , (38036, 0, " ") , (38037, 0, "i") , (38037, 1, "") , (38036, 1, "") , (38035, 1, "") , (38035, 0, "i") , (38036, 0, "s") , (38037, 0, " ") , (38038, 0, "i") , (38039, 0, "s") , (38040, 0, " ") , (38041, 0, "p") , (38042, 0, "r") , (38043, 0, "e") , (38044, 0, "t") , (38038, 7, "f") , (38039, 0, "e") , (38040, 0, "e") , (38041, 0, "l") , (38042, 0, "s") , (38043, 0, " ") , (38044, 0, "p") , (38045, 0, "r") , (38046, 0, "e") , (38047, 0, "t") , (38048, 0, "t") , (38049, 0, "y") , (38050, 0, " ") , (38051, 0, "i") , (38052, 0, "n") , (38053, 0, "e") , (38054, 0, "f") , (38055, 0, "f") , (38056, 0, "i") , (38057, 0, "c") , (38058, 0, "i") , (38059, 0, "e") , (38060, 0, "n") , (38061, 0, "t") , (38062, 0, ".") , (38063, 0, " ") , (38064, 0, "I") , (38065, 0, "'") , (38066, 0, "m") , (38067, 0, " ") , (38067, 1, "") , (38066, 1, "") , (38065, 1, "") , (38064, 1, "") , (38063, 1, "") , (38062, 1, "") , (38062, 0, ";") , (38063, 0, " ") , (38064, 0, "b") , (38065, 0, "u") , (38066, 0, "t") , (38067, 0, " ") , (38068, 0, "I") , (38069, 0, "'") , (38069, 1, "") , (38068, 1, "") , (38067, 1, "") , (38066, 1, "") , (38066, 0, "t") , (38067, 0, " ") , (38068, 0, "i") , (38069, 0, "t") , (38070, 0, "s") , (38071, 0, " ") , (38072, 0, "p") , (38073, 0, "r") , (38074, 0, "o") , (38075, 0, "b") , (38076, 0, "a") , (38077, 0, "b") , (38078, 0, "l") , (38079, 0, "y") , (38080, 0, " ") , (38081, 0, "f") , (38082, 0, "i") , (38083, 0, "n") , (38084, 0, "e") , (38085, 0, ".") , (38269, 90, "") , (37695, 68, "") , (2288, 0, ",") , (2289, 0, " ") , (2290, 0, "p") , (2291, 0, "o") , (2292, 0, "s") , (2293, 0, ":") , (2294, 0, " ") , (2295, 0, "u") , (2296, 0, "s") , (2297, 0, "i") , (2298, 0, "z") , (2299, 0, "e") , (2290, 3, "a") , (2291, 0, "t") , (2290, 0, "_") , (37955, 0, ",") , (37956, 0, " ") , (37957, 0, "o") , (37958, 0, "f") , (37959, 0, "f") , (37960, 0, "s") , (37961, 0, "e") , (37962, 0, "t") , (38038, 0, "\n ") , (38055, 0, "/") , (38056, 0, "/") , (38057, 0, " ") , (38058, 0, "W") , (38059, 0, "e") , (38060, 0, " ") , (38061, 0, "n") , (38062, 0, "e") , (38063, 0, "e") , (38064, 0, "d") , (38065, 0, " ") , (38066, 0, "t") , (38067, 0, "o") , (38068, 0, " ") , (38055, 14, "") , (38055, 0, "c") , (38056, 0, "j") , (38057, 0, "r") , (38058, 0, "s") , (38058, 1, "") , (38057, 1, "") , (38056, 1, "") , (38056, 0, "u") , (38057, 0, "r") , (38058, 0, "s") , (38059, 0, "o") , (38060, 0, "r") , (38061, 0, ".") , (38062, 0, "u") , (38063, 0, "s") , (38064, 0, "e") , (38065, 0, "r") , (38062, 4, "userpos") , (38069, 0, " ") , (38070, 0, "-") , (38071, 0, "=") , (38072, 0, " ") , (38073, 0, "o") , (38074, 0, "f") , (38075, 0, "f") , (38076, 0, "s") , (38077, 0, "e") , (38078, 0, "t") , (38079, 0, ";") , (38080, 0, " ") , (38081, 0, "/") , (38082, 0, "/") , (38083, 0, " ") , (38084, 0, "M") , (38085, 0, "o") , (38086, 0, "v") , (38087, 0, "e") , (38088, 0, " ") , (38089, 0, "t") , (38090, 0, "h") , (38091, 0, "e") , (38092, 0, " ") , (38093, 0, "c") , (38094, 0, "u") , (38095, 0, "r") , (38096, 0, "s") , (38097, 0, "o") , (38098, 0, "r") , (38099, 0, " ") , (38100, 0, "b") , (38101, 0, "a") , (38102, 0, "c") , (38103, 0, "k") , (38104, 0, " ") , (38105, 0, "t") , (38106, 0, "o") , (38107, 0, " ") , (38108, 0, "t") , (38109, 0, "h") , (38110, 0, "e") , (38111, 0, " ") , (38112, 0, "s") , (38113, 0, "t") , (38114, 0, "a") , (38115, 0, "r") , (38116, 0, "t") , (38117, 0, " ") , (38118, 0, "o") , (38119, 0, "f") , (38120, 0, " ") , (38121, 0, "t") , (38122, 0, "h") , (38123, 0, "e") , (38124, 0, " ") , (38125, 0, "i") , (38126, 0, "t") , (38127, 0, "e") , (38128, 0, "m") , (38129, 0, " ") , (38130, 0, "w") , (38131, 0, "e") , (38132, 0, "r") , (38132, 1, "") , (38132, 0, "'") , (38133, 0, "r") , (38134, 0, "e") , (38135, 0, " ") , (38136, 0, "s") , (38137, 0, "p") , (38138, 0, "l") , (38139, 0, "i") , (38140, 0, "t") , (38141, 0, "t") , (38142, 0, "i") , (38143, 0, "n") , (38144, 0, "g") , (38145, 0, ".") , (38080, 1, "") , (38080, 0, "\n ") , (38080, 82, "") , ( 38039 , 0 , " // Move the cursor back to the start of the item we're splitting.\n" ) , (38038, 82, "") , ( 37966 , 0 , " // Move the cursor back to the start of the item we're splitting.\n" ) , (38120, 42, "") , (38048, 0, " cursor.userpos -= offset;\n") , ( 37966 , 81 , " // Move the cursor back to the start of the item we're\n // splitting." ) , (14441, 0, "\n ") , (14446, 0, "\n ") , (14442, 4, "") , (14447, 0, "f") , (14448, 0, "n") , (14449, 0, " ") , (14450, 0, "m") , (14451, 0, "o") , (14452, 0, "v") , (14453, 0, "e") , (14454, 0, "_") , (14455, 0, "t") , (14456, 0, "o") , (14457, 0, "_") , (14458, 0, "n") , (14459, 0, "o") , (14460, 0, "d") , (14461, 0, "e") , (14461, 1, "") , (14460, 1, "") , (14459, 1, "") , (14458, 1, "") , (14458, 0, "i") , (14459, 0, "t") , (14460, 0, "e") , (14461, 0, "m") , (14462, 0, "_") , (14463, 0, "s") , (14464, 0, "t") , (14465, 0, "a") , (14466, 0, "r") , (14467, 0, "t") , (14468, 0, "(") , (14469, 0, "&") , (14470, 0, "m") , (14471, 0, "u") , (14472, 0, "t") , (14473, 0, " ") , (14474, 0, "s") , (14475, 0, "e") , (14476, 0, "l") , (14477, 0, "f") , (14478, 0, ")") , (14478, 0, ",") , (14479, 0, " ") , (14480, 0, "o") , (14481, 0, "f") , (14482, 0, "f") , (14483, 0, "s") , (14484, 0, "e") , (14485, 0, "t") , (14486, 0, ":") , (14487, 0, " ") , (14488, 0, "u") , (14489, 0, "s") , (14490, 0, "i") , (14491, 0, "z") , (14492, 0, "e") , (14494, 0, " ") , (14495, 0, "{") , (14496, 0, "\n ") , (14505, 0, "\n ") , (14497, 8, "") , (14498, 8, " }") , (14497, 0, " ") , (14505, 0, "s") , (14506, 0, "e") , (14507, 0, "l") , (14508, 0, "f") , (14509, 0, ".") , (14510, 0, "u") , (14511, 0, "s") , (14512, 0, "e") , (14513, 0, "r") , (14510, 4, "userpos") , (14517, 0, " ") , (14518, 0, "-") , (14519, 0, "=") , (14520, 0, " ") , (14521, 0, "o") , (14522, 0, "f") , (14523, 0, "s") , (14523, 1, "") , (14523, 0, "f") , (14524, 0, "s") , (14525, 0, "e") , (14526, 0, "t") , (14527, 0, ";") , (14528, 0, "\n ") , ( 14537 , 0 , " for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }" ) , (14529, 16, " ") , (14528, 61, "") , (14497, 8, " ") , ( 14497 , 0 , " for entry in &mut self.entries[0..height as usize] {\n" ) , (14593, 45, "") , (14558, 0, " entry.skip_usersize += usersize;\n") , (14638, 10, "") , (14603, 12, " ") , (14603, 0, " }\n") , (14590, 1, "") , (14590, 0, "-") , (14479, 0, " ") , (14480, 0, "h") , (14481, 0, "e") , (14482, 0, "i") , (14483, 0, "g") , (14484, 0, "h") , (14485, 0, "t") , (14486, 0, ":") , (14487, 0, " ") , (14488, 0, "8") , (14488, 1, "") , (14488, 0, "u") , (14489, 0, "8") , (14490, 0, ",") , (14613, 0, " ") , (14614, 0, "a") , (14615, 0, "s") , (14616, 0, " ") , (14617, 0, "u") , (14618, 0, "9") , (14618, 1, "") , (14618, 0, "8") , (14605, 8, "o") , (14606, 0, "f") , (14607, 0, "f") , (14608, 0, "s") , (14609, 0, "e") , (14610, 0, "t") , (14611, 6, "") , (38308, 0, ".") , (38309, 0, "m") , (38310, 0, "o") , (38311, 0, "v") , (38312, 0, "e") , (38309, 4, "move_to_item_start(height: u8, offset: usize)") , (38328, 10, "s") , (38329, 0, "e") , (38330, 0, "l") , (38331, 0, "f") , (38332, 0, ".") , (38333, 0, "h") , (38334, 0, "e") , (38335, 0, "i") , (38336, 0, "g") , (38336, 1, "") , (38335, 1, "") , (38334, 1, "") , (38333, 1, "") , (38333, 0, "n") , (38334, 0, "o") , (38335, 0, "d") , (38336, 0, "e") , (38337, 0, ".") , (38333, 5, "h") , (38334, 0, "e") , (38335, 0, "a") , (38336, 0, "d") , (38337, 0, ".") , (38338, 0, "h") , (38339, 0, "e") , (38340, 0, "i") , (38338, 3, "height") , (38346, 33, "o") , (38347, 0, "f") , (38348, 0, "f") , (38349, 0, "s") , (38350, 0, "e") , (38351, 0, "t") , (38352, 0, ")") , (38353, 0, ";") , (38811, 0, "// ") , (38841, 0, "w") , (38841, 1, "") , (38744, 0, "// ") , (38814, 3, "") , (38731, 0, "\n ") , (38732, 12, "") , ( 38731 , 0 , "\n let (mut c2, _) = self.iter_at_userpos(userpos);" ) , (38683, 0, "// ") , (38793, 0, " ") , (38794, 0, " ") , (38795, 0, "+") , (38795, 1, "") , (38794, 1, "") , (38794, 0, "+") , (38795, 0, " ") , (38796, 0, "C") , (38797, 0, ":") , (38798, 0, ":") , (38799, 0, "userlen_of_slice(items: &[Self::Item])") , (38816, 20, "c") , (38817, 0, "o") , (38818, 0, "n") , (38819, 0, "t") , (38820, 0, "e") , (38821, 0, "n") , (38822, 0, "t") , (38823, 0, "s") , (38551, 0, "\n ") , (38568, 0, "/") , (38569, 0, "/") , (38570, 0, "/") , (38571, 0, " ") , (38571, 1, "") , (38571, 0, " ") , (38571, 1, "") , (38570, 1, "") , (38570, 0, " ") , (38571, 0, "T") , (38572, 0, "h") , (38573, 0, "i") , (38574, 0, "s") , (38575, 0, " ") , (38576, 0, "n") , (38577, 0, "e") , (38578, 0, "e") , (38579, 0, "d") , (38580, 0, "s") , (38581, 0, " ") , (38582, 0, "t") , (38583, 0, "o") , (38584, 0, " ") , (38585, 0, "h") , (38586, 0, "o") , (38587, 0, "l") , (38588, 0, "d") , (38589, 0, " ") , (38590, 0, "t") , (38591, 0, "h") , (38592, 0, "e") , (38593, 0, " ") , (38594, 0, "c") , (38595, 0, "u") , (38596, 0, "r") , (38597, 0, "s") , (38598, 0, "o") , (38599, 0, "r") , (38600, 0, " ") , (38601, 0, "s") , (38602, 0, "t") , (38603, 0, "e") , (38604, 0, "a") , (38605, 0, "d") , (38606, 0, "y") , (38607, 0, ".") , (38692, 347, "") , (38033, 0, "\n ") , ( 38050 , 0 , " if cfg!(debug_assertions) {\n // let (mut c2, _) = self.iter_at_userpos(userpos);\n let (mut c2, _) = self.iter_at_userpos(userpos + C::userlen_of_slice(contents));\n\n // c2.advance_by_items(contents.len(), self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after insert\"); }\n }\n" ) , (38397, 0, " ") , (38387, 8, " ") , (38314, 12, " ") , (38244, 12, " ") , (38243, 0, " ") , (38150, 12, " ") , (38086, 12, " ") , (38034, 24, " ") , (38436, 1, "") , (38251, 8, "") , (38250, 1, "") , (38251, 77, "") , (38250, 1, "") , (38175, 4, "") , (38033, 0, "\n ") , (38362, 8, "") , (38034, 16, "") , (38034, 312, "") , (37003, 0, "\n ") , (37008, 0, "\n ") , (37004, 4, "") , (37009, 0, "f") , (37010, 0, "n") , (37011, 0, " ") , (37012, 0, "d") , (37013, 0, "b") , (37014, 0, "g") , (37015, 0, "_") , (37016, 0, "c") , (37017, 0, "h") , (37018, 0, "e") , (37019, 0, "c") , (37020, 0, "k") , (37021, 0, "_") , (37022, 0, "c") , (37023, 0, "u") , (37024, 0, "r") , (37025, 0, "s") , (37026, 0, "o") , (37027, 0, "r") , (37028, 0, "_") , (37029, 0, "a") , (37030, 0, "t") , (37031, 0, "(") , (37032, 0, "&") , (37033, 0, "s") , (37034, 0, "e") , (37035, 0, "l") , (37036, 0, "f") , (37037, 0, ",") , (37038, 0, " ") , (37039, 0, "m") , (37039, 1, "") , (37039, 0, "&") , (37040, 0, "m") , (37041, 0, "u") , (37042, 0, "t") , (37043, 0, " ") , (37044, 0, "c") , (37045, 0, "u") , (37046, 0, "r") , (37047, 0, "s") , (37048, 0, "o") , (37049, 0, "r") , (37050, 0, ":") , (37051, 0, " ") , (37052, 0, "C") , (37052, 1, "") , (37051, 1, "") , (37039, 5, "") , (37046, 0, " ") , (37047, 0, "&") , (37048, 0, "c") , (37049, 0, "u") , (37050, 0, "r") , (37050, 1, "") , (37049, 1, "") , (37048, 1, "") , (37048, 0, "C") , (37049, 0, "u") , (37050, 0, "r") , (37051, 0, "s") , (37052, 0, "o") , (37053, 0, "r") , (37054, 0, "<") , (37054, 1, "") , (37054, 0, ")") , (37055, 0, " ") , (37056, 0, "{") , (37057, 0, "\n ") , (37066, 0, "\n ") , (37058, 8, "") , (37059, 8, " }") , (37054, 0, ",") , (37055, 0, " ") , (37056, 0, "u") , (37057, 0, "s") , (37058, 0, "e") , (37059, 0, "r") , (37060, 0, "p") , (37061, 0, "o") , (37054, 0, "<") , (37055, 0, "C") , (37056, 0, ">") , (37065, 0, "s") , (37066, 0, "L") , (37067, 0, " ") , (37067, 1, "") , (37066, 1, "") , (37065, 1, "") , (37065, 0, ":") , (37066, 0, " ") , (37066, 1, "") , (37065, 1, "") , (37064, 1, "") , (37064, 0, "s") , (37065, 0, ":") , (37065, 1, "") , (37064, 1, "") , (37064, 0, "o") , (37065, 0, "s") , (37066, 0, ":") , (37067, 0, " ") , (37068, 0, "u") , (37069, 0, "s") , (37070, 0, "i") , (37071, 0, "z") , (37072, 0, "e") , ( 37077 , 0 , "\n if cfg!(debug_assertions) {\n // let (mut c2, _) = self.iter_at_userpos(userpos);\n let (c2, _) = self.iter_at_userpos(userpos + C::userlen_of_slice(contents));\n if &cursor != &c2 { panic!(\"Invalid cursor after insert\"); }\n }" ) , (37372, 16, " ") , (37291, 20, " ") , (37194, 20, " ") , (37122, 20, " ") , (37078, 16, " ") , (37076, 1, "") , (37231, 32, "") , (37288, 13, "") , (37246, 0, " ") , (37246, 0, "a") , (37247, 0, "s") , (37248, 0, "s") , (37249, 0, "e") , (37250, 0, "r") , (37246, 5, "assert_eq!") , (37256, 0, "(") , (37257, 1, "") , (37257, 1, "") , (37257, 1, "") , (37257, 1, "") , (37271, 30, "") , (37271, 0, ")") , (37272, 0, ";") , (37271, 2, "") , (37271, 0, " { panic!(\"Invalid cursor\"); }") , (37257, 0, " if ") , (37256, 1, "") , (37246, 10, "asser") , (37246, 5, "") , (37246, 0, "asser") , (37246, 5, "assert_eq!") , (37256, 0, "(") , (37257, 4, "") , (37271, 30, "") , (37271, 0, ");") , (37257, 1, "") , (37267, 1, "") , (37267, 0, "&") , (37257, 0, "&") , (37264, 3, "") , (37264, 0, ",") , (37257, 1, "") , (38317, 0, " ") , (38333, 0, "d") , (38334, 0, "b") , (38333, 2, "s") , (38334, 0, "e") , (38335, 0, "l") , (38336, 0, "f") , (38337, 0, ".") , (38338, 0, "d") , (38339, 0, "b") , (38340, 0, "g") , (38338, 3, "dbg_check_cursor_at(cursor: &Cursor, userpos: usize)") , (38358, 18, "&") , (38359, 0, "c") , (38360, 0, "u") , (38361, 0, "r") , (38362, 0, "s") , (38363, 0, "o") , (38364, 0, "r") , (38367, 14, "userpos + C::userlen_of_slice(contents)") , (38407, 0, ";") , (38316, 0, "\n ") , (38960, 40, "") , (38317, 16, "") , ( 38944 , 0 , "self.dbg_check_cursor_at(&cursor, userpos + C::userlen_of_slice(contents));" ) , (39019, 0, "\n ") , (39019, 17, "") , (39019, 0, "\n ") , (39019, 17, "") , (38927, 0, "\n ") , (39036, 0, "\n ") , (38928, 16, "") , (39037, 0, "\n ") , (39021, 16, "") , (39038, 0, "/") , (39039, 0, "/") , (39040, 0, " ") , (39022, 19, "") , (39021, 1, "") , (39020, 1, "") , (38928, 0, "\n ") , (38945, 0, "/") , (38946, 0, "/") , (38947, 0, " ") , (38948, 0, "T") , (38949, 0, "h") , (38950, 0, "e") , (38951, 0, "r") , (38952, 0, "e") , (38953, 0, "'") , (38954, 0, "s") , (38955, 0, " ") , (38956, 0, "n") , (38957, 0, "o") , (38958, 0, " ") , (38959, 0, "w") , (38960, 0, "a") , (38961, 0, "y") , (38962, 0, " ") , (38963, 0, "t") , (38964, 0, "o") , (38965, 0, " ") , (38966, 0, "k") , (38967, 0, "e") , (38968, 0, "e") , (38969, 0, "p") , (38970, 0, " ") , (38971, 0, "t") , (38972, 0, "h") , (38973, 0, "e") , (38974, 0, " ") , (38975, 0, "c") , (38976, 0, "u") , (38977, 0, "r") , (38978, 0, "s") , (38979, 0, "o") , (38980, 0, "r") , (38981, 0, " ") , (38982, 0, "s") , (38983, 0, "t") , (38984, 0, "e") , (38985, 0, "a") , (38986, 0, "d") , (38987, 0, "y") , (38988, 0, " ") , (38989, 0, "f") , (38990, 0, "o") , (38991, 0, "r") , (38992, 0, " ") , (38993, 0, "t") , (38994, 0, "h") , (38995, 0, " ") , (38996, 0, "e") , (38997, 0, "f") , (38998, 0, "i") , (38998, 1, "") , (38997, 1, "") , (38996, 1, "") , (38995, 1, "") , (38995, 0, "e") , (38996, 0, " ") , (38997, 0, "f") , (38998, 0, "i") , (38999, 0, "n") , (39000, 0, "a") , (39001, 0, "l") , (39002, 0, " ") , (39003, 0, "i") , (39004, 0, "n") , (39005, 0, "s") , (39006, 0, "e") , (39007, 0, "r") , (39008, 0, "t") , (38959, 0, " ") , (38960, 0, "c") , (38961, 0, "e") , (38962, 0, "a") , (38962, 1, "") , (38961, 1, "") , (38960, 1, "") , (38959, 1, "") , (38959, 0, "c") , (38960, 0, "o") , (38961, 0, "l") , (38962, 0, "e") , (38963, 0, "a") , (38964, 0, "n") , (38965, 0, " ") , (38959, 7, "c") , (38960, 0, "l") , (38961, 0, "e") , (38962, 0, "a") , (38963, 0, "n") , (38964, 0, " ") , (39015, 0, ".") , (39016, 0, " ") , (39017, 0, "W") , (39018, 0, "e") , (39019, 0, "'") , (39020, 0, "l") , (39021, 0, "l") , (39022, 0, " ") , (39023, 0, "j") , (39024, 0, "u") , (39025, 0, "s") , (39026, 0, "t") , (39027, 0, " ") , (39028, 0, "m") , (39029, 0, "a") , (39030, 0, "k") , (39031, 0, "e") , (39032, 0, " ") , (39033, 0, "s") , (39034, 0, "u") , (39035, 0, "r") , (39036, 0, "e") , (39037, 0, " ") , (39038, 0, "t") , (39039, 0, "h") , (39040, 0, "e") , (39041, 0, " ") , (39042, 0, "c") , (39043, 0, "u") , (39044, 0, "r") , (39045, 0, "s") , (39046, 0, "o") , (39047, 0, "r") , (39048, 0, " ") , (39049, 0, "i") , (39050, 0, "s") , (39051, 0, " ") , (39052, 0, "i") , (39053, 0, "n") , (39054, 0, " ") , (39055, 0, "t") , (39056, 0, "h") , (39057, 0, "e") , (39058, 0, " ") , (39059, 0, "r") , (39060, 0, "i") , (39061, 0, "g") , (39062, 0, "h") , (39063, 0, "t") , (39064, 0, " ") , (39065, 0, "p") , (39066, 0, "o") , (39067, 0, "s") , (39068, 0, "i") , (39069, 0, "t") , (39070, 0, "i") , (39071, 0, "o") , (39072, 0, "n") , (39073, 0, " ") , (39074, 0, "b") , (39075, 0, "e") , (39076, 0, "f") , (39077, 0, "o") , (39078, 0, "r") , (39079, 0, "e") , (39080, 0, " ") , (39081, 0, "t") , (39082, 0, "h") , (39083, 0, "a") , (39084, 0, "t") , (39085, 0, " ") , (39086, 0, "c") , (39087, 0, "a") , (39088, 0, "l") , (39089, 0, "l") , (39090, 0, " ") , (39091, 0, "f") , (39092, 0, "o") , (39093, 0, "r") , (39094, 0, " ") , (39095, 0, "n") , (39096, 0, "o") , (39097, 0, "w") , (39098, 0, ".") , ( 38929 , 170 , " // There's no clean way to keep the cursor steady for the final\n // insert. We'll just make sure the cursor is in the right\n // position before that call for now." ) , (39229, 0, "\n ") , (39230, 16, "") , (37268, 0, ",") , (37269, 0, " ") , (37270, 0, "\"") , (37271, 0, "A") , (37272, 0, "S") , (37273, 0, "d") , (37274, 0, "f") , (37275, 0, "\"") , (15631, 0, "\n") , (15632, 0, "\n") , (15633, 0, "i") , (15634, 0, "m") , (15635, 0, "p") , (15636, 0, "l") , (15637, 0, "<") , (15638, 0, "C") , (15639, 0, ":") , (15640, 0, " ") , (15641, 0, "L") , (15642, 0, "i") , (15643, 0, "s") , (15641, 3, "ListConfig") , (15651, 0, ">") , (15652, 0, " ") , (15653, 0, "f") , (15654, 0, "m") , (15655, 0, "t") , (15656, 0, ":") , (15657, 0, ":") , (15658, 0, "D") , (15659, 0, "e") , (15660, 0, "b") , (15661, 0, "u") , (15662, 0, "g") , (15663, 0, " ") , (15664, 0, "f") , (15665, 0, "o") , (15666, 0, "r") , (15667, 0, " ") , (15668, 0, "C") , (15669, 0, "u") , (15670, 0, "r") , (15671, 0, "s") , (15672, 0, "o") , (15673, 0, "r") , (15674, 0, "<") , (15675, 0, "C") , (15676, 0, ">") , (15677, 0, " ") , (15678, 0, "{") , (15679, 0, "\n ") , (15680, 4, "}") , (15679, 0, "\n ") , (15680, 4, "") , (843, 0, "\n") , (844, 0, "\n") , (845, 0, "u") , (846, 0, "s") , (847, 0, "e") , (848, 0, " ") , (849, 0, "s") , (850, 0, "t") , (851, 0, "d") , (852, 0, ":") , (853, 0, ":") , (854, 0, "f") , (855, 0, "m") , (856, 0, "t") , (857, 0, ";") , (11383, 7, "") , (15688, 0, " ") , (15692, 0, "f") , (15693, 0, "n") , (15694, 0, " ") , (15695, 0, "f") , (15696, 0, "m") , (15697, 0, "t") , (15698, 0, "(") , (15699, 0, "&") , (15700, 0, "s") , (15701, 0, "e") , (15702, 0, "l") , (15703, 0, "f") , (15704, 0, ",") , (15705, 0, " ") , (15706, 0, "f: &mut fmt::Formatter<'_>") , (15732, 0, ")") , (15733, 0, " ") , (15734, 0, "-") , (15735, 0, ">") , (15736, 0, " ") , (15737, 0, "f") , (15738, 0, "m") , (15739, 0, "t") , (15740, 0, ":") , (15741, 0, ":") , (15742, 0, "R") , (15743, 0, "e") , (15744, 0, "s") , (15745, 0, "u") , (15742, 4, "Result") , (15748, 0, " ") , (15749, 0, "{") , (15750, 0, "\n ") , (15759, 0, "\n ") , (15751, 8, "") , (15752, 8, " }") , (15751, 0, " ") , (15759, 0, "f") , (15760, 0, ".") , (15761, 0, "d") , (15762, 0, "e") , (15763, 0, "b") , (15764, 0, "u") , (15761, 4, "debug_struct(name: &str)") , (15784, 0, "\"") , (15774, 0, "\"") , (15775, 10, "C") , (15776, 0, "u") , (15777, 0, "r") , (15778, 0, "s") , (15779, 0, "o") , (15780, 0, "r") , (15783, 0, "\n ") , (15792, 0, " ") , (15796, 0, ".") , (15797, 0, "f") , (15798, 0, "i") , (15799, 0, "e") , (15800, 0, "l") , (15801, 0, "d") , (15802, 0, "(") , (15803, 0, "\"") , (15804, 0, "u") , (15805, 0, "s") , (15806, 0, "e") , (15807, 0, "r") , (15808, 0, "p") , (15809, 0, "o") , (15810, 0, "s") , (15811, 0, "\"") , (15812, 0, ",") , (15813, 0, " ") , (15814, 0, "&") , (15815, 0, "s") , (15816, 0, "e") , (15817, 0, "l") , (15818, 0, "f") , (15819, 0, ".") , (15820, 0, "u") , (15821, 0, "s") , (15822, 0, "e") , (15823, 0, "r") , (15824, 0, "p") , (15825, 0, "o") , (15826, 0, "s") , (15827, 0, ")") , (15828, 0, "\n ") , (15841, 0, ".") , (15842, 0, "f") , (15843, 0, "i") , (15844, 0, "n") , (15845, 0, "i") , (15846, 0, "s") , (15847, 0, "h") , (15848, 0, "(") , (15849, 0, ")") , (15848, 0, "_") , (15849, 0, "n") , (15850, 0, "o") , (15842, 9, "finish_non_exhaustive()") , (15865, 1, "") , (15865, 1, "") , (15848, 15, "") , (15784, 0, " .field(\"userpos\", &self.userpos)\n") , (15849, 7, "i") , (15850, 0, "n") , (15851, 0, "d") , (15852, 0, "e") , (15853, 0, "x") , (15870, 0, "_") , (15863, 8, "l") , (15864, 0, "o") , (15865, 0, "c") , (15866, 0, "a") , (15867, 0, "l") , (15863, 5, "local_index") , (15849, 5, "l") , (15850, 0, "o") , (15851, 0, "c") , (15852, 0, "a") , (15853, 0, "l") , (15854, 0, "_") , (15855, 0, "i") , (15856, 0, "n") , (15857, 0, "d") , (15858, 0, "e") , (15859, 0, "x") , (15881, 0, "\n ") , (15894, 0, "/") , (15895, 0, "/") , (15896, 0, " ") , (15882, 15, "") , (15881, 1, "") , (37548, 8, "") , (37353, 0, ",") , (37354, 0, " ") , (37355, 0, "p") , (37356, 0, "l") , (37357, 0, "u") , (37358, 0, "s") , (37359, 0, "_") , (37360, 0, "i") , (37361, 0, "n") , (37362, 0, "d") , (37362, 1, "") , (37361, 1, "") , (37360, 1, "") , (37360, 0, "i") , (37361, 0, "t") , (37362, 0, "e") , (37363, 0, "m") , (37364, 0, "s") , (37365, 0, ":") , (37366, 0, " ") , (37367, 0, "u") , (37368, 0, "s") , (37369, 0, "i") , (37370, 0, "e") , (37370, 1, "") , (37370, 0, "z") , (37371, 0, "e") , (37532, 0, "\n ") , (37545, 0, "i") , (37546, 0, "f") , (37547, 0, " ") , (37548, 0, "(") , (37549, 0, "p") , (37550, 0, "l") , (37551, 0, "u") , (37552, 0, "s") , (37548, 5, "p") , (37549, 0, "l") , (37550, 0, "u") , (37548, 3, "plus_items") , (37558, 0, " ") , (37559, 0, ">") , (37560, 0, " ") , (37561, 0, "0") , (37562, 0, " ") , (37563, 0, "{") , (37564, 0, "\n ") , (37565, 16, "") , (37493, 0, "m") , (37494, 0, "u") , (37495, 0, "t") , (37496, 0, " ") , (37569, 0, " ") , (37585, 0, "c") , (37586, 0, "2") , (37587, 0, ".") , (37588, 0, "advance_by_items(num: usize, height: u8)") , (37605, 10, "p") , (37606, 0, "l") , (37607, 0, "u") , (37608, 0, "s") , (37609, 0, "_") , (37610, 0, "i") , (37611, 0, "t") , (37612, 0, "e") , (37613, 0, "m") , (37614, 0, "s") , (37617, 10, "s") , (37618, 0, "e") , (37619, 0, "l") , (37620, 0, "f") , (37621, 0, ".") , (37622, 0, "h") , (37623, 0, "e") , (37624, 0, "i") , (37625, 0, "g") , (37622, 4, "h") , (37623, 0, "e") , (37624, 0, "a") , (37625, 0, "d") , (37626, 0, ".") , (37627, 0, "h") , (37628, 0, "e") , (37629, 0, "i") , (37627, 3, "height") , (37634, 0, ";") , (37537, 31, "") , (37536, 1, "") , (37537, 16, " ") , (38741, 32, "") , (38741, 0, ",") , (38742, 0, " ") , (38743, 0, "c") , (38744, 0, "o") , (38745, 0, "n") , (38746, 0, "t") , (38747, 0, "e") , (38748, 0, "n") , (38749, 0, "t") , (38750, 0, "s") , (38751, 0, ".") , (38752, 0, "l") , (38753, 0, "e") , (38754, 0, "n") , (38755, 0, "(") , (38756, 0, ")") , (39504, 75, "self.dbg_check_cursor_at(&cursor, userpos, contents.len());") , (7411, 0, "O") , (7412, 0, "p") , (7413, 0, "t") , (7414, 0, "i") , (7415, 0, "o") , (7416, 0, "n") , (7417, 0, "<") , (7426, 0, ">") , (16409, 0, "\n ") , (16414, 0, "\n ") , (16410, 4, "") , (16415, 0, "p") , (16416, 0, "u") , (16417, 0, "b") , (16418, 0, " ") , (16419, 0, "f") , (16420, 0, "n") , (16421, 0, " ") , (16422, 0, "I") , (16422, 1, "") , (16422, 0, "i") , (16423, 0, "n") , (16424, 0, "i") , (16425, 0, "t") , (16426, 0, "_") , (16427, 0, "r") , (16428, 0, "a") , (16429, 0, "n") , (16430, 0, "d") , (16431, 0, "_") , (16432, 0, "f") , (16433, 0, "r") , (16433, 1, "") , (16432, 1, "") , (16431, 1, "") , (16430, 1, "") , (16429, 1, "") , (16428, 1, "") , (16428, 0, "n") , (16429, 0, "g") , (16430, 0, "_") , (16431, 0, "f") , (16432, 0, "r") , (16433, 0, "o") , (16434, 0, "m") , (16435, 0, "_") , (16436, 0, "s") , (16437, 0, "e") , (16438, 0, "e") , (16439, 0, "d") , (16440, 0, "(") , (16441, 0, "s") , (16442, 0, "e") , (16443, 0, "e") , (16444, 0, "d") , (16445, 0, ":") , (16446, 0, " ") , (16447, 0, "u") , (16448, 0, "6") , (16449, 0, "4") , (16450, 0, ")") , (16451, 0, " ") , (16452, 0, "-") , (16452, 1, "") , (16452, 0, "{") , (16453, 0, "\n ") , (16462, 0, "\n ") , (16454, 8, "") , (16455, 8, " }") , (16079, 28, "") , (16079, 0, "N") , (16080, 0, "o") , (16081, 0, "n") , (16082, 0, "e") , (16417, 0, "&") , (16418, 0, "m") , (16419, 0, "u") , (16420, 0, "t") , (16421, 0, " ") , (16422, 0, "s") , (16423, 0, "e") , (16424, 0, "l") , (16425, 0, "f") , (16426, 0, ",") , (16427, 0, " ") , (16441, 0, "SmallRng::seed_from_u64(123)") , (16441, 0, " ") , (16449, 0, "s") , (16450, 0, "e") , (16451, 0, "l") , (16452, 0, "f") , (16453, 0, ".") , (16454, 0, "r") , (16455, 0, "n") , (16456, 0, "g") , (16457, 0, " ") , (16458, 0, "=") , (16459, 0, " ") , (16460, 0, "S") , (16461, 0, "o") , (16462, 0, "m") , (16463, 0, "e") , (16464, 0, "(") , (16493, 0, ")") , (16492, 0, "=") , (16493, 0, "=") , (16494, 0, "=") , (16495, 0, "=") , (16495, 1, "") , (16494, 1, "") , (16493, 1, "") , (16492, 1, "") , (16491, 1, "") , (16490, 1, "") , (16489, 1, "") , (16489, 0, "s") , (16490, 0, "e") , (16491, 0, "e") , (16492, 0, "d") , (16495, 0, "\n ") , (16504, 0, "S") , (16505, 0, "m") , (16506, 0, "a") , (16507, 0, "l") , (16508, 0, "l") , (16504, 5, "SmallRng") , (16512, 0, ":") , (16513, 0, ":") , (16514, 0, "f") , (16515, 0, "r") , (16516, 0, "o") , (16517, 0, "m") , (16518, 0, "_") , (16519, 0, "e") , (16520, 0, "n") , (16521, 0, "t") , (16522, 0, "r") , (16523, 0, "o") , (16524, 0, "p") , (16525, 0, "y") , (16526, 0, "(") , (16527, 0, ")") , (16528, 0, ";") , (16495, 0, ";") , (23527, 0, "\n ") , (23536, 0, "i") , (23537, 0, "f") , (23538, 0, " ") , (23539, 0, "s") , (23540, 0, "e") , (23541, 0, "l") , (23542, 0, "f") , (23543, 0, ".") , (23544, 0, "r") , (23545, 0, "n") , (23546, 0, "g") , (23547, 0, " ") , (23547, 1, "") , (23547, 0, ".") , (23548, 0, "i") , (23549, 0, "s") , (23550, 0, "_") , (23548, 3, "is_none()") , (23557, 0, "n") , (23557, 1, "") , (23557, 0, " ") , (23558, 0, "{") , (23559, 0, "\n ") , (23572, 0, "s") , (23573, 0, "e") , (23574, 0, "l") , (23575, 0, "f") , (23576, 0, ".") , (23577, 0, "r") , (23578, 0, "n") , (23579, 0, "g") , (23580, 0, " ") , (23581, 0, "=") , (23582, 0, " ") , (23583, 0, "S") , (23584, 0, "o") , (23585, 0, "n") , (23586, 0, "e") , (23587, 0, "(") , (16497, 33, "") , (16496, 1, "") , (23551, 1, "") , (23551, 0, "m") , (23554, 0, " SmallRng::from_entropy();") , (23561, 1, "") , (23560, 1, "") , (23559, 1, "") , (23558, 1, "") , (23557, 1, "") , (23556, 1, "") , (23555, 1, "") , (23554, 1, "") , (23578, 1, "") , (23578, 0, ")") , (23579, 0, ";") , (23580, 0, "\n ") , (23581, 12, " }") , (23590, 0, "\n ") , (23648, 0, ".") , (23591, 8, "") , (23641, 0, "u") , (23642, 0, "n") , (23643, 0, "w") , (23644, 0, "r") , (23641, 4, "unwrap()") , (23648, 1, "") , (23647, 1, "") , (23646, 1, "") , (23645, 1, "") , (23644, 1, "") , (23643, 1, "") , (23642, 1, "") , (23641, 1, "") , (23640, 1, "") , (23640, 0, ".") , (23641, 0, "a") , (23642, 0, "s") , (23641, 2, "as_deref_mut()") , (23655, 0, ".") , (23656, 0, "u") , (23657, 0, "n") , (23658, 0, "w") , (23659, 0, "r") , (23660, 0, "a") , (23656, 5, "unwrap()") , (23649, 1, "") , (23648, 1, "") , (23647, 1, "") , (23646, 1, "") , (23645, 1, "") , (23644, 1, "") , (23591, 0, "\n ") , (23600, 0, "/") , (23601, 0, "/") , (23602, 0, " ") , (23603, 0, "r") , (23604, 0, "n") , (23605, 0, "g") , (23606, 0, " ") , (23607, 0, "c") , (23608, 0, "o") , (23609, 0, "d") , (23610, 0, "e") , (23611, 0, " ") , (23612, 0, "h") , (23613, 0, "e") , (23614, 0, "r") , (23615, 0, "e") , (23616, 0, " ") , (23617, 0, "i") , (23618, 0, "s") , (23619, 0, " ") , (23620, 0, "a") , (23621, 0, " ") , (23622, 0, "b") , (23623, 0, "i") , (23624, 0, "t") , (23625, 0, " ") , (23626, 0, "u") , (23627, 0, "g") , (23628, 0, "l") , (23629, 0, "y") , (23630, 0, ".") , (23631, 0, " ") , (22906, 0, "\n ") , (22911, 0, "\n ") , (22907, 4, "") , (22912, 0, "f") , (22913, 0, "n") , (22914, 0, " ") , (22915, 0, "g") , (22916, 0, "e") , (22917, 0, "t") , (22918, 0, "_") , (22919, 0, "r") , (22920, 0, "n") , (22921, 0, "g") , (22922, 0, "(") , (22923, 0, "&") , (22924, 0, "m") , (22925, 0, "u") , (22926, 0, "t") , (22927, 0, " ") , (22928, 0, "s") , (22929, 0, "e") , (22930, 0, "l") , (22931, 0, "f") , (22932, 0, ")") , (22933, 0, " ") , (22934, 0, "-") , (22935, 0, ">") , (22936, 0, " ") , (22937, 0, "&") , (22938, 0, "m") , (22939, 0, "u") , (22940, 0, "t") , (22941, 0, " ") , (22942, 0, "S") , (22943, 0, "m") , (22944, 0, "a") , (22942, 3, "SmallRng") , (22950, 0, " ") , (22951, 0, "{") , (22952, 0, "\n ") , (22961, 0, "\n ") , (22953, 8, "") , (22954, 8, " }") , ( 22953 , 0 , " if self.rng.is_none() {\n self.rng = Some(SmallRng::from_entropy());\n }\n\n // rng code here is a bit ugly. \n let new_node = Node::alloc(&mut self.rng.as_mut().unwrap());\n" ) , (23160, 1, "") , (23159, 1, "") , (23158, 1, "") , (23100, 32, "") , (23720, 139, "") , (23785, 1, "") , (23784, 1, "") , (23783, 1, "") , (23782, 1, "") , (23781, 1, "") , (23780, 1, "") , (23779, 1, "") , (23778, 1, "") , (23777, 1, "") , (23776, 1, "") , (23775, 1, "") , (23774, 1, "") , (23773, 1, "") , (23772, 1, "") , (23771, 1, "") , (23770, 1, "") , (23769, 1, "") , (23768, 1, "") , (23767, 1, "") , (23766, 1, "") , (23765, 1, "") , (23764, 1, "") , (23763, 1, "") , (23762, 1, "") , (23761, 1, "") , (23760, 1, "") , (23759, 1, "") , (23758, 1, "") , (23757, 1, "") , (23756, 1, "") , (23755, 1, "") , (23755, 0, "s") , (23756, 0, "e") , (23757, 0, "l") , (23758, 0, "f") , (23759, 0, ".") , (23760, 0, "g") , (23761, 0, "e") , (23762, 0, "t") , (23763, 0, "_") , (23764, 0, "r") , (23765, 0, "n") , (23766, 0, "g") , (23760, 7, "get_rng()") , (22952, 0, "\n ") , (22961, 0, "/") , (22962, 0, "/") , (22963, 0, " ") , (22964, 0, "I") , (22965, 0, "'") , (22966, 0, "m") , (22967, 0, " ") , (22968, 0, "s") , (22969, 0, "u") , (22970, 0, "r") , (22971, 0, "e") , (22972, 0, " ") , (22973, 0, "t") , (22974, 0, "h") , (22975, 0, "e") , (22976, 0, "r") , (22977, 0, "e") , (22978, 0, "'") , (22979, 0, "s") , (22980, 0, " ") , (22981, 0, " ") , (22981, 1, "") , (22981, 0, "a") , (22982, 0, " ") , (22983, 0, "n") , (22984, 0, "i") , (22985, 0, "c") , (22986, 0, "e") , (22987, 0, "r") , (22988, 0, " ") , (22989, 0, "w") , (22990, 0, "a") , (22991, 0, "y") , (22992, 0, " ") , (22993, 0, "t") , (22994, 0, "o") , (22995, 0, " ") , (22996, 0, "i") , (22997, 0, "m") , (22998, 0, "p") , (22999, 0, "l") , (23000, 0, "e") , (23001, 0, "m") , (23002, 0, "e") , (23003, 0, "n") , (23004, 0, "t") , (23005, 0, " ") , (23006, 0, "t") , (23007, 0, "h") , (23008, 0, "i") , (23009, 0, "s") , (23010, 0, ".") , (23109, 42, "") , (22907, 243, "") , ( 16503 , 0 , "\n fn get_rng(&mut self) -> &mut SmallRng {\n // I'm sure there's a nicer way to implement this.\n if self.rng.is_none() {\n self.rng = Some(SmallRng::from_entropy());\n }\n self.rng.as_mut().unwrap()\n }\n" ) , (1667, 0, "\n") , (1668, 0, "\n") , (1669, 0, "t") , (1670, 0, "y") , (1671, 0, "p") , (1672, 0, "e") , (1673, 0, "d") , (1674, 0, "e") , (1675, 0, "f") , (1676, 0, " ") , (1669, 8, "s") , (1670, 0, "t") , (1671, 0, "r") , (1672, 0, "u") , (1673, 0, "c") , (1674, 0, "t") , (1675, 0, " ") , (1676, 0, "I") , (1677, 0, "t") , (1678, 0, "e") , (1679, 0, "m") , (1680, 0, "M") , (1681, 0, "a") , (1682, 0, "r") , (1683, 0, "k") , (1684, 0, "e") , (1685, 0, "r") , (1686, 0, " ") , (1687, 0, "{") , (1688, 0, "\n ") , (1693, 0, "\n ") , (1689, 4, "") , (1690, 4, "}") , (1689, 0, " ") , (1693, 0, "p") , (1694, 0, "t") , (1695, 0, "r") , (1696, 0, ":") , (1697, 0, " ") , (1669, 0, "p") , (1670, 0, "u") , (1671, 0, "b") , (1672, 0, " ") , (1702, 0, "*") , (1703, 0, "m") , (1704, 0, "u") , (1705, 0, "t") , (1706, 0, " ") , (1707, 0, "N") , (1708, 0, "o") , (1709, 0, "d") , (1710, 0, "e") , (1690, 0, "<") , (1691, 0, "C") , (1692, 0, ":") , (1693, 0, " ") , (1694, 0, "L") , (1695, 0, "i") , (1696, 0, "s") , (1697, 0, "t") , (1698, 0, "C") , (1699, 0, "o") , (1700, 0, "n") , (1694, 7, "ListConfig") , (1704, 0, ">") , (1726, 0, "<") , (1727, 0, "C") , (1728, 0, ">") , (1729, 0, ",") , (1730, 0, "\n ") , (1735, 0, "_") , (1736, 0, "p") , (1737, 0, "h") , (1738, 0, "a") , (1739, 0, "n") , (1740, 0, "t") , (1741, 0, "o") , (1742, 0, "n") , (1743, 0, ":") , (1744, 0, " ") , (1745, 0, "P") , (1746, 0, "h") , (1747, 0, "a") , (1748, 0, "n") , (1749, 0, "t") , (1750, 0, "o") , (1751, 0, "m") , (1752, 0, "D") , (1753, 0, "a") , (1754, 0, "t") , (1755, 0, "a") , (1691, 0, "'") , (1692, 0, "a") , (1693, 0, ",") , (1694, 0, " ") , (1760, 0, "<") , (1761, 0, "'") , (1762, 0, "a") , (1763, 0, ">") , (843, 0, "\n") , (844, 0, "u") , (845, 0, "s") , (846, 0, "e") , (847, 0, " ") , (848, 0, "s") , (849, 0, "t") , (850, 0, "d") , (851, 0, ":") , (852, 0, ":") , (853, 0, "m") , (854, 0, "a") , (855, 0, "r") , (856, 0, "k") , (857, 0, "e") , (858, 0, "r") , (859, 0, ":") , (860, 0, ":") , (861, 0, "P") , (862, 0, "h") , (863, 0, "a") , (864, 0, "n") , (861, 4, "PhantomData") , (872, 0, ";") , (1791, 0, "&") , (1794, 0, " ") , (1795, 0, "S") , (1796, 0, "k") , (1797, 0, "i") , (1798, 0, "p") , (1795, 4, "SkipList") , (1803, 0, "<") , (1804, 0, "C") , (1805, 0, ">") , (2598, 0, "\n ") , (2603, 0, "\n ") , (2599, 4, "") , (2600, 4, "") , (2599, 0, "\n ") , (2600, 4, "") , (2599, 1, "") , (2598, 1, "") , (2598, 0, "\n ") , (2603, 0, "f") , (2604, 0, "n") , (2605, 0, " ") , (2606, 0, "n") , (2607, 0, "o") , (2608, 0, "t") , (2609, 0, "i") , (2610, 0, "f") , (2611, 0, "y") , (2612, 0, "(") , (2613, 0, "&") , (2614, 0, "m") , (2615, 0, "u") , (2616, 0, "t") , (2617, 0, " ") , (2618, 0, "S") , (2618, 1, "") , (2618, 0, "s") , (2619, 0, "e") , (2620, 0, "l") , (2621, 0, "f") , (2622, 0, ",") , (2623, 0, " ") , (2624, 0, "i") , (2625, 0, "t") , (2626, 0, "e") , (2627, 0, "m") , (2628, 0, ":") , (2629, 0, " ") , (2630, 0, "&") , (2631, 0, "S") , (2632, 0, "e") , (2633, 0, "l") , (2634, 0, "f") , (2635, 0, ":") , (2636, 0, ":") , (2637, 0, "I") , (2638, 0, "t") , (2639, 0, "e") , (2640, 0, "m") , (2641, 0, ",") , (2642, 0, " ") , (2643, 0, "m") , (2644, 0, "a") , (2645, 0, "r") , (2646, 0, "k") , (2647, 0, "e") , (2648, 0, "r") , (2649, 0, ":") , (2650, 0, " ") , (2643, 0, "a") , (2644, 0, "t") , (2645, 0, "_") , (2654, 0, "I") , (2655, 0, "t") , (2656, 0, "e") , (2657, 0, "m") , (2658, 0, "M") , (2654, 5, "ItemMarker") , (2664, 0, ")") , (2665, 0, "{") , (2665, 1, "") , (2665, 0, " ") , (2666, 0, "{") , (2667, 0, "\n ") , (2668, 8, " }") , (2664, 0, "<") , (2665, 0, "C") , (2666, 0, ">") , (2665, 1, "") , (2665, 0, "S") , (2666, 0, "e") , (2667, 0, "l") , (2668, 0, "f") , (1937, 0, " ") , (1938, 0, "+") , (1939, 0, " ") , (1940, 0, "S") , (1941, 0, "i") , (1942, 0, "z") , (1943, 0, "e") , (1944, 0, "d") , (1769, 0, "// ") , (1724, 1, "") , (1723, 1, "") , (1722, 1, "") , (1721, 1, "") , (1721, 0, "'a, ") , (1769, 3, "") , (1738, 0, " ") , (1739, 0, "+") , (1740, 0, " ") , (1741, 0, "S") , (1742, 0, "i") , (1743, 0, "z") , (1744, 0, "e") , (1745, 0, "d") , (2687, 0, " ") , (2688, 0, "w") , (2689, 0, "h") , (2690, 0, "e") , (2691, 0, "r") , (2692, 0, "e") , (2693, 0, " ") , (2694, 0, "S") , (2695, 0, "e") , (2696, 0, "l") , (2697, 0, "f") , (2698, 0, ":") , (2699, 0, " ") , (2700, 0, "S") , (2701, 0, "i") , (2702, 0, "z") , (2703, 0, "e") , (2704, 0, "d") , (2640, 0, "_") , (2660, 0, "_") , (1738, 8, "") , (1937, 8, "") , (5518, 0, "\n ") , (5523, 0, "\n ") , (5519, 4, "") , (5524, 0, "/") , (5525, 0, "/") , (5526, 0, " ") , (5527, 0, "T") , (5528, 0, "h") , (5529, 0, "e") , (5530, 0, "r") , (5531, 0, "e") , (5532, 0, "'") , (5533, 0, "s") , (5534, 0, " ") , (5535, 0, "a") , (5536, 0, " ") , (5537, 0, "l") , (5538, 0, "o") , (5539, 0, "t") , (5540, 0, " ") , (5541, 0, "o") , (5542, 0, "f") , (5543, 0, " ") , (5544, 0, "w") , (5545, 0, "a") , (5546, 0, "y") , (5547, 0, " ") , (5547, 1, "") , (5547, 0, "s") , (5548, 0, " ") , (5549, 0, "I") , (5550, 0, " ") , (5551, 0, "c") , (5552, 0, "o") , (5553, 0, "u") , (5554, 0, "l") , (5555, 0, "d") , (5556, 0, " ") , (5557, 0, "s") , (5558, 0, "o") , (5559, 0, "l") , (5560, 0, "v") , (5561, 0, "e") , (5562, 0, " ") , (5527, 36, "W") , (5528, 0, "i") , (5529, 0, "t") , (5530, 0, "h") , (5531, 0, " ") , (5532, 0, "t") , (5533, 0, "h") , (5534, 0, "e") , (5535, 0, " ") , (5532, 4, "e") , (5533, 0, "v") , (5534, 0, "e") , (5535, 0, "r") , (5536, 0, "y") , (5537, 0, "t") , (5538, 0, "h") , (5539, 0, "i") , (5540, 0, "n") , (5541, 0, "g") , (5542, 0, " ") , (5543, 0, "e") , (5544, 0, "l") , (5545, 0, "s") , (5546, 0, "e") , (5547, 0, ",") , (5548, 0, " ") , (5549, 0, "w") , (5550, 0, "e") , (5551, 0, " ") , (5552, 0, "h") , (5553, 0, "a") , (5554, 0, "v") , (5555, 0, "e") , (5556, 0, " ") , (5557, 0, "n") , (5558, 0, "o") , (5559, 0, " ") , (5560, 0, "w") , (5561, 0, "a") , (5562, 0, "y") , (5563, 0, " ") , (5564, 0, "t") , (5565, 0, "o") , (5566, 0, " ") , (5567, 0, "g") , (5568, 0, "o") , (5569, 0, " ") , (5570, 0, "f") , (5571, 0, "r") , (5572, 0, "o") , (5573, 0, "m") , (5574, 0, " ") , (5575, 0, "a") , (5576, 0, " ") , (5577, 0, "m") , (5578, 0, "a") , (5579, 0, "r") , (5580, 0, "k") , (5581, 0, "e") , (5582, 0, "r") , (5583, 0, " ") , (5584, 0, "(") , (5585, 0, "n") , (5586, 0, "o") , (5587, 0, "d") , (5588, 0, "e") , (5589, 0, " ") , (5590, 0, "+") , (5591, 0, " ") , (1937, 0, " ") , (1938, 0, "+") , (1939, 0, " ") , (1940, 0, "P") , (1941, 0, "a") , (1942, 0, "r") , (1943, 0, "t") , (1944, 0, "i") , (1945, 0, "a") , (1946, 0, "l") , (1940, 7, "PartialEq") , (5539, 23, "W") , (5539, 0, "A") , (5540, 0, "l") , (5541, 0, "o") , (5542, 0, "n") , (5543, 0, "e") , (5544, 0, ",") , (5545, 0, " ") , (5539, 7, "") , (5539, 43, "W") , (5540, 0, "i") , (5541, 0, "t") , (5542, 0, "h") , (5543, 0, "t") , (5544, 0, " ") , (5545, 0, "h") , (5546, 0, "e") , (5546, 1, "") , (5545, 1, "") , (5544, 1, "") , (5543, 1, "") , (5543, 0, " ") , (5544, 0, "t") , (5545, 0, "h") , (5546, 0, "e") , (5547, 0, " ") , (5548, 0, "h") , (5549, 0, "e") , (5550, 0, "a") , (5551, 0, "d") , (5552, 0, "s") , (5553, 0, " ") , (5554, 0, "a") , (5555, 0, "r") , (5556, 0, "r") , (5557, 0, "a") , (5558, 0, "y") , (5559, 0, "s") , (5560, 0, " ") , (5560, 1, "") , (5559, 1, "") , (5559, 0, " ") , (5560, 0, "a") , (5561, 0, "s") , (5562, 0, " ") , (5563, 0, "i") , (5564, 0, "s") , (5565, 0, ",") , (5566, 0, " ") , (5567, 0, "w") , (5568, 0, "e") , (5569, 0, " ") , (5570, 0, "h") , (5571, 0, "a") , (5572, 0, "v") , (5573, 0, "e") , (5574, 0, " ") , (5575, 0, "n") , (5576, 0, "o") , (5577, 0, " ") , (5578, 0, "i") , (5578, 1, "") , (5578, 0, "w") , (5579, 0, "a") , (5580, 0, "y") , (5581, 0, " ") , (5582, 0, "t") , (5583, 0, "o") , (5584, 0, " ") , (5585, 0, "f") , (5586, 0, "r") , (5587, 0, "o") , (5588, 0, "m") , (5589, 0, " ") , (5589, 1, "") , (5588, 1, "") , (5587, 1, "") , (5586, 1, "") , (5585, 1, "") , (5585, 0, "g") , (5586, 0, "o") , (5587, 0, " ") , (5588, 0, "f") , (5589, 0, "r") , (5590, 0, "o") , (5591, 0, "m") , (5592, 0, " ") , (5593, 0, "a") , (5594, 0, " ") , (5595, 0, "m") , (5596, 0, "a") , (5597, 0, "r") , (5598, 0, "k") , (5599, 0, "e") , (5600, 0, "r") , (5601, 0, " ") , (5602, 0, "b") , (5603, 0, "a") , (5604, 0, "c") , (5605, 0, "k") , (5606, 0, " ") , (5607, 0, "t") , (5608, 0, " ") , (5609, 0, "a") , (5609, 1, "") , (5608, 1, "") , (5608, 0, "o") , (5609, 0, " ") , (5610, 0, "a") , (5611, 0, " ") , (5612, 0, "c") , (5613, 0, "u") , (5614, 0, "r") , (5615, 0, "s") , (5616, 0, "o") , (5617, 0, "r") , (5618, 0, " ") , (5619, 0, "(") , (5620, 0, "w") , (5621, 0, "h") , (5622, 0, "i") , (5623, 0, "c") , (5624, 0, "h") , (5625, 0, " ") , (5626, 0, "i") , (5627, 0, "s") , (5628, 0, " ") , (5629, 0, "r") , (5630, 0, "e") , (5631, 0, "q") , (5632, 0, "u") , (5633, 0, "i") , (5634, 0, "r") , (5635, 0, "e") , (5636, 0, "d") , (5637, 0, " ") , (5638, 0, "t") , (5639, 0, "o") , (5640, 0, " ") , (5641, 0, "i") , (5642, 0, "n") , (5643, 0, "s") , (5644, 0, "e") , (5645, 0, "r") , (5646, 0, "t") , (5647, 0, " ") , (5648, 0, "a") , (5649, 0, "t") , (5650, 0, " ") , (5651, 0, "t") , (5652, 0, "h") , (5653, 0, "a") , (5654, 0, "t") , (5655, 0, " ") , (5656, 0, "l") , (5657, 0, "o") , (5658, 0, "c") , (5659, 0, "a") , (5660, 0, "t") , (5661, 0, "i") , (5662, 0, "o") , (5663, 0, " ") , (5664, 0, "i") , (5665, 0, "n") , (5665, 1, "") , (5664, 1, "") , (5663, 1, "") , (5663, 0, "n") , (5664, 0, " ") , (5665, 0, "i") , (5666, 0, "n") , (5667, 0, " ") , (5668, 0, "t") , (5669, 0, "h") , (5670, 0, "e") , (5671, 0, " ") , (5672, 0, "l") , (5673, 0, "i") , (5674, 0, "s") , (5675, 0, "t") , (5676, 0, ")") , (5677, 0, ".") , ( 5532 , 146 , " // With the heads array as is, we have no way to go from a marker back to a\n // cursor (which is required to insert at that location in the list)." ) , (5685, 0, " ") , (5686, 0, "F") , (5687, 0, "o") , (5688, 0, "r") , (5689, 0, " ") , (5690, 0, "t") , (5691, 0, "h") , (5692, 0, "a") , (5693, 0, "t") , (5694, 0, " ") , (5695, 0, "w") , (5696, 0, "e") , (5697, 0, " ") , (5698, 0, "n") , (5699, 0, "e") , (5700, 0, "e") , (5701, 0, "d") , (5702, 0, " ") , (5537, 0, "/") , (5619, 0, "/") , (5705, 0, "t") , (5706, 0, "o") , (5707, 0, " ") , (5708, 0, "b") , (5709, 0, "e") , (5710, 0, " ") , (5711, 0, "a") , (5712, 0, "b") , (5713, 0, "l") , (5714, 0, "e") , (5715, 0, " ") , (5716, 0, "t") , (5717, 0, "o") , (5718, 0, " ") , (5719, 0, "f") , (5720, 0, "i") , (5721, 0, "g") , (5722, 0, "u") , (5723, 0, "r") , (5724, 0, "e") , (5725, 0, " ") , (5726, 0, "o") , (5727, 0, "u") , (5728, 0, "t") , (5729, 0, " ") , (5730, 0, "a") , (5731, 0, "t") , (5732, 0, " ") , (5733, 0, "e") , (5734, 0, "a") , (5735, 0, "c") , (5736, 0, "h") , (5737, 0, " ") , (5738, 0, "l") , (5739, 0, "e") , (5740, 0, "v") , (5741, 0, "e") , (5742, 0, "l") , (5743, 0, " ") , (5744, 0, "o") , (5745, 0, "f") , (5746, 0, " ") , (5747, 0, "t") , (5748, 0, "h") , (5749, 0, "e") , (5750, 0, " ") , (5751, 0, "n") , (5752, 0, "e") , (5753, 0, "x") , (5754, 0, "t") , (5755, 0, "s") , (5756, 0, " ") , (5757, 0, "p") , (5758, 0, "o") , (5759, 0, "i") , (5760, 0, "n") , (5761, 0, "t") , (5762, 0, "e") , (5763, 0, "r") , (5764, 0, "s") , (5765, 0, " ") , (5766, 0, "w") , (5767, 0, "h") , (5768, 0, "i") , (5769, 0, "c") , (5770, 0, "h") , (5771, 0, " ") , (5772, 0, "o") , (5773, 0, "b") , (5774, 0, "j") , (5775, 0, "e") , (5776, 0, "c") , (5777, 0, "t") , (5778, 0, "s") , (5772, 7, "o") , (5773, 0, "b") , (5774, 0, "j") , (5775, 0, "e") , (5776, 0, "c") , (5777, 0, "t") , (5778, 0, " ") , (5779, 0, "p") , (5780, 0, "o") , (5781, 0, "i") , (5782, 0, "n") , (5783, 0, "t") , (5784, 0, "s") , (5785, 0, " ") , (5786, 0, "t") , (5787, 0, "o") , (5788, 0, " ") , (5789, 0, "u") , (5790, 0, "s") , (5791, 0, ",") , (5792, 0, " ") , (5793, 0, "a") , (5794, 0, "n") , (5795, 0, "d") , (5796, 0, " ") , (5797, 0, "h") , (5798, 0, "o") , (5799, 0, "w") , (5800, 0, " ") , (5801, 0, "f") , (5802, 0, "a") , (5803, 0, "r") , (5804, 0, " ") , (5805, 0, "i") , (5806, 0, "n") , (5807, 0, "t") , (5808, 0, "o") , (5809, 0, " ") , (5810, 0, "t") , (5811, 0, "h") , (5812, 0, "e") , ( 5613 , 200 , " /// cursor (which is required to insert at that location in the list). For\n /// that we need to be able to figure out at each level of the nexts\n /// pointers which object points to us, and how far into the" ) , (5813, 16, "t") , (5814, 0, "h") , (5815, 0, "e") , (5816, 0, " ") , (5817, 0, "o") , (5818, 0, "f") , (5819, 0, "f") , (5820, 0, "s") , (5821, 0, "e") , (5822, 0, "t") , (5823, 0, " ") , (5824, 0, "f") , (5825, 0, "r") , (5826, 0, "o") , (5827, 0, "m") , (5828, 0, " ") , (5829, 0, "t") , (5830, 0, "h") , (5831, 0, "a") , (5832, 0, "t") , (5833, 0, " ") , (5834, 0, "e") , (5835, 0, "l") , (5836, 0, "e") , (5837, 0, "m") , (5838, 0, "e") , (5839, 0, "n") , (5840, 0, "t") , (5841, 0, " ") , (5842, 0, "t") , (5843, 0, "o") , (5844, 0, " ") , (5845, 0, "t") , (5846, 0, "h") , (5847, 0, "e") , (5848, 0, " ") , (5849, 0, "c") , (5850, 0, "u") , (5851, 0, "r") , (5852, 0, "r") , (5853, 0, "e") , (5854, 0, "n") , (5855, 0, "t") , (5856, 0, " ") , (5857, 0, "e") , (5858, 0, "l") , (5859, 0, "e") , (5860, 0, "m") , (5861, 0, "e") , (5862, 0, "n") , (5863, 0, "t") , (5864, 0, ".") , ( 5765 , 100 , " /// pointers which object points to us, and the offset from that element to\n /// the current element." ) , (5873, 0, " ") , (5874, 0, "A") , (5875, 0, "n") , (5876, 0, "y") , (5877, 0, "w") , (5878, 0, "a") , (5879, 0, "y") , (5880, 0, ",") , (5881, 0, " ") , (5882, 0, "w") , (5883, 0, "e") , (5884, 0, " ") , (5885, 0, "n") , (5886, 0, "e") , (5887, 0, "e") , (5882, 6, "f") , (5883, 0, "o") , (5884, 0, "r") , (5885, 0, "m") , (5885, 1, "") , (5885, 0, " ") , (5886, 0, "m") , (5887, 0, "a") , (5888, 0, "r") , (5889, 0, "k") , (5890, 0, "e") , (5891, 0, "r") , (5892, 0, "s") , (5893, 0, " ") , (5894, 0, "t") , (5895, 0, "o") , (5896, 0, " ") , (5897, 0, "w") , (5898, 0, "o") , (5899, 0, "r") , (5900, 0, "k") , (5901, 0, " ") , (5902, 0, "w") , (5903, 0, "e") , (5904, 0, " ") , (5905, 0, "n") , (5906, 0, "e") , (5907, 0, "e") , (5908, 0, "d") , (5909, 0, " ") , (5910, 0, "t") , (5911, 0, "h") , (5912, 0, "i") , (5913, 0, "s") , (5914, 0, ".") , (5915, 0, "\n /// ") , (5923, 1, "") , (5922, 1, "") , (5921, 1, "") , (5920, 1, "") , (5920, 0, "p") , (5921, 0, "a") , (5922, 0, "r") , (5923, 0, "e") , (5924, 0, "n") , (5925, 0, "t") , (5926, 0, ":") , (5927, 0, " ") , (5928, 0, "*") , (5929, 0, "m") , (5930, 0, "u") , (5931, 0, "t") , (5932, 0, " ") , (5933, 0, "N") , (5934, 0, "o") , (5935, 0, "d") , (5936, 0, "e") , (5937, 0, " ") , (5937, 1, "") , (5937, 0, ";") , (5937, 0, "<") , (5938, 0, "C") , (5939, 0, ">") , (5940, 1, "") , (5940, 0, ",") , (9876, 0, "\n ") , (9893, 0, "p") , (9894, 0, "a") , (9895, 0, "r") , (9896, 0, "e") , (9897, 0, "n") , (9893, 5, "parent") , (9899, 0, ":") , (9900, 0, " ") , (9901, 0, "p") , (9902, 0, "t") , (9903, 0, "r") , (9904, 0, ":") , (9905, 0, ":") , (9906, 0, "n") , (9907, 0, "u") , (9908, 0, "l") , (9909, 0, "l") , (9906, 4, "null_mut()") , (9916, 0, ",") , (16970, 0, "\n ") , (16987, 0, "p") , (16988, 0, "a") , (16989, 0, "r") , (16990, 0, "e") , (16991, 0, "n") , (16987, 5, "parent") , (16993, 0, ":") , (16994, 0, " ") , (16995, 0, "p") , (16996, 0, "t") , (16997, 0, "r") , (16998, 0, ":") , (16999, 0, ":") , (17000, 0, "n") , (17001, 0, "u") , (17002, 0, "l") , (17003, 0, "l") , (17000, 4, "null()") , (17004, 0, "_") , (17005, 0, "m") , (17006, 0, "u") , (17007, 0, "t") , (17010, 0, ",") , (19797, 7, "_") , (19776, 7, "_") , (18635, 7, "_") , (18645, 7, "_") , (18615, 0, "m") , (18616, 0, "u") , (18617, 0, "t") , (18618, 0, " ") , (18628, 12, "") , (18628, 0, " as *const _") , (18618, 1, "") , (18615, 3, "") , (19568, 57, "") , (19551, 0, "\n ") , (19568, 0, "a") , (19569, 0, "s") , (19570, 0, "s") , (19552, 19, "") , (19551, 1, "") , (19551, 0, "\n ") , (19568, 0, "a") , (19569, 0, "s") , (19570, 0, "s") , (19571, 0, "e") , (19572, 0, "r") , (19568, 5, "assert_eq!") , (19578, 0, "(") , (19579, 0, "e") , (19580, 0, "n") , (19581, 0, "t") , (19582, 0, "r") , (19583, 0, "y") , (19584, 0, ".") , (19568, 0, "// ") , (19568, 3, "") , (19577, 8, "n") , (19577, 1, "!(entry.") , (19579, 6, "n") , (19580, 0, ".") , (19581, 0, "i") , (19582, 0, "n") , (19583, 0, "t") , (19584, 0, "o") , (19581, 4, "") , (19580, 1, "") , (19580, 0, ".") , (19581, 0, "p") , (19582, 0, "a") , (19583, 0, "r") , (19584, 0, "e") , (19585, 0, "n") , (19586, 0, "t") , (19587, 0, ",") , (19588, 0, " ") , (19589, 0, "i") , (19590, 0, "t") , (19591, 0, "e") , (19592, 0, "r") , (19593, 0, "[") , (19594, 0, "n") , (19595, 0, ".") , (19596, 0, "h") , (19597, 0, "e") , (19598, 0, "i") , (19599, 0, "g") , (19600, 0, "h") , (19601, 0, "t") , (19602, 0, " ") , (19603, 0, "a") , (19604, 0, "s") , (19605, 0, " ") , (19606, 0, "u") , (19607, 0, "s") , (19608, 0, "i") , (19609, 0, "z") , (19610, 0, "e") , (19611, 0, "]") , (19612, 0, ")") , (19613, 0, ";") , (19612, 0, ".") , (19613, 0, "n") , (19614, 0, "o") , (19615, 0, "d") , (19616, 0, "e") , (19551, 0, "\n ") , (19568, 0, "l") , (19569, 0, "e") , (19570, 0, "t") , (19571, 0, " ") , (19572, 0, "e") , (19573, 0, "x") , (19574, 0, "p") , (19575, 0, "e") , (19576, 0, "c") , (19577, 0, "t") , (19578, 0, "_") , (19579, 0, "p") , (19580, 0, "a") , (19581, 0, "r") , (19582, 0, "e") , (19583, 0, "n") , (19584, 0, "t") , (19585, 0, " ") , (19586, 0, "=") , (19587, 0, " ") , (19588, 0, "i") , (19589, 0, "f") , (19590, 0, " ") , (19591, 0, "n") , (19592, 0, ".") , (19593, 0, "h") , (19594, 0, "e") , (19595, 0, "i") , (19596, 0, "g") , (19597, 0, "h") , (19598, 0, "t") , (19599, 0, " ") , (19600, 0, "=") , (19601, 0, "=") , (19602, 0, " ") , (19603, 0, "N") , (19604, 0, "O") , (19605, 0, "D") , (19606, 0, "E") , (19607, 0, "_") , (19608, 0, "M") , (19609, 0, "A") , (19609, 1, "") , (19608, 1, "") , (19603, 5, "H") , (19604, 0, "E") , (19605, 0, "I") , (19606, 0, "G") , (19607, 0, "H") , (19608, 0, "T") , (19603, 6, "MAX_HEIGHT_U8") , (19616, 0, " ") , (19617, 0, "{") , (19618, 0, " ") , (19619, 0, "&") , (19620, 0, "s") , (19621, 0, "e") , (19622, 0, "l") , (19623, 0, "f") , (19624, 0, ".") , (19625, 0, "h") , (19626, 0, "e") , (19627, 0, "a") , (19628, 0, "d") , (19629, 0, " ") , (19630, 0, "}") , (19631, 0, " ") , (19632, 0, "e") , (19633, 0, "l") , (19634, 0, "s") , (19635, 0, "e") , (19636, 0, " ") , (19637, 0, "iter[n.height as usize].node") , (19665, 0, " ") , (19666, 0, "}") , (19637, 0, "{") , (19638, 0, " ") , (19629, 0, ".") , (19630, 0, "a") , (19631, 0, "s") , (19632, 0, "_") , (19630, 3, "as_mut_ptr") , (19640, 0, "(") , (19641, 0, ")") , (19619, 0, "(") , (19630, 0, ")") , (19630, 14, "") , (19619, 1, "") , (19629, 0, "&self.head as *const _;") , (19629, 11, "") , (19629, 0, " ") , (19641, 0, " ") , (19642, 0, "a") , (19643, 0, "s") , (19644, 0, " ") , (19645, 0, "*") , (19646, 0, "m") , (19647, 0, "u") , (19648, 0, "t") , (19649, 0, " ") , (19650, 0, "_") , (19618, 1, "") , (19618, 0, "\n ") , (19672, 1, "") , (19671, 1, "") , (19671, 0, "\n ") , (19696, 1, "") , (19696, 0, "\n ") , (19745, 1, "") , (19745, 0, "\n ") , (19763, 0, ";") , (19764, 0, "\n ") , (19819, 28, "e") , (19765, 16, "") , (19804, 0, "x") , (19805, 0, "p") , (19806, 0, "e") , (19803, 4, "expect_parent") , (19588, 0, "\n ") , (19589, 16, " }") , (19602, 0, " ") , (19603, 0, "e") , (19604, 0, "l") , (19605, 0, "s") , (19606, 0, "e") , (19607, 0, " ") , (19601, 0, " ") , (19588, 0, "i") , (19589, 0, "f") , (19590, 0, " ") , (19591, 0, "i") , (19592, 0, "s") , (19593, 0, "_") , (19594, 0, "h") , (19595, 0, "e") , (19596, 0, "a") , (19597, 0, "d") , (19598, 0, " ") , (19599, 0, "{") , (19600, 0, " ") , (19600, 1, "") , (19600, 0, "\n ") , (19621, 0, "p") , (19622, 0, "t") , (19623, 0, "r") , (19624, 0, ":") , (19625, 0, ":") , (19626, 0, "n") , (19627, 0, "u") , (19628, 0, "l") , (19629, 0, "l") , (19626, 4, "null_mut()") , (19633, 1, "") , (19632, 1, "") , (19631, 1, "") , (19630, 1, "") , (19729, 10, "") , (19632, 0, " ") , (19633, 0, "/") , (19634, 0, "/") , (19635, 0, " ") , (19636, 0, "T") , (19637, 0, "h") , (19638, 0, "e") , (19639, 0, " ") , (19640, 0, "h") , (19641, 0, "e") , (19642, 0, "a") , (19643, 0, "d") , (19644, 0, "'") , (19645, 0, "s") , (19646, 0, " ") , (19647, 0, "p") , (19648, 0, "a") , (19649, 0, "r") , (19650, 0, "e") , (19651, 0, "n") , (19652, 0, "t") , (19653, 0, " ") , (19654, 0, "i") , (19655, 0, "s") , (19656, 0, " ") , (19657, 0, "n") , (19658, 0, "u") , (19659, 0, "l") , (19660, 0, "l") , (19758, 0, " ") , (19759, 0, "/") , (19760, 0, "/") , (19761, 0, " ") , (19762, 0, "D") , (19763, 0, "o") , (19764, 0, "n") , (19765, 0, "'") , (19766, 0, "t") , (19767, 0, " ") , (19762, 6, "M") , (19763, 0, "a") , (19764, 0, "x") , (19765, 0, " ") , (19766, 0, "h") , (19767, 0, "e") , (19768, 0, "i") , (19769, 0, "g") , (19770, 0, "h") , (19771, 0, "t") , (19772, 0, " ") , (19773, 0, "n") , (19774, 0, "o") , (19775, 0, "d") , (19776, 0, "e") , (19777, 0, "s") , (19778, 0, " ") , (19779, 0, "p") , (19780, 0, "o") , (19781, 0, "i") , (19782, 0, "n") , (19783, 0, "t") , (19784, 0, " ") , (19785, 0, "b") , (19786, 0, "a") , (19787, 0, "c") , (19788, 0, "k") , (19789, 0, " ") , (19790, 0, "t") , (19791, 0, "o") , (19792, 0, " ") , (19793, 0, "h") , (19794, 0, "e") , (19795, 0, "a") , (19796, 0, "d") , (19927, 0, " ") , (19928, 0, "a") , (19929, 0, "s") , (19930, 0, " ") , (19931, 0, "*") , (19932, 0, "c") , (19933, 0, "o") , (19934, 0, "n") , (19935, 0, "s") , (19936, 0, "t") , (19937, 0, " ") , (19938, 0, "_") , (19954, 0, ",") , (19955, 0, " ") , (19956, 0, "\"") , (19957, 0, "i") , (19958, 0, "n") , (19959, 0, "v") , (19960, 0, "a") , (19961, 0, "l") , (19962, 0, "i") , (19963, 0, "d") , (19964, 0, " ") , (19965, 0, "a") , (19965, 1, "") , (19965, 0, "p") , (19966, 0, "a") , (19967, 0, "r") , (19968, 0, "e") , (19969, 0, "n") , (19970, 0, "t") , (19971, 0, "\"") , (1808, 0, "// ") , (1765, 0, "// ") , (1742, 0, "// ") , (1699, 0, "// ") , (1817, 3, "") , (1771, 3, "") , (1745, 3, "") , (1699, 3, "") , (25858, 0, "\n ") , (25867, 0, "\n ") , (25859, 8, "") , (25868, 0, "(") , (25869, 0, "*") , (25870, 0, "n") , (25871, 0, "e") , (25872, 0, "w") , (25873, 0, "_") , (25874, 0, "n") , (25875, 0, "o") , (25876, 0, "d") , (25877, 0, "e") , (25878, 0, ")") , (25879, 0, ".") , (25880, 0, "p") , (25881, 0, "a") , (25882, 0, "r") , (25883, 0, "e") , (25884, 0, "n") , (25885, 0, "t") , (25886, 0, " ") , (25887, 0, "=") , (25888, 0, " ") , (25868, 0, "// ") , (24879, 0, "\n ") , (24888, 0, "l") , (24889, 0, "e") , (24890, 0, "t") , (24891, 0, " ") , (24892, 0, "n") , (24893, 0, "e") , (24894, 0, "w") , (24895, 0, "_") , (24896, 0, "n") , (24897, 0, "o") , (24898, 0, "d") , (24899, 0, "e") , (24900, 0, " ") , (24901, 0, "=") , (24902, 0, " ") , (24900, 0, "_") , (24901, 0, "R") , (24902, 0, "e") , (24903, 0, "f") , (24901, 1, "") , (24901, 0, "r") , (24907, 0, "&") , (24907, 1, "") , (24907, 0, "&") , (24908, 0, "*") , (24908, 1, "") , (24908, 0, "m") , (24909, 0, "u") , (24910, 0, "t") , (24911, 0, " ") , (24912, 0, "*") , (24913, 0, "n") , (24914, 0, "e") , (24915, 0, "w") , (24916, 0, "_") , (24917, 0, "n") , (24918, 0, "o") , (24919, 0, "d") , (24920, 0, "e") , (24921, 0, ";") , (26079, 11, "n") , (25914, 11, "n") , (25073, 11, "n") , (24985, 11, "n") , (24931, 11, "n") , (26040, 0, "e") , (25885, 0, "e") , (25054, 0, "e") , (24976, 0, "e") , (24932, 0, "e") , (26045, 0, "w") , (25889, 0, "w") , (25057, 0, "w") , (24978, 0, "w") , (24933, 0, "w") , (26050, 0, "_") , (25893, 0, "_") , (25060, 0, "_") , (24980, 0, "_") , (24934, 0, "_") , (26055, 0, "n") , (25897, 0, "n") , (25063, 0, "n") , (24982, 0, "n") , (24935, 0, "n") , (26060, 0, "o") , (25901, 0, "o") , (25066, 0, "o") , (24984, 0, "o") , (24936, 0, "o") , (26065, 0, "d") , (25905, 0, "d") , (25069, 0, "d") , (24986, 0, "d") , (24937, 0, "d") , (26063, 7, "new_node_ref") , (25902, 7, "new_node_ref") , (25065, 7, "new_node_ref") , (24981, 7, "new_node_ref") , (24931, 7, "new_node_ref") , (26083, 12, "new_nod") , (25917, 12, "new_nod") , (25075, 12, "new_nod") , (24986, 12, "new_nod") , (24931, 12, "new_nod") , (26063, 7, "new_node_ref") , (25902, 7, "new_node_ref") , (25065, 7, "new_node_ref") , (24981, 7, "new_node_ref") , (24931, 7, "new_node_ref") , (26755, 0, "_ptr") , (26491, 0, "_ptr") , (24921, 0, "_ptr") , (24848, 0, "_ptr") , (26099, 4, "") , (25091, 4, "") , (25002, 4, "") , (24947, 4, "") , (24904, 4, "") , (25906, 3, "") , (25917, 1, "") , (25916, 1, "") , (25915, 1, "") , (25914, 1, "") , (25924, 0, "c") , (25925, 0, "u") , (25925, 1, "") , (25924, 1, "") , (25924, 0, "c") , (25925, 0, "u") , (25926, 0, "r") , (25927, 0, "s") , (25928, 0, "o") , (25929, 0, "r") , (25930, 0, ".") , (25931, 0, "e") , (25932, 0, "n") , (25931, 2, "entries") , (25938, 0, "[") , (25939, 0, "n") , (25940, 0, "e") , (25941, 0, "w") , (25942, 0, "_") , (25943, 0, "h") , (25944, 0, "e") , (25945, 0, "i") , (25939, 7, "new_height_usize") , (25197, 0, "\n let mut head_height = self.head.height as usize;") , (25089, 57, "") , (25140, 0, "\n") , (25088, 1, "") , (25045, 0, "\n ") , (25964, 0, "]") , (25046, 8, "") , (25957, 0, ".") , (25958, 0, "n") , (25959, 0, "o") , (25960, 0, "d") , (25961, 0, "e") , (25962, 0, ";") , (25898, 0, "\n ") , (25907, 0, "i") , (25908, 0, "f") , (25909, 0, " ") , (25910, 0, "n") , (25911, 0, "e") , (25912, 0, "w") , (25913, 0, "_") , (25914, 0, "h") , (25910, 5, "new_height_usize") , (25926, 0, " ") , (25927, 0, ">") , (25928, 0, " ") , (25928, 1, "") , (25927, 1, "") , (25927, 0, "=") , (25928, 0, "=") , (25929, 0, " ") , (25930, 0, "M") , (25931, 0, "A") , (25932, 0, "X") , (25933, 0, "_") , (25930, 4, "MAX_HEIGHT") , (25949, 18, "") , (25907, 0, "new_node.parent = ") , (25958, 0, " ") , (25959, 0, "{") , (25960, 0, "\n ") , (25973, 0, "s") , (25974, 0, "e") , (25975, 0, "l") , (25976, 0, "f") , (25977, 0, ".") , (25978, 0, "h") , (25979, 0, "e") , (25980, 0, "a") , (25981, 0, "d") , (25982, 0, "\n ") , (25983, 12, " }") , (25992, 0, " ") , (25993, 0, "e") , (25994, 0, "l") , (25995, 0, "s") , (25996, 0, "e") , (25997, 0, " ") , (25998, 0, "{") , (25983, 63, " } else { cursor.entries[new_height_usize].node;") , (26037, 1, "") , (26037, 0, " ") , (26038, 0, "}") , (26039, 0, ";") , (25973, 0, "&") , (25983, 0, " ") , (25983, 1, "") , (25983, 0, " ") , (25984, 0, "a") , (25985, 0, "s") , (25986, 0, " ") , (25987, 0, "*") , (25988, 0, "c") , (25989, 0, "o") , (25990, 0, "n") , (25991, 0, "s") , (25992, 0, "t") , (25993, 0, " ") , (25994, 0, "_") , (25995, 0, " ") , (25996, 0, "a") , (25997, 0, "s") , (25998, 0, " ") , (25999, 0, "*") , (26000, 0, "m") , (26001, 0, "u") , (26002, 0, "t") , (26003, 0, " ") , (26004, 0, "_") , (27224, 0, "\n ") , (27233, 0, "\n ") , (27225, 8, "") , (27234, 0, "/") , (27235, 0, "/") , (27236, 0, " ") , (27237, 0, "U") , (27238, 0, "p") , (27239, 0, "d") , (27240, 0, "a") , (27241, 0, "t") , (27242, 0, "e") , (27243, 0, " ") , (27244, 0, "p") , (27245, 0, "a") , (27246, 0, "r") , (27247, 0, "e") , (27248, 0, "n") , (27249, 0, "t") , (27250, 0, "s") , (27251, 0, " ") , (27252, 0, "o") , (27253, 0, "f") , (27254, 0, " ") , (27255, 0, "t") , (27256, 0, "h") , (27257, 0, "i") , (27258, 0, "s") , (27259, 0, " ") , (27260, 0, "n") , (27261, 0, "o") , (27262, 0, "d") , (27263, 0, "e") , (27264, 0, "'") , (27265, 0, "s") , (27266, 0, " ") , (27267, 0, "n") , (27268, 0, "e") , (27269, 0, "w") , (27270, 0, " ") , (27271, 0, "c") , (27272, 0, "h") , (27273, 0, "i") , (27274, 0, "l") , (27275, 0, "d") , (27276, 0, "r") , (27277, 0, "e") , (27278, 0, "n") , (27279, 0, ".") , (27280, 0, "\n ") , (27289, 0, "f") , (27290, 0, "o") , (27291, 0, "r") , (27292, 0, " ") , (27289, 4, "") , (27289, 0, "l") , (27290, 0, "e") , (27291, 0, "t") , (27292, 0, " ") , (27293, 0, "m") , (27294, 0, "u") , (27295, 0, "t") , (27296, 0, " ") , (27297, 0, "n") , (27298, 0, " ") , (27299, 0, "=") , (27300, 0, " ") , (27301, 0, "n") , (27302, 0, "e") , (27303, 0, "w") , (27304, 0, "_") , (27301, 4, "new_node") , (27309, 0, ".") , (27310, 0, "n") , (27310, 1, "") , (27309, 1, "") , (27309, 0, ".") , (27310, 0, "n") , (27311, 0, "e") , (27312, 0, "x") , (27313, 0, "t") , (27314, 0, "s") , (27315, 0, "_") , (27310, 6, "nexts_mut") , (27319, 0, "(") , (27320, 0, ")") , (27321, 0, ".") , (27321, 1, "") , (27321, 0, "[") , (27322, 0, "n") , (27323, 0, "e") , (27324, 0, "w") , (27325, 0, "_") , (27322, 4, "new_height_usize") , (27338, 0, " ") , (27339, 0, "-") , (27340, 0, " ") , (27341, 0, "1") , (27342, 0, "]") , (27343, 0, ";") , (27344, 0, "\n ") , (27353, 0, "w") , (27354, 0, "h") , (27355, 0, "i") , (27356, 0, "l") , (27357, 0, "e") , (27358, 0, " ") , (27359, 0, "!") , (27360, 0, "n") , (27361, 0, ".") , (27362, 0, "i") , (27363, 0, "s") , (27364, 0, "_") , (27365, 0, "n") , (27366, 0, "u") , (27367, 0, "l") , (27368, 0, "l") , (27362, 7, "is_null") , (27369, 0, "(") , (27370, 0, ")") , (27371, 0, " ") , (27372, 0, "{") , (27373, 0, "\n ") , (27386, 0, "\n ") , (27374, 12, "") , (27375, 12, " }") , (27343, 0, ".") , (27344, 0, "n") , (27345, 0, "o") , (27346, 0, "d") , (27347, 0, "e") , (27309, 0, "_") , (27310, 0, "p") , (27311, 0, "t") , (27312, 0, "r") , (27313, 40, "") , (27313, 0, ";") , (27343, 0, "\n ") , (27356, 0, "n") , (27357, 0, " ") , (27358, 0, "=") , (27359, 0, " ") , (27360, 0, ".nexts_mut()[new_height_usize - 1].node;") , (27360, 0, "n") , (27360, 0, "(") , (27361, 0, "*") , (27363, 0, ")") , (27323, 18, "") , (27323, 0, "l") , (27324, 0, "o") , (27325, 0, "o") , (27326, 0, "p") , (27390, 0, "\n ") , (27403, 0, "i") , (27404, 0, "f") , (27405, 0, " ") , (27406, 0, "while !n.is_null()") , (27406, 7, "") , (27417, 0, " ") , (27418, 0, "{") , (27419, 0, " ") , (27420, 0, "b") , (27421, 0, "r") , (27422, 0, "e") , (27423, 0, "a") , (27424, 0, "k") , (27425, 0, ";") , (27426, 0, " ") , (27427, 0, "}") , (27429, 0, "\n ") , (27430, 12, "") , (27280, 0, " ") , (27281, 0, "T") , (27282, 0, "h") , (27283, 0, "i") , (27284, 0, "s") , (27285, 0, " ") , (27286, 0, "i") , (27287, 0, "s") , (27288, 0, ",") , (27289, 0, " ") , (27290, 0, "a") , (27291, 0, "l") , (27292, 0, "l") , (27293, 0, " ") , (27294, 0, "c") , (27295, 0, "h") , (27296, 0, "i") , (27297, 0, "l") , (27298, 0, "d") , (27299, 0, "r") , (27300, 0, "e") , (27301, 0, "n") , (27302, 0, " ") , (27303, 0, "a") , (27304, 0, "t") , (27305, 0, " ") , (27306, 0, "t") , (27307, 0, "h") , (27308, 0, "e") , (27309, 0, " ") , (27293, 17, " ") , (27294, 0, "n") , (27295, 0, "o") , (27296, 0, "d") , (27297, 0, "e") , (27298, 0, "s") , (27299, 0, " ") , (27300, 0, "a") , (27301, 0, "t") , (27302, 0, " ") , (27303, 0, "t") , (27304, 0, "h") , (27305, 0, "e") , (27306, 0, " ") , (27307, 0, "e") , (27308, 0, "x") , (27309, 0, "p") , (27310, 0, "e") , (27311, 0, "c") , (27312, 0, "t") , (27313, 0, "e") , (27314, 0, "d") , (27315, 0, " ") , (27316, 0, "h") , (27317, 0, "e") , (27318, 0, "i") , (27319, 0, "g") , (27320, 0, "h") , (27321, 0, "t") , (27237, 85, "P") , (27238, 0, "o") , (27239, 0, "i") , (27240, 0, "n") , (27241, 0, "t") , (27242, 0, " ") , (27243, 0, "a") , (27244, 0, "l") , (27245, 0, "l") , (27246, 0, " ") , (27247, 0, "n") , (27248, 0, "o") , (27249, 0, "d") , (27250, 0, "e") , (27251, 0, "s") , (27252, 0, " ") , (27253, 0, "a") , (27254, 0, "t") , (27255, 0, " ") , (27256, 0, "h") , (27257, 0, "e") , (27258, 0, "i") , (27259, 0, "g") , (27260, 0, "h") , (27261, 0, "t") , (27262, 0, "-") , (27263, 0, "1") , (27401, 0, " ") , (27402, 0, "|") , (27403, 0, "|") , (27404, 0, " ") , (27405, 0, "(") , (27406, 0, "*") , (27407, 0, "n") , (27408, 0, ")") , (27409, 0, ".") , (27410, 0, "n") , (27410, 1, "") , (27410, 0, "h") , (27411, 0, "e") , (27412, 0, "i") , (27413, 0, "g") , (27414, 0, "h") , (27415, 0, "t") , (27416, 0, " ") , (27417, 0, ">") , (27418, 0, " ") , (27419, 0, "n") , (27420, 0, "e") , (27421, 0, "w") , (27422, 0, "_") , (27419, 4, "new_height") , (27418, 0, "=") , (27237, 27, "U") , (27238, 0, "p") , (27239, 0, "d") , (27240, 0, "a") , (27241, 0, "t") , (27242, 0, "e") , (27243, 0, " ") , (27244, 0, "p") , (27245, 0, "a") , (27246, 0, "r") , (27247, 0, "e") , (27248, 0, "n") , (27249, 0, "t") , (27250, 0, "s") , (27251, 0, ".") , (27431, 0, " ") , (27443, 0, "n") , (27444, 0, ".") , (27445, 0, "p") , (27445, 1, "") , (27444, 1, "") , (27443, 1, "") , (27443, 0, "(") , (27444, 0, "*") , (27445, 0, "n") , (27446, 0, ")") , (27447, 0, ".") , (27448, 0, "p") , (27449, 0, "a") , (27450, 0, "r") , (27451, 0, "e") , (27452, 0, "n") , (27453, 0, "t") , (27454, 0, " ") , (27455, 0, "=") , (27456, 0, " ") , (27443, 0, "// ") , (27318, 0, "&") , (27319, 0, "m") , (27320, 0, "u") , (27321, 0, "t") , (27322, 0, " ") , (27323, 0, "*") , (27400, 1, "") , (27399, 1, "") , (27398, 1, "") , (27398, 0, " ") , (27400, 1, "") , (27446, 3, "") , (27446, 0, "// ") , (27367, 0, ")") , (27324, 0, "(") , (27368, 1, "") , (27324, 1, "") , (27446, 3, "") , (27446, 0, "// ") , (27400, 0, ")") , (27398, 1, "") , (27398, 0, " (*") , (27322, 2, "") , (27318, 4, "") , (27443, 3, "") , (27457, 0, "n") , (27458, 0, "e") , (27459, 0, "w") , (27460, 0, "_") , (27461, 0, "n") , (27462, 0, "o") , (27463, 0, "d") , (27457, 7, "new_node_ptr") , (27469, 0, ";") , (16787, 4, "i") , (16788, 0, "f") , (16789, 0, " ") , (16789, 1, "") , (16787, 2, "None") , (16787, 0, "if cfg!(debug_assertions)") , (16812, 4, "") , (16812, 0, " ") , (16813, 0, "{") , (16814, 0, " ") , (16815, 0, "Some(SmallRng::seed_from_u64(seed))") , (16850, 0, " ") , (16851, 0, "}") , (16852, 0, " ") , (16787, 66, "") , (16787, 0, "N") , (16788, 0, "o") , (16789, 0, "n") , (16790, 0, "e") , (17388, 0, "\n ") , (17401, 0, "/") , (17402, 0, "/") , (17403, 0, " ") , (17404, 0, "W") , (17404, 1, "") , (17404, 0, "I") , (17405, 0, "f") , (17406, 0, " ") , (17407, 0, "w") , (17408, 0, "e") , (17409, 0, "'") , (17410, 0, "r") , (17411, 0, "e") , (17412, 0, " ") , (17413, 0, "i") , (17414, 0, "n") , (17415, 0, " ") , (17416, 0, "d") , (17417, 0, "e") , (17418, 0, "b") , (17419, 0, "u") , (17420, 0, "g") , (17421, 0, " ") , (17422, 0, "m") , (17423, 0, "o") , (17424, 0, "d") , (17425, 0, "e") , (17426, 0, ",") , (17427, 0, " ") , (17404, 24, "W") , (17405, 0, "e") , (17406, 0, "'") , (17407, 0, "l") , (17408, 0, "l") , (17409, 0, " ") , (17410, 0, "u") , (17411, 0, "s") , (17412, 0, "e") , (17413, 0, " ") , (17414, 0, "a") , (17415, 0, " ") , (17416, 0, "s") , (17417, 0, "t") , (17418, 0, "a") , (17419, 0, "b") , (17420, 0, "l") , (17421, 0, "e") , (17422, 0, " ") , (17423, 0, "N") , (17424, 0, "R") , (17424, 1, "") , (17423, 1, "") , (17423, 0, "R") , (17424, 0, "N") , (17425, 0, "G") , (17426, 0, " ") , (17427, 0, "i") , (17428, 0, "n") , (17429, 0, " ") , (17430, 0, "d") , (17431, 0, "e") , (17432, 0, "b") , (17433, 0, "u") , (17434, 0, "g") , (17435, 0, " ") , (17436, 0, "m") , (17437, 0, "o") , (17438, 0, "d") , (17439, 0, "e") , (17440, 0, " ") , (17441, 0, "s") , (17442, 0, "o") , (17443, 0, " ") , (17444, 0, "t") , (17445, 0, "h") , (17446, 0, "e") , (17447, 0, " ") , (17448, 0, "t") , (17449, 0, "e") , (17450, 0, "s") , (17451, 0, "t") , (17452, 0, "s") , (17453, 0, " ") , (17454, 0, "a") , (17455, 0, "r") , (17456, 0, "e") , (17457, 0, " ") , (17458, 0, "s") , (17459, 0, "t") , (17460, 0, "a") , (17461, 0, "b") , (17462, 0, "l") , (17463, 0, "e") , (17464, 0, ".") , (17465, 0, "\n ") , ( 17478 , 0 , "if cfg!(debug_assertions) { Some(SmallRng::seed_from_u64(seed)) } " ) , (17503, 41, "") , (17503, 0, " ") , (17504, 0, "{") , (17505, 0, "\n ") , (17522, 0, "s") , (17523, 0, "e") , (17524, 0, "l") , (17525, 0, "f") , (17526, 0, ".") , (17527, 0, "i") , (17528, 0, "n") , (17529, 0, "i") , (17530, 0, "t") , (17527, 4, "init_rng_from_seed(seed: u64)") , (17546, 9, "3") , (17547, 0, "2") , (17548, 0, "1") , (17550, 0, ";") , (17551, 0, "\n ") , (17552, 16, " }") , (17565, 0, " ") , (17566, 0, "e") , (17567, 0, "l") , (17568, 0, "s") , (17569, 0, "e") , (17570, 0, " ") , (17571, 0, "{") , (17585, 0, " ") , (17631, 0, "\n ") , (17632, 16, " }") , (17546, 3, "1") , (17547, 0, "2") , (17548, 0, "3") , (17549, 0, "\n ") , (17549, 17, "") , (18728, 0, "\n ") , (18741, 0, "l") , (18742, 0, "e") , (18743, 0, "t") , (18744, 0, " ") , (18745, 0, "m") , (18746, 0, "u") , (18747, 0, "t") , (18748, 0, " ") , (18749, 0, "p") , (18750, 0, "r") , (18751, 0, "e") , (18752, 0, "v") , (18753, 0, " ") , (18753, 1, "") , (18753, 0, ":") , (18754, 0, " ") , (18755, 0, "*mut Node") , (18755, 0, "[") , (18768, 0, ";") , (18769, 0, " ") , (18770, 0, "M") , (18771, 0, "A") , (18772, 0, "X") , (18770, 3, "MAX_HEIGHT") , (18780, 0, "]") , (18781, 0, " ") , (18782, 0, "=") , (18783, 0, " ") , (18784, 0, "[") , (18570, 0, "\n ") , (18583, 0, "l") , (18584, 0, "e") , (18585, 0, "t") , (18586, 0, " ") , (18587, 0, "h") , (18588, 0, "e") , (18589, 0, "a") , (18590, 0, "d") , (18591, 0, "_") , (18592, 0, "p") , (18593, 0, "t") , (18594, 0, "r") , (18595, 0, " ") , (18596, 0, "=") , (18597, 0, " ") , (18598, 0, "&self.head as *const _ as *mut _") , (18630, 0, ";") , (18934, 32, "h") , (18935, 0, "e") , (18936, 0, "a") , (18937, 0, "d") , (18938, 0, "_") , (18934, 5, "head_ptr") , (18846, 0, "n") , (18847, 0, "u") , (18848, 0, "l") , (18849, 0, "l") , (18850, 0, "_") , (18846, 5, "p") , (18847, 0, "t") , (18848, 0, "r") , (18849, 0, ":") , (18850, 0, ":") , (18851, 0, "n") , (18852, 0, "u") , (18853, 0, "l") , (18851, 3, "null_mut()") , (18861, 0, ";") , (18862, 0, " ") , (18863, 0, "_") , (18864, 0, ")") , (18864, 1, "") , (18864, 0, "]") , (18865, 0, ";") , (18866, 0, "\n ") , (18867, 12, "") , (18863, 1, "") , (18863, 0, "M") , (18864, 0, "A") , (18865, 0, "X") , (18863, 3, "MAX_HEIGHT") , (20636, 0, "\n ") , (20657, 0, "p") , (20658, 0, "r") , (20659, 0, "e") , (20660, 0, "v") , (20661, 0, "[") , (20662, 0, "i") , (20663, 0, "]") , (20664, 0, " ") , (20665, 0, "=") , (20666, 0, " ") , (20667, 0, "n") , (20668, 0, ";") , (20657, 0, "// ") , (18818, 3, "c") , (18819, 0, "o") , (18820, 0, "n") , (18821, 0, "s") , (18822, 0, "t") , (18860, 1, "") , (18859, 1, "") , (18858, 1, "") , (18857, 1, "") , (20655, 3, "") , (20167, 4, "p") , (20168, 0, "r") , (20169, 0, "e") , (20170, 0, "v") , (20194, 1, "") , (20193, 1, "") , (20192, 1, "") , (20191, 1, "") , (20190, 1, "") , (27706, 1, "") , (27706, 0, "2") , (27604, 0, "\n ") , (27613, 0, "i") , (27614, 0, "f") , (27615, 0, " ") , (27616, 0, "n") , (27617, 0, "e") , (27618, 0, "w") , (27619, 0, "_") , (27620, 0, "h") , (27616, 5, "new_height_usize") , (27632, 0, " ") , (27633, 0, ">") , (27634, 0, " ") , (27635, 0, "1") , (27636, 0, " ") , (27637, 0, "{") , (27857, 8, " ") , (27817, 12, " ") , (27749, 12, " ") , (27688, 12, " ") , (27673, 8, " ") , (27639, 8, " ") , (27890, 0, "\n ") , (27891, 12, " }") , (36777, 0, "\n ") , (36794, 0, "\n ") , (36778, 16, "") , ( 36795 , 0 , "\n // Update parents.\n if new_height_usize > 1 {\n let mut n = new_node_ptr;\n loop {\n n = (*n).nexts_mut()[new_height_usize - 2].node;\n if n.is_null() || (*n).height >= new_height { break; }\n\n (*n).parent = new_node_ptr;\n }\n }" ) , (36779, 16, "") , (37093, 8, " ") , (37079, 12, " ") , (37035, 16, " ") , (36963, 16, " ") , (36898, 16, " ") , (36879, 12, " ") , (36841, 12, " ") , (36807, 8, " ") , (36780, 8, " ") , (37125, 12, " ") , (37107, 16, " ") , (37059, 20, " ") , (36983, 20, " ") , (36914, 20, " ") , (36891, 16, " ") , (36849, 16, " ") , (36811, 12, " ") , (36780, 12, " ") , (36778, 1, "") , (36833, 16, "h") , (36834, 0, "e") , (36835, 0, "i") , (36836, 0, "g") , (36837, 0, "h") , (36838, 0, "t") , (36878, 12, "e") , (36953, 16, "h") , (36954, 0, "e") , (36955, 0, "i") , (36956, 0, "g") , (36957, 0, "h") , (36958, 0, "t") , (37028, 10, "h") , (37029, 0, "e") , (37030, 0, "i") , (37031, 0, "g") , (37032, 0, "h") , (37033, 0, "t") , (37034, 0, " ") , (37035, 0, "a") , (37036, 0, "s") , (37037, 0, " ") , (37038, 0, "u") , (37039, 0, "8") , (36845, 0, "\n ") , (36846, 20, "") , (36845, 1, "") , (36880, 0, "\n ") , (36901, 0, "l") , (36902, 0, "e") , (36903, 0, "t") , (36904, 0, " ") , (36905, 0, "n") , (36906, 0, "e") , (36907, 0, "w") , (36908, 0, "_") , (36909, 0, "p") , (36910, 0, "a") , (36911, 0, "r") , (36912, 0, "e") , (36913, 0, "n") , (36914, 0, "t") , (36915, 0, " ") , (36916, 0, "=") , (36917, 0, " ") , (36918, 0, "c") , (36919, 0, "u") , (36920, 0, "r") , (36921, 0, "s") , (36922, 0, "o") , (36923, 0, "r") , (36924, 0, ".") , (36925, 0, "e") , (36926, 0, "n") , (36927, 0, "t") , (36928, 0, "r") , (36929, 0, "i") , (36930, 0, "e") , (36931, 0, "s") , (36932, 0, "[") , (36933, 0, "h") , (36934, 0, "e") , (36935, 0, "i") , (36936, 0, "g") , (36937, 0, "h") , (36938, 0, "t") , (36939, 0, " ") , (36940, 0, "-") , (36941, 0, " ") , (36942, 0, "1") , (36943, 0, "]") , (36944, 0, ".") , (36945, 0, "n") , (36946, 0, "o") , (36947, 0, "d") , (36948, 0, "e") , (36949, 0, ";") , (37161, 12, "n") , (37162, 0, "e") , (37163, 0, "w") , (37164, 0, "_") , (37165, 0, "p") , (37166, 0, "a") , (37161, 6, "new_parent") , (2641, 0, "s") , (2645, 0, "[") , (2656, 0, "]") , (2661, 1, "") , (2660, 1, "") , (2660, 0, "t") , (2661, 0, "o") , (2661, 1, "") , (2660, 1, "") , (2660, 0, "a") , (2661, 0, "t") , (2688, 18, "") , (2688, 0, " where Self: Sized") , (2699, 0, ":") , (2700, 0, ":") , (2701, 0, "I") , (2702, 0, "t") , (2701, 2, "Item") , (2701, 4, "It") , (2699, 4, "") , (1809, 0, "\n") , (1810, 0, "i") , (1811, 0, "m") , (1812, 0, "p") , (1813, 0, "l") , (1814, 0, " ") , (1815, 0, "S") , (1816, 0, "i") , (1817, 0, "z") , (1818, 0, "e") , (1819, 0, "d") , (1820, 0, " ") , (1821, 0, "f") , (1822, 0, "o") , (1823, 0, "r") , (1824, 0, " ") , (1825, 0, "I") , (1826, 0, "t") , (1827, 0, "e") , (1828, 0, "m") , (1825, 4, "ItemMarker") , (1835, 0, " ") , (1836, 0, "{") , (1837, 0, "}") , (1814, 0, "<") , (1815, 0, "C") , (1816, 0, ":") , (1817, 0, " ") , (1818, 0, "L") , (1819, 0, "i") , (1820, 0, "s") , (1821, 0, "t") , (1818, 4, "ListConfig") , (1828, 0, ">") , (1850, 0, "<") , (1851, 0, "C") , (1852, 0, ">") , (1809, 47, "") , (1738, 0, " ") , (1739, 0, "+") , (1740, 0, " ") , (1741, 0, "S") , (1742, 0, "i") , (1743, 0, "z") , (1744, 0, "e") , (1745, 0, "d") , (2696, 19, " ") , (2696, 1, " where Self: Sized ") , (1738, 8, "") , (2715, 267, "") , (2713, 0, "// ") , (2615, 0, "// ") , (24334, 0, "\n ") , (24339, 0, "\n ") , (24335, 4, "") , (24340, 0, "p") , (24341, 0, "u") , (24342, 0, "b") , (24343, 0, " ") , (24344, 0, "f") , (24345, 0, "n") , (24346, 0, " ") , (24347, 0, "i") , (24348, 0, "t") , (24349, 0, "e") , (24350, 0, "r") , (24351, 0, "_") , (24352, 0, "a") , (24353, 0, "t") , (24354, 0, "_") , (24355, 0, "m") , (24356, 0, "a") , (24357, 0, "r") , (24358, 0, "k") , (24359, 0, "e") , (24360, 0, "r") , (24361, 0, "(") , (24362, 0, "&") , (24363, 0, "m") , (24364, 0, "u") , (24365, 0, "t") , (24366, 0, " ") , (24367, 0, "s") , (24368, 0, "e") , (24369, 0, "l") , (24370, 0, "f") , (24371, 0, ",") , (24372, 0, " ") , (24373, 0, "m") , (24374, 0, "a") , (24375, 0, "r") , (24376, 0, "k") , (24377, 0, "e") , (24378, 0, "r") , (24379, 0, ":") , (24380, 0, " ") , (24381, 0, "M") , (24382, 0, "a") , (24383, 0, "r") , (24384, 0, "k") , (24381, 4, "I") , (24382, 0, "t") , (24383, 0, "e") , (24384, 0, "m") , (24385, 0, "m") , (24381, 5, "ItemMarker") , (24391, 0, ")") , (24392, 0, " ") , (24393, 0, "-") , (24394, 0, ">") , (24395, 0, " ") , (24396, 0, "C") , (24397, 0, "u") , (24398, 0, "r") , (24399, 0, "s") , (24400, 0, "o") , (24401, 0, "r") , (24402, 0, " ") , (24403, 0, "{") , (24404, 0, "\n ") , (24413, 0, "\n ") , (24405, 8, "") , (24406, 8, " }") , (24405, 0, " ") , (24405, 8, "") , (24391, 0, "<") , (24392, 0, "C") , (24393, 0, ">") , (24405, 0, "<") , (24406, 0, "C") , (24407, 0, ">") , (24411, 0, " ") , (24419, 0, "/") , (24420, 0, "/") , (24421, 0, " ") , (24422, 0, "T") , (24423, 0, "h") , (24424, 0, "e") , (24425, 0, " ") , (24426, 0, "m") , (24427, 0, "a") , (24428, 0, "r") , (24429, 0, "k") , (24430, 0, "e") , (24431, 0, "r") , (24432, 0, " ") , (24433, 0, "g") , (24434, 0, "i") , (24435, 0, "v") , (24436, 0, "e") , (24437, 0, "s") , (24438, 0, " ") , (24439, 0, "u") , (24440, 0, "s") , (24441, 0, " ") , (24442, 0, "a") , (24443, 0, " ") , (24444, 0, "p") , (24445, 0, "o") , (24446, 0, "i") , (24447, 0, "n") , (24448, 0, "t") , (24449, 0, "e") , (24450, 0, "r") , (24451, 0, " ") , (24452, 0, "i") , (24453, 0, "n") , (24454, 0, "t") , (24455, 0, "o") , (24456, 0, " ") , (24457, 0, "a") , (24458, 0, " ") , (24459, 0, "n") , (24460, 0, "o") , (24461, 0, "d") , (24462, 0, "e") , (3554, 0, "\n") , (3555, 0, "\n") , (3556, 0, "\n") , (3557, 0, "s") , (3558, 0, "t") , (3559, 0, "r") , (3560, 0, "u") , (3561, 0, "c") , (3562, 0, "t") , (3563, 0, " ") , (3564, 0, "F") , (3565, 0, "o") , (3566, 0, "o") , (3567, 0, " ") , (3567, 1, "") , (3567, 0, "(") , (3568, 0, ")") , (3569, 0, "\n") , (3570, 0, "\n") , (3570, 1, "") , (3569, 1, "") , (3569, 0, ";") , (3570, 0, "\n") , (3571, 0, "\n") , (3572, 0, "i") , (3573, 0, "m") , (3574, 0, "p") , (3575, 0, "l") , (3576, 0, " ") , (3567, 0, "<") , (3568, 0, "T") , (3569, 0, ">") , (3571, 0, "&") , (3571, 1, "") , (3571, 0, "T") , (3581, 0, "F") , (3582, 0, "o") , (3583, 0, "o") , (3584, 0, " ") , (3585, 0, "{") , (3586, 0, "\n ") , (3591, 0, "\n ") , (3587, 4, "") , (3588, 4, "}") , (3580, 0, "<") , (3581, 0, "T") , (3582, 0, ">") , (3587, 0, "<") , (3588, 0, "T") , (3589, 0, ">") , (3593, 0, " ") , (3597, 0, "f") , (3598, 0, "n") , (3599, 0, " ") , (3600, 0, "b") , (3601, 0, "l") , (3602, 0, "a") , (3603, 0, "h") , (3604, 0, "(") , (3605, 0, ")") , (3606, 0, " ") , (3607, 0, "{") , (3608, 0, "\n ") , (3617, 0, "\n ") , (3609, 8, "") , (3610, 8, " }") , (3606, 0, " ") , (3607, 0, "w") , (3608, 0, "h") , (3609, 0, "e") , (3610, 0, "r") , (3611, 0, "e") , (3612, 0, " ") , (3613, 0, "T") , (3614, 0, ":") , (3615, 0, " ") , (3616, 0, "D") , (3617, 0, "e") , (3618, 0, "b") , (3619, 0, "u") , (3620, 0, "g") , (3616, 5, "C") , (3617, 0, "o") , (3618, 0, "p") , (3619, 0, "y") , (3631, 0, "\n") , (3632, 0, "\n") , (3633, 0, "f") , (3634, 0, "n") , (3635, 0, " ") , (3636, 0, "x") , (3637, 0, "(") , (3638, 0, ")") , (3639, 0, " ") , (3640, 0, "{") , (3641, 0, "\n ") , (3646, 0, "\n ") , (3642, 4, "") , (3643, 4, "}") , (3642, 0, " ") , (3646, 0, "F") , (3647, 0, "o") , (3648, 0, "o") , (3649, 0, "(") , (3650, 0, "3") , (3651, 0, ")") , (3646, 0, "l") , (3647, 0, "e") , (3648, 0, "t") , (3649, 0, " ") , (3650, 0, "x") , (3651, 0, " ") , (3652, 0, "=") , (3653, 0, " ") , (3660, 0, ";") , (3661, 0, "\n ") , (3666, 0, "x") , (3667, 0, ".") , (3668, 0, "b") , (3669, 0, "l") , (3670, 0, "a") , (3671, 0, "h") , (3672, 0, "(") , (3673, 0, ")") , (3674, 0, ";") , (3605, 0, "&") , (3606, 0, "s") , (3607, 0, "e") , (3608, 0, "l") , (3609, 0, "f") , (3663, 1, "") , (3663, 0, "F") , (3664, 0, "o") , (3665, 0, "o") , (3666, 0, "(") , (3667, 0, "3") , (3668, 0, ")") , (3556, 131, "") , (3555, 1, "") , (2721, 0, " ") , (2725, 4, "") , (1937, 12, "") , (2713, 0, "\n ") , (2718, 0, "f") , (2719, 0, "n") , (2720, 0, " ") , (2721, 0, "c") , (2722, 0, "o") , (2723, 0, "n") , (2724, 0, "t") , (2725, 0, "a") , (2726, 0, "i") , (2727, 0, "n") , (2728, 0, "s") , (2729, 0, "_") , (2730, 0, "i") , (2731, 0, "t") , (2732, 0, "e") , (2733, 0, "m") , (2734, 0, "(") , (2735, 0, "&") , (2735, 1, "") , (2735, 0, "*") , (2736, 0, "i") , (2737, 0, "t") , (2738, 0, "e") , (2739, 0, "m") , (2740, 0, ":") , (2741, 0, " ") , (2742, 0, "&") , (2743, 0, "S") , (2744, 0, "e") , (2745, 0, "l") , (2746, 0, "f") , (2747, 0, ":") , (2748, 0, ":") , (2749, 0, "I") , (2750, 0, "t") , (2751, 0, "e") , (2752, 0, "m") , (2753, 0, ",") , (2754, 0, " ") , (2735, 1, "") , (2754, 0, "q") , (2755, 0, "u") , (2756, 0, "e") , (2757, 0, "r") , (2758, 0, "y") , (2759, 0, ":") , (2760, 0, " ") , (2761, 0, "&") , (2762, 0, "S") , (2763, 0, "e") , (2764, 0, "l") , (2765, 0, "f") , (2766, 0, ":") , (2767, 0, ":") , (2768, 0, "I") , (2769, 0, "t") , (2770, 0, "e") , (2771, 0, "m") , (2772, 0, ")") , (2773, 0, " ") , (2774, 0, "-") , (2775, 0, ">") , (2776, 0, " ") , (2777, 0, "B") , (2777, 1, "") , (2777, 0, "b") , (2778, 0, "o") , (2779, 0, "o") , (2780, 0, "l") , (2781, 0, " ") , (2782, 0, "{") , (2783, 0, " ") , (2784, 0, "f") , (2785, 0, "a") , (2786, 0, "l") , (2787, 0, "s") , (2788, 0, "e") , (2789, 0, " ") , (2790, 0, "}") , (2784, 5, "") , (2784, 1, "") , (2783, 1, "") , (2783, 0, "\n \n ") , (2792, 0, "u") , (2793, 0, "n") , (2794, 0, "i") , (2795, 0, "m") , (2796, 0, "p") , (2797, 0, "l") , (2792, 6, "unimplemented!") , (2806, 0, "(") , (2807, 0, ")") , (2808, 0, ";") , (2807, 0, "\"") , (2808, 0, "I") , (2809, 0, "m") , (2810, 0, "p") , (2811, 0, "l") , (2812, 0, "e") , (2813, 0, "m") , (2814, 0, "e") , (2815, 0, "n") , (2816, 0, "t") , (2817, 0, "s") , (2817, 1, "") , (2817, 0, " ") , (2818, 0, "c") , (2819, 0, "o") , (2820, 0, "n") , (2821, 0, "t") , (2822, 0, "a") , (2823, 0, "i") , (2824, 0, "n") , (2825, 0, "s") , (2826, 0, "_") , (2827, 0, "i") , (2828, 0, "t") , (2829, 0, "e") , (2830, 0, "m") , (2831, 0, " ") , (2832, 0, "f") , (2833, 0, "o") , (2834, 0, "r") , (2835, 0, " ") , (2808, 28, "c") , (2809, 0, "o") , (2810, 0, "n") , (2811, 0, "t") , (2812, 0, "a") , (2808, 5, "m") , (2809, 0, "i") , (2810, 0, "s") , (2811, 0, "s") , (2812, 0, "i") , (2813, 0, "n") , (2814, 0, "g") , (2815, 0, " ") , (2816, 0, "c") , (2817, 0, "o") , (2818, 0, "n") , (2819, 0, "t") , (2820, 0, "a") , (2821, 0, "i") , (2822, 0, "n") , (2823, 0, "s") , (2824, 0, "_") , (2825, 0, "i") , (2826, 0, "t") , (2827, 0, "e") , (2828, 0, "m") , (2829, 0, " ") , (2830, 0, "i") , (2831, 0, "m") , (2832, 0, "p") , (2833, 0, "l") , (2834, 0, " ") , (2835, 0, "f") , (2836, 0, "o") , (2837, 0, "r") , (2838, 0, " ") , (2784, 57, "") , (2783, 1, "") , (2713, 76, "") , (2715, 0, "\n") , (2716, 0, "\n") , (2717, 0, "p") , (2718, 0, "u") , (2719, 0, "b") , (2720, 0, " ") , (2721, 0, "t") , (2722, 0, "r") , (2723, 0, "a") , (2724, 0, "i") , (2725, 0, "t") , (2726, 0, " ") , (2727, 0, "C") , (2728, 0, "o") , (2729, 0, "n") , (2730, 0, "t") , (2731, 0, "a") , (2732, 0, "i") , (2733, 0, "n") , (2734, 0, "s") , (2735, 0, " ") , (2736, 0, "{") , (2737, 0, "\n ") , (2742, 0, "\n ") , (2738, 4, "") , (2739, 4, "}") , ( 2738 , 0 , "\n fn contains_item(item: &Self::Item, query: &Self::Item) -> bool {\n }" ) , (2737, 1, "") , (2790, 6, "") , (2770, 6, "") , (2793, 8, "") , (2793, 0, ";") , (24482, 0, " ") , (24483, 0, "w") , (24484, 0, "h") , (24485, 0, "e") , (24486, 0, "r") , (24487, 0, "e") , (24488, 0, " ") , (24489, 0, "C") , (24490, 0, ":") , (24491, 0, ":") , (24492, 0, "I") , (24493, 0, "t") , (24494, 0, "e") , (24495, 0, "m") , (24496, 0, " ") , (24497, 0, ":") , (24497, 1, "") , (24496, 1, "") , (24496, 0, ":") , (24497, 0, " ") , (24498, 0, "C") , (24499, 0, "o") , (24500, 0, "n") , (24501, 0, "t") , (24502, 0, "a") , (24503, 0, "i") , (24504, 0, "n") , (24505, 0, "s") , (24561, 0, "\n ") , (24570, 0, "u") , (24571, 0, "n") , (24570, 2, "unimplemented!") , (24584, 0, "(") , (24585, 0, ")") , (24586, 0, ";") , (11918, 0, "p") , (11919, 0, "u") , (11920, 0, "b") , (11921, 0, " ") , (24574, 17, "") , (24472, 0, ",") , (24473, 0, " ") , (24474, 0, "q") , (24475, 0, "u") , (24476, 0, "e") , (24477, 0, "r") , (24478, 0, "y") , (24479, 0, ":") , (24480, 0, " ") , (24481, 0, "&") , (24482, 0, "I") , (24482, 1, "") , (24482, 0, "C") , (24483, 0, ":") , (24484, 0, ":") , (24485, 0, "I") , (24486, 0, "t") , (24487, 0, "e") , (24485, 3, "Item") , (24582, 0, ".") , (24583, 0, " ") , (24584, 0, "W") , (24585, 0, "e") , (24585, 1, "") , (24584, 1, "") , (24583, 1, "") , (24583, 0, " ") , (24584, 0, "F") , (24585, 0, "i") , (24586, 0, "n") , (24587, 0, "d") , (24588, 0, " ") , (24589, 0, "t") , (24590, 0, "h") , (24591, 0, "e") , (24592, 0, " ") , (24593, 0, "i") , (24594, 0, "t") , (24595, 0, "e") , (24596, 0, "m") , (2789, 0, "O") , (2790, 0, "p") , (2791, 0, "t") , (2792, 0, "i") , (2793, 0, "o") , (2794, 0, "n") , (2795, 0, "<") , (2796, 4, "u") , (2797, 0, "s") , (2798, 0, "i") , (2799, 0, "z") , (2800, 0, "e") , (2801, 0, ">") , (2737, 0, "\n ") , (2742, 0, "/") , (2743, 0, "/") , (2744, 0, " ") , (2745, 0, "T") , (2745, 1, "") , (2745, 0, "R") , (2746, 0, "e") , (2747, 0, "t") , (2748, 0, "u") , (2749, 0, "r") , (2750, 0, "n") , (2751, 0, "s") , (2752, 0, " ") , (2753, 0, "C") , (2754, 0, "o") , (2755, 0, "m") , (2756, 0, "e") , (2757, 0, "(") , (2757, 1, "") , (2756, 1, "") , (2755, 1, "") , (2754, 1, "") , (2753, 1, "") , (2753, 0, "S") , (2754, 0, "o") , (2755, 0, "m") , (2756, 0, "e") , (2757, 0, "(") , (2758, 0, "o") , (2759, 0, "f") , (2760, 0, "f") , (2761, 0, "s") , (2762, 0, "e") , (2763, 0, "t") , (2764, 0, ")") , (2765, 0, " ") , (2766, 0, "i") , (2767, 0, "n") , (2768, 0, "t") , (2769, 0, "o") , (2770, 0, " ") , (2771, 0, "t") , (2772, 0, "h") , (2773, 0, "e") , (2774, 0, " ") , (2775, 0, "i") , (2776, 0, "t") , (2777, 0, "e") , (2778, 0, "m") , (2779, 0, " ") , (2780, 0, "i") , (2781, 0, "f") , (2782, 0, " ") , (2783, 0, "i") , (2784, 0, "t") , (2785, 0, "s") , (2786, 0, " ") , (2787, 0, "c") , (2788, 0, "o") , (2789, 0, "n") , (2790, 0, "t") , (2791, 0, "a") , (2792, 0, "i") , (2793, 0, "n") , (2794, 0, "e") , (2795, 0, "d") , (2796, 0, ".") , (2797, 0, " ") , (2798, 0, "O") , (2799, 0, "t") , (2800, 0, "h") , (2801, 0, "e") , (2802, 0, "r") , (2803, 0, "w") , (2804, 0, "i") , (2805, 0, "s") , (2806, 0, "e") , (2807, 0, " ") , (2808, 0, "N") , (2809, 0, "o") , (2810, 0, "n") , (2811, 0, "e") , (2812, 0, ".") , (24682, 0, ".") , (24683, 0, "\n ") , (24692, 0, "l") , (24693, 0, "e") , (24694, 0, "t") , (24695, 0, " ") , (24696, 0, "&") , (24697, 0, "m") , (24698, 0, "u") , (24699, 0, "t") , (24700, 0, " ") , (24503, 0, "u") , (24504, 0, "n") , (24505, 0, "s") , (24506, 0, "a") , (24507, 0, "f") , (24508, 0, "e") , (24509, 0, " ") , (24503, 7, "") , (24506, 0, " ") , (24507, 0, "p") , (24508, 0, "u") , (24508, 1, "") , (24507, 1, "") , (24507, 0, "u") , (24508, 0, "n") , (24509, 0, "s") , (24510, 0, "a") , (24511, 0, "f") , (24512, 0, "e") , (24708, 0, "n") , (24709, 0, "o") , (24710, 0, "d") , (24711, 0, "e") , (24712, 0, " ") , (24713, 0, "=") , (24714, 0, " ") , (24715, 0, "m") , (24716, 0, "a") , (24717, 0, "r") , (24718, 0, "k") , (24719, 0, "e") , (24720, 0, "r") , (24721, 0, ".") , (24506, 7, "") , (24683, 0, "\n ") , (24692, 0, "u") , (24693, 0, "n") , (24694, 0, "s") , (24695, 0, "a") , (24696, 0, "f") , (24697, 0, "e") , (24698, 0, " ") , (24699, 0, "{") , (24709, 0, " ") , (24735, 1, "") , (24735, 0, ".") , (24736, 0, "ptr") , (24739, 0, ";") , (24729, 0, "*") , (24729, 1, "") , (24729, 0, "&") , (24730, 0, "*") , (24730, 0, "m") , (24731, 0, "u") , (24732, 0, "t") , (24733, 0, " ") , (24747, 8, " }") , (24746, 0, "\n ") , (24759, 0, "\n ") , (24747, 12, "") , (24760, 0, "f") , (24761, 0, "o") , (24762, 0, "r") , (24763, 0, " ") , (24764, 0, "i") , (24765, 0, "t") , (24766, 0, "e") , (24767, 0, "m") , (24768, 0, " ") , (24769, 0, "i") , (24770, 0, "n") , (24771, 0, " ") , (24772, 0, "n") , (24773, 0, "o") , (24774, 0, "d") , (24775, 0, "e") , (24776, 0, ".") , (24777, 0, "c") , (24778, 0, "o") , (24779, 0, "n") , (24780, 0, "t") , (24781, 0, "e") , (24782, 0, "n") , (24783, 0, "t") , (24784, 0, "_") , (24777, 8, "content_slice") , (24790, 0, "(") , (24791, 0, ")") , (24792, 0, " ") , (24793, 0, "{") , (24794, 0, "\n ") , (24811, 0, "\n ") , (24795, 16, "") , (24796, 16, " }") , (24795, 0, " ") , (24825, 0, "\n ") , (24795, 16, "") , (24822, 0, "\n ") , (24810, 12, "") , (24823, 0, "u") , (24824, 0, "n") , (24825, 0, "i") , (24826, 0, "m") , (24823, 4, "unimplemented!") , (24837, 0, "(") , (24838, 0, ")") , (24839, 0, ";") , (24795, 0, " ") , (24795, 16, "") , (24733, 1, "") , (24732, 1, "") , (24731, 1, "") , (24730, 1, "") , (24718, 3, "") , (24718, 1, "") , (24726, 1, "") , (24725, 1, "") , (24717, 5, "n") , (24762, 0, ")") , (24758, 0, "(") , (24759, 4, "*") , (24760, 0, "n") , (24781, 0, " ") , (24797, 0, "i") , (24798, 0, "t") , (24799, 0, "e") , (24800, 0, "m") , (24801, 0, ".") , (24802, 0, "c") , (24803, 0, "o") , (24804, 0, "n") , (24805, 0, "t") , (24806, 0, "a") , (24807, 0, "i") , (24808, 0, "n") , (24809, 0, "s") , (24802, 8, "contains") , (24810, 0, "(") , (24810, 1, "") , (24810, 0, "_") , (24811, 0, "i") , (24812, 0, "t") , (24813, 0, "e") , (24802, 12, "contains_item") , (24815, 0, "(") , (24816, 0, "q") , (24817, 0, "u") , (24818, 0, "e") , (24819, 0, "r") , (24820, 0, "y") , (24821, 0, ")") , (2835, 6, "") , (2836, 4, "s") , (2837, 0, "e") , (2838, 0, "l") , (2839, 0, "f") , (24791, 0, "i") , (24792, 0, "f") , (24793, 0, " ") , (24794, 0, "l") , (24795, 0, "e") , (24796, 0, "t") , (24797, 0, " ") , (24798, 0, "S") , (24799, 0, "o") , (24800, 0, "m") , (24801, 0, "e") , (24802, 0, "(") , (24803, 0, "o") , (24804, 0, "f") , (24805, 0, "f") , (24806, 0, "s") , (24807, 0, "e") , (24808, 0, "t") , (24809, 0, ")") , (24810, 0, " ") , (24811, 0, "=") , (24812, 0, " ") , (24838, 0, " ") , (24839, 0, "{") , (24840, 0, "\n ") , (24861, 0, "\n ") , (24841, 20, "") , (24842, 20, " }") , (24841, 0, " ") , (24841, 20, "") , (24727, 0, "\n ") , (24740, 0, "l") , (24741, 0, "e") , (24742, 0, "t") , (24743, 0, " ") , (24744, 0, "o") , (24745, 0, "f") , (24746, 0, "f") , (24747, 0, "s") , (24748, 0, "e") , (24749, 0, "t") , (24749, 0, "m") , (24750, 0, "u") , (24750, 1, "") , (24749, 1, "") , (24744, 0, "m") , (24745, 0, "u") , (24746, 0, "t") , (24747, 0, " ") , (24754, 0, ":") , (24755, 0, " ") , (24756, 0, "i") , (24757, 0, "s") , (24757, 1, "") , (24756, 1, "") , (24756, 0, "s") , (24757, 0, "i") , (24757, 1, "") , (24756, 1, "") , (24756, 0, "u") , (24757, 0, "s") , (24758, 0, "i") , (24759, 0, "z") , (24760, 0, "e") , (24761, 0, " ") , (24762, 0, "=") , (24763, 0, " ") , (24764, 0, "0") , (24765, 0, ";") , (24898, 0, " ") , (24899, 0, "e") , (24900, 0, "l") , (24901, 0, "s") , (24902, 0, "e") , (24903, 0, " ") , (24904, 0, "{") , (24905, 0, "\n ") , (24906, 20, " }") , (24842, 0, "i") , (24843, 0, "t") , (24844, 0, "e") , (24845, 0, "m") , (24846, 0, "_") , (24910, 0, "\n ") , (24931, 0, "o") , (24932, 0, "f") , (24933, 0, "f") , (24934, 0, "s") , (24935, 0, "e") , (24936, 0, "t") , (24937, 0, " ") , (24938, 0, "+") , (24939, 0, "=") , (24940, 0, " ") , (24941, 0, "C") , (24942, 0, ":") , (24943, 0, ":") , (24944, 0, "get_usersize(_item: &Self::Item)") , (24957, 18, "i") , (24958, 0, "t") , (24959, 0, "e") , (24960, 0, "m") , (24962, 0, ";") , (24885, 0, " ") , (24905, 0, "o") , (24906, 0, "f") , (24907, 0, "f") , (24908, 0, "s") , (24909, 0, "e") , (24910, 0, "t") , (24911, 0, " ") , (24912, 0, "+") , (24913, 0, "=") , (24914, 0, " ") , (24915, 0, "i") , (24916, 0, "t") , (24917, 0, "e") , (24918, 0, "m") , (24915, 4, "item_offset") , (24926, 0, ";") , (24927, 0, "\n ") , (24948, 0, "b") , (24949, 0, "r") , (24950, 0, "e") , (24951, 0, "a") , (24952, 0, "k") , (24953, 0, ";") , (25064, 0, "\n ") , (25077, 0, "/") , (25078, 0, "/") , (25079, 0, " ") , (25080, 0, "t") , (25081, 0, "O") , (25082, 0, "D") , (25082, 1, "") , (25081, 1, "") , (25080, 1, "") , (25080, 0, "T") , (25081, 0, "O") , (25082, 0, "D") , (25083, 0, "O") , (25084, 0, ":") , (25085, 0, " ") , (25086, 0, "T") , (25087, 0, "h") , (25088, 0, "r") , (25089, 0, "o") , (25086, 4, "P") , (25087, 0, "a") , (25088, 0, "n") , (25089, 0, "i") , (25090, 0, "c") , (25091, 0, " ") , (25092, 0, "i") , (25093, 0, "f") , (25094, 0, " ") , (25095, 0, "t") , (25096, 0, "h") , (25097, 0, "e") , (25098, 0, " ") , (25099, 0, "i") , (25100, 0, "t") , (25101, 0, "e") , (25102, 0, "m") , (25103, 0, " ") , (25104, 0, "i") , (25105, 0, "s") , (25106, 0, "n") , (25107, 0, "'") , (25108, 0, "t") , (25109, 0, " ") , (25110, 0, "f") , (25111, 0, "o") , (25112, 0, "u") , (25113, 0, "n") , (25114, 0, "d") , (25115, 0, ".") , (25116, 0, " ") , (25117, 0, "T") , (25117, 1, "") , (25117, 0, "C") , (25118, 0, "u") , (25119, 0, "r") , (25120, 0, "r") , (25121, 0, "e") , (25122, 0, "n") , (25123, 0, "t") , (24766, 0, "\n ") , (24779, 0, "l") , (24780, 0, "e") , (24781, 0, "t") , (24782, 0, " ") , (24783, 0, "m") , (24784, 0, "u") , (24785, 0, "t") , (24786, 0, " ") , (24787, 0, "f") , (24788, 0, "o") , (24789, 0, "u") , (24790, 0, "n") , (24791, 0, "d") , (24792, 0, " ") , (24793, 0, "=") , (24794, 0, " ") , (24795, 0, "f") , (24796, 0, "a") , (24797, 0, "l") , (24798, 0, "s") , (24799, 0, "e") , (24800, 0, ";") , (24962, 0, "\n ") , (24983, 0, "f") , (24984, 0, "o") , (24985, 0, "u") , (24986, 0, "n") , (24987, 0, "d") , (24988, 0, " ") , (24989, 0, "=") , (24990, 0, " ") , (24991, 0, "t") , (24992, 0, "r") , (24993, 0, "u") , (24994, 0, "e") , (24995, 0, ";") , (25146, 47, "") , (25146, 0, "a") , (25147, 0, "s") , (25148, 0, "s") , (25149, 0, "e") , (25150, 0, "r") , (25151, 0, "t") , (25152, 0, "(") , (25152, 1, "") , (25152, 0, "!") , (25153, 0, "(") , (25154, 0, "f") , (25155, 0, "o") , (25156, 0, "u") , (25157, 0, "n") , (25158, 0, "d") , (25159, 0, ")") , (25160, 0, ";") , (25159, 0, ",") , (25160, 0, " ") , (25161, 0, "\"") , (25162, 0, "M") , (25162, 1, "") , (25162, 0, "I") , (25163, 0, "n") , (25164, 0, "v") , (25165, 0, "a") , (25166, 0, "l") , (25167, 0, "i") , (25168, 0, "d") , (25169, 0, " ") , (25170, 0, "m") , (25171, 0, "a") , (25172, 0, "r") , (25173, 0, "k") , (25174, 0, " ") , (25175, 0, "e") , (25175, 1, "") , (25174, 1, "") , (25174, 0, "e") , (25175, 0, "r") , (25176, 0, " ") , (25177, 0, "-") , (25178, 0, " ") , (25179, 0, "i") , (25180, 0, "t") , (25181, 0, "e") , (25182, 0, "m") , (25183, 0, " ") , (25184, 0, "n") , (25185, 0, "o") , (25186, 0, "t") , (25187, 0, " ") , (25188, 0, "f") , (25189, 0, "o") , (25190, 0, "u") , (25191, 0, "n") , (25192, 0, "d") , (25193, 0, " ") , (25194, 0, "i") , (25195, 0, "n") , (25196, 0, " ") , (25197, 0, "n") , (25198, 0, "o") , (25199, 0, "d") , (25200, 0, "e") , (25201, 0, "\"") , (25204, 0, "\n ") , (25217, 0, "\n ") , (25205, 12, "") , (25218, 0, "/") , (25219, 0, "/") , (25220, 0, " ") , (25221, 0, "N") , (25222, 0, "o") , (25223, 0, "w") , (25224, 0, " ") , (25225, 0, "w") , (25226, 0, "e") , (25227, 0, " ") , (25228, 0, "n") , (25229, 0, "e") , (25230, 0, "e") , (25231, 0, "d") , (25232, 0, " ") , (25233, 0, "t") , (25234, 0, "o") , (25235, 0, " ") , (25236, 0, "m") , (25237, 0, "a") , (25238, 0, "k") , (25239, 0, "e") , (25240, 0, " ") , (25241, 0, "a") , (25242, 0, " ") , (25243, 0, "c") , (25244, 0, "u") , (25245, 0, "r") , (25246, 0, "s") , (25247, 0, "o") , (25248, 0, "r") , (25249, 0, " ") , (25250, 0, "a") , (25251, 0, "t") , (25252, 0, " ") , (25253, 0, "t") , (25254, 0, "h") , (25255, 0, "e") , (25256, 0, " ") , (25257, 0, "u") , (25258, 0, "s") , (25259, 0, "e") , (25260, 0, "r") , (25261, 0, "p") , (25262, 0, "o") , (25263, 0, "s") , (25264, 0, ".") , (25256, 0, " ") , (25257, 0, "n") , (25258, 0, "o") , (25259, 0, "d") , (25260, 0, "e") , (25261, 0, "/") , (25262, 1, "") , (25269, 0, " ") , (25270, 0, "p") , (25271, 0, "a") , (25272, 0, "i") , (25273, 0, "r") , (25270, 0, "l") , (25271, 0, "o") , (25272, 0, "c") , (25273, 0, "a") , (25274, 0, "t") , (25275, 0, "i") , (25276, 0, "o") , (25277, 0, "n") , (25278, 0, " ") , (25284, 0, "\n ") , (25297, 0, "l") , (25298, 0, "e") , (25299, 0, "t") , (25300, 0, " ") , (25301, 0, "c") , (25302, 0, "u") , (25303, 0, "r") , (25304, 0, "s") , (25305, 0, "o") , (25305, 1, "") , (25301, 4, "cursor") , (25307, 0, " ") , (25308, 0, "=") , (25309, 0, " ") , (25310, 0, "C") , (25311, 0, "u") , (25312, 0, "r") , (25313, 0, "s") , (25314, 0, "o") , (25315, 0, "r") , (25316, 0, " ") , (25317, 0, "{") , (25318, 0, "\n ") , (25335, 0, "\n ") , (25319, 16, "") , (25320, 16, " }") , (25333, 0, ";") , (25319, 0, " ") , (25335, 0, "e") , (25336, 0, "n") , (25337, 0, "t") , (25335, 3, "eprint!") , (25335, 7, "ent") , (25338, 0, "e") , (25335, 4, "") , (25335, 0, "e") , (25336, 0, "n") , (25337, 0, "t") , (25338, 0, "r") , (25339, 0, "i") , (25340, 0, "e") , (25341, 0, "s") , (25342, 0, ":") , (25343, 0, " ") , (25344, 0, "[") , (25345, 0, "]") , (25316, 0, "<") , (25317, 0, "C") , (25318, 0, ">") , (25318, 1, "") , (25317, 1, "") , (25316, 1, "") , (25318, 0, "\n ") , (25335, 0, "u") , (25336, 0, "s") , (25337, 0, "e") , (25338, 0, "r") , (25339, 0, "p") , (25340, 0, "o") , (25341, 0, "s") , (25342, 0, ":") , (25343, 0, " ") , (25344, 0, "0") , (25345, 0, ",") , (25346, 0, "\n ") , (25363, 0, "l") , (25364, 0, "o") , (25365, 0, "c") , (25366, 0, "a") , (25367, 0, "l") , (25368, 0, "_") , (25369, 0, "i") , (25370, 0, "n") , (25371, 0, "d") , (25363, 9, "local_index") , (25374, 0, ":") , (25375, 0, " ") , (25376, 0, "0") , (25377, 0, ",") , (24787, 14, "") , (24787, 0, "l") , (24788, 0, "o") , (24789, 0, "c") , (24790, 0, "a") , (24791, 0, "l") , (24792, 0, "_") , (24793, 0, "i") , (24794, 0, "n") , (24795, 0, "d") , (24796, 0, "e") , (24797, 0, "x") , (24798, 0, " ") , (24799, 0, "=") , (24800, 0, " ") , (24801, 0, "N") , (24802, 0, "o") , (24803, 0, "n") , (24804, 0, "e") , (24805, 0, ";") , (24988, 13, "") , (24988, 0, "l") , (24989, 0, "o") , (24990, 0, "c") , (24991, 0, "a") , (24992, 0, "l") , (24993, 0, "_") , (24988, 6, "local_index") , (24999, 0, " ") , (25000, 0, "=") , (25001, 0, " ") , (25002, 0, "S") , (25003, 0, "o") , (25004, 0, "m") , (25005, 0, "e") , (25006, 0, "(") , (24851, 0, ".") , (24852, 0, "e") , (24853, 0, "n") , (24854, 0, "u") , (24855, 0, "m") , (24852, 4, "enumerate") , (24861, 0, "(") , (24862, 0, ")") , (24823, 0, "(") , (24824, 0, "i") , (24825, 0, ")") , (24825, 1, "") , (24825, 0, ",") , (24826, 0, " ") , (24831, 0, ")") , (24856, 0, ".") , (24857, 0, "i") , (24858, 0, "t") , (24859, 0, "e") , (24860, 0, "r") , (24861, 0, "(") , (24862, 0, ")") , (25031, 0, "i") , (25032, 0, ")") , (25033, 0, ";") , (25184, 14, "") , (25184, 0, "l") , (25185, 0, "e") , (25186, 0, "t") , (25187, 0, " ") , (25188, 0, "l") , (25189, 0, "o") , (25190, 0, "c") , (25191, 0, "a") , (25192, 0, "l") , (25193, 0, "_") , (25194, 0, "i") , (25195, 0, "n") , (25196, 0, "d") , (25197, 0, "e") , (25198, 0, "x") , (25199, 0, " ") , (25200, 0, "=") , (25201, 0, " ") , (25202, 0, "u") , (25202, 1, "") , (25202, 0, "l") , (25203, 0, "o") , (25204, 0, "c") , (25205, 0, "a") , (25206, 0, "l") , (25202, 5, "local_index") , (25213, 0, ".") , (25214, 0, "u") , (25215, 0, "n") , (25214, 2, "") , (25213, 1, "") , (25213, 0, ".") , (25214, 0, "e") , (25215, 0, "x") , (25216, 0, "p") , (25217, 0, "e") , (25214, 4, "expect(msg: &str)") , (25221, 9, "") , (25221, 1, "") , (25221, 1, "") , (25202, 61, "") , (25172, 31, "") , (25171, 1, "") , (25343, 1, "") , ( 25343 , 0 , "local_index.expect(\"Invalid marker - item not found in node\")" ) , (25311, 1, "") , (25311, 0, "o") , (25312, 0, "f") , (25313, 0, "f") , (25314, 0, "s") , (25315, 0, "e") , (25316, 0, "t") , (25311, 6, "") , (25311, 0, "0") , ( 25432 , 0 , "\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX" ) , (25489, 16, " ") , (25433, 16, " ") , (25538, 0, "\n ") , (25539, 20, " ") , ( 25431 , 125 , "[SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT]," ) , (25542, 12, " ") , (25500, 16, " ") , (25444, 16, " ") , (25610, 17, "r") , (25611, 0, "e") , (25612, 0, "t") , (25613, 0, "u") , (25614, 0, "r") , (25615, 0, "n") , (25616, 0, " ") , (25617, 0, "c") , (25618, 0, "r") , (25618, 1, "") , (25610, 8, "") , (25610, 0, "c") , (25611, 0, "u") , (25612, 0, "r") , (25613, 0, "s") , (25614, 0, "o") , (25615, 0, "r") , (25596, 0, "\n ") , (25609, 0, "\n ") , (25597, 12, "") , (25610, 0, "f") , (25611, 0, "o") , (25612, 0, "r") , (25613, 0, " ") , (25614, 0, "i") , (25615, 0, " ") , (25616, 0, "i") , (25617, 0, "n") , (25618, 0, " ") , (25619, 0, "0") , (25619, 1, "") , (25619, 0, "0") , (25620, 0, ".") , (25621, 0, ".") , (25622, 0, "s") , (25623, 0, "e") , (25624, 0, "l") , (25625, 0, "f") , (25626, 0, ".") , (25627, 0, "h") , (25628, 0, "e") , (25629, 0, "i") , (25629, 1, "") , (25628, 1, "") , (25627, 1, "") , (25627, 0, "h") , (25628, 0, "e") , (25629, 0, "a") , (25630, 0, "d") , (25631, 0, ".") , (25632, 0, "h") , (25633, 0, "e") , (25634, 0, "i") , (25632, 3, "height") , (25638, 0, " ") , (25639, 0, "a") , (25640, 0, "s") , (25641, 0, " ") , (25642, 0, "u") , (25643, 0, "s") , (25644, 0, "i") , (25645, 0, "z") , (25646, 0, "e") , (25647, 0, " ") , (25648, 0, "{") , (25649, 0, "\n ") , (25666, 0, "\n ") , (25650, 16, "") , (25651, 16, " }") , (25650, 0, " ") , (25650, 16, "") , (25596, 0, "\n ") , (25609, 0, "\n ") , (25597, 12, "") , (25610, 0, "c") , (25611, 0, "u") , (25612, 0, "r") , (25613, 0, "s") , (25614, 0, "o") , (25615, 0, "r") , (25616, 0, ".") , (25617, 0, "e") , (25618, 0, "n") , (25619, 0, "t") , (25620, 0, "r") , (25621, 0, "i") , (25622, 0, "e") , (25623, 0, "s") , (25624, 0, "[") , (25625, 0, "0") , (25626, 0, "]") , (25627, 0, " ") , (25628, 0, "=") , (25629, 0, " ") , (25630, 0, "S") , (25631, 0, "k") , (25632, 0, "i") , (25633, 0, "p") , (25630, 4, "SkipEntry") , (25639, 0, " ") , (25640, 0, "{") , (25641, 0, "\n ") , (25658, 0, "\n ") , (25642, 16, "") , (25643, 16, " }") , (25656, 0, ";") , (25642, 0, " ") , (25658, 0, "n") , (25659, 0, "o") , (25660, 0, "d") , (25661, 0, "e") , (25662, 0, ":") , (25663, 0, " ") , (25664, 0, "n") , (25665, 0, ",") , (25666, 0, "\n ") , (25683, 0, "s") , (25684, 0, "k") , (25685, 0, "i") , (25686, 0, "p") , (25687, 0, "_") , (25688, 0, "u") , (25689, 0, "s") , (25690, 0, "e") , (25691, 0, "r") , (25692, 0, "s") , (25693, 0, "i") , (25683, 11, "skip_usersize") , (25696, 0, ":") , (25697, 0, " ") , (25698, 0, "o") , (25699, 0, "f") , (25700, 0, "f") , (25701, 0, "s") , (25702, 0, "e") , (25703, 0, "t") , (25268, 0, "m") , (25269, 0, "u") , (25270, 0, "t") , (25271, 0, " ") , (25777, 0, " ") , (25777, 16, "") , (25746, 1, "") , (25746, 0, "1") , (25777, 0, " ") , (25777, 16, "") , (24710, 0, " ") , (24711, 0, "m") , (24712, 0, "u") , (24713, 0, "t") , (25781, 0, " ") , (25797, 0, "n") , (25798, 0, " ") , (25799, 0, "=") , (25800, 0, " ") , (25801, 0, "n") , (25802, 0, ".") , (25802, 1, "") , (25801, 1, "") , (25801, 0, "(") , (25802, 0, "*") , (25803, 0, "n") , (25804, 0, ")") , (25805, 0, ".") , (25806, 0, "p") , (25807, 0, "a") , (25808, 0, "r") , (25809, 0, "e") , (25810, 0, "n") , (25811, 0, "t") , (25812, 0, "r") , (25812, 1, "") , (25812, 0, ";") , (25813, 0, "\n ") , (25830, 0, "/") , (25831, 0, "/") , (25832, 0, " ") , (25833, 0, "A") , (25834, 0, "n") , (25835, 0, "d") , (25836, 0, " ") , (25837, 0, "f") , (25838, 0, "i") , (25839, 0, "n") , (25840, 0, "d") , (25841, 0, " ") , (25842, 0, "t") , (25843, 0, "h") , (25844, 0, "e") , (25845, 0, " ") , (25846, 0, "o") , (25847, 0, "f") , (25848, 0, "f") , (25849, 0, "s") , (25850, 0, "e") , (25851, 0, "t") , (25846, 6, "l") , (25847, 0, "o") , (25848, 0, "c") , (25849, 0, "a") , (25850, 0, "l") , (25851, 0, " ") , (25852, 0, "o") , (25853, 0, "f") , (25854, 0, "f") , (25855, 0, "s") , (25856, 0, "e") , (25857, 0, "t") , (25858, 0, ".") , (25859, 0, " ") , (25860, 0, "N") , (25861, 0, "o") , (25862, 0, "t") , (25863, 0, "e") , (25878, 0, "\n ") , (25891, 0, "a") , (25892, 0, "s") , (25893, 0, "d") , (25894, 0, "f") , (25895, 0, "j") , (25896, 0, "h") , (25897, 0, "a") , (25898, 0, "s") , (25899, 0, "k") , (25900, 0, "d") , (25901, 0, "f") , (25902, 0, "j") , (25903, 0, "h") , (25891, 13, "u") , (25892, 0, "n") , (25891, 2, "unimplemented!") , (25905, 0, "(") , (25906, 0, ")") , (25907, 0, ";") , (2727, 8, "I") , (2728, 0, "t") , (2729, 0, "e") , (2730, 0, "m") , (2731, 0, "Q") , (2732, 0, "u") , (2733, 0, "e") , (2734, 0, "r") , (2735, 0, "y") , (2738, 0, "\n ") , (2743, 0, "t") , (2744, 0, "y") , (2745, 0, "p") , (2746, 0, "e") , (2747, 0, " ") , (2748, 0, "Q") , (2749, 0, "u") , (2750, 0, "e") , (2751, 0, "r") , (2752, 0, "y") , (2753, 0, ":") , (2754, 0, " ") , (2754, 1, "") , (2753, 1, "") , (2753, 0, ";") , (2754, 0, "\n ") , (2872, 4, "Q") , (2755, 4, "") , (2869, 0, "u") , (2870, 0, "e") , (2871, 0, "r") , (2872, 0, "y") , (2868, 0, "S") , (2869, 0, "e") , (2870, 0, "l") , (2871, 0, "f") , (2872, 0, ":") , (2873, 0, ":") , (2743, 0, "// ") , (2763, 3, "") , (2763, 0, "// ") , (2743, 3, "") , (2727, 9, "Q") , (2728, 0, "u") , (2729, 0, "e") , (2730, 0, "r") , (2731, 0, "y") , (2732, 0, "a") , (2733, 0, "b") , (2734, 0, "l") , (2735, 0, "e") , (24543, 0, "<") , (24544, 0, "Q") , (24545, 0, ":") , (24546, 0, " ") , (24547, 0, "Q") , (24548, 0, "u") , (24549, 0, "e") , (24550, 0, "r") , (24547, 4, "Queryable") , (24556, 0, ">") , (24600, 7, "") , (24600, 0, "Q") , (24601, 0, ":") , (24602, 0, ":") , (24603, 0, "Q") , (24604, 0, "u") , (24605, 0, "e") , (24606, 0, "r") , (24607, 0, "y") , (24543, 14, "") , (24543, 0, "") , (24545, 11, "") , (24627, 8, "Q") , (24628, 0, "u") , (24629, 0, "e") , (24630, 0, "r") , (24627, 4, "Queryable") , (24545, 1, "") , (24544, 1, "") , (24543, 1, "") , (24586, 1, "") , (24586, 0, "(") , (24587, 0, "C") , (24588, 0, ":") , (24589, 0, ":") , (24590, 0, "I") , (24591, 0, "t") , (24592, 0, "e") , (24593, 0, "m") , (24594, 0, " ") , (24595, 0, "a") , (24596, 0, "s") , (24597, 0, " ") , (24597, 1, "") , (24596, 1, "") , (24595, 1, "") , (24594, 1, "") , (24594, 0, " ") , (24595, 0, "a") , (24596, 0, "s") , (24597, 0, " ") , (24598, 0, "Q") , (24599, 0, "u") , (24600, 0, "e") , (24601, 0, "r") , (24602, 0, "y") , (24598, 5, "Queryable") , (24607, 0, ">") , (24607, 1, "") , (24607, 0, ">") , (24586, 1, "") , (24586, 0, "<") , (24586, 1, "") , (24586, 0, "(") , (24607, 1, "") , (24607, 0, ")") , (24594, 14, "") , (24586, 1, "") , (24586, 0, "<") , (24594, 0, " ") , (24595, 0, "a") , (24596, 0, "s") , (24597, 0, " ") , (24598, 0, "Q") , (24599, 0, "u") , (24600, 0, "e") , (24601, 0, "r") , (24602, 0, "y") , (24603, 0, "a") , (24604, 0, "b") , (24605, 0, "l") , (24606, 0, "e") , (24607, 0, ">") , (24615, 1, "") , (24615, 0, ")") , (24516, 0, "\n ") , (24521, 0, "\n ") , (24517, 4, "") , (24522, 0, "p") , (24523, 0, "u") , (24524, 0, "b") , (24525, 0, " ") , (24526, 0, "f") , (24527, 0, "n") , (24528, 0, " ") , (24529, 0, "i") , (24530, 0, "t") , (24531, 0, "e") , (24532, 0, "r") , (24533, 0, "_") , (24534, 0, "a") , (24535, 0, "t") , (24536, 0, "_") , (24537, 0, "n") , (24538, 0, "o") , (24539, 0, "d") , (24540, 0, "e") , (24541, 0, "(") , (24542, 0, "&") , (24543, 0, "m") , (24544, 0, "u") , (24545, 0, "t") , (24546, 0, " ") , (24547, 0, "s") , (24548, 0, "e") , (24549, 0, "l") , (24550, 0, "f") , (24551, 0, ",") , (24552, 0, " ") , (24553, 0, "n") , (24554, 0, "o") , (24555, 0, "d") , (24556, 0, "e") , (24557, 0, ":") , (24558, 0, " ") , (24559, 0, "&") , (24559, 1, "") , (24559, 0, "*") , (24560, 0, "m") , (24561, 0, "u") , (24562, 0, "t") , (24563, 0, " ") , (24564, 0, "N") , (24565, 0, "o") , (24566, 0, "d") , (24567, 0, "e") , (24568, 0, ")") , (24569, 0, " ") , (24570, 0, "{") , (24571, 0, "\n ") , (24580, 0, "\n ") , (24572, 8, "") , (24573, 8, " }") , (24568, 0, "<") , (24569, 0, "C") , (24570, 0, ">") , (24522, 4, "") , (24568, 0, " ") , (24569, 0, "-") , (24570, 0, ">") , (24571, 0, " ") , (24572, 0, "C") , (24573, 0, "u") , (24574, 0, "r") , (24575, 0, "s") , (24576, 0, "o") , (24572, 5, "Cursor") , (24578, 0, "<") , (24579, 0, "C") , (24580, 0, ">") , (24522, 0, "u") , (24523, 0, "n") , (24524, 0, "s") , (24525, 0, "a") , (24526, 0, "f") , (24527, 0, "e") , (24528, 0, " ") , ( 24591 , 0 , "\n // Now we need to make a cursor at the node/userpos location pair.\n let mut cursor = Cursor {\n userpos: 0,\n local_index: local_index.expect(\"Invalid marker - item not found in node\"),\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };" ) , (24591, 0, " ") , (24599, 0, "l") , (24600, 0, "e") , (24601, 0, "t") , (24602, 0, " ") , (24603, 0, "m") , (24604, 0, "u") , (24605, 0, "t") , (24606, 0, " ") , (24607, 0, "o") , (24608, 0, "f") , (24609, 0, "f") , (24610, 0, "s") , (24611, 0, "e") , (24612, 0, "t") , (24613, 0, " ") , (24614, 0, "=") , (24615, 0, " ") , (24616, 0, "0") , (24617, 0, ";") , (24574, 0, ",") , (24575, 0, " ") , (24576, 0, "s") , (24577, 0, "i") , (24577, 1, "") , (24576, 1, "") , (24576, 0, "o") , (24577, 0, "f") , (24578, 0, "f") , (24579, 0, "s") , (24580, 0, "e") , (24581, 0, "t") , (24582, 0, ":") , (24583, 0, " ") , (24584, 0, "s") , (24585, 0, "i") , (24586, 0, "z") , (24587, 0, "e") , (24588, 0, "_") , (24588, 1, "") , (24587, 1, "") , (24586, 1, "") , (24585, 1, "") , (24584, 1, "") , (24584, 0, "u") , (24585, 0, "s") , (24586, 0, "i") , (24587, 0, "z") , (24588, 0, "e") , (24606, 27, "") , (24605, 1, "") , (24576, 0, "m") , (24577, 0, "u") , (24578, 0, "t") , (24579, 0, " ") , (25023, 12, " ") , (24991, 16, " ") , (24945, 20, " ") , (24885, 20, " ") , (24847, 16, " ") , (24755, 16, " ") , (24727, 16, " ") , (24689, 12, " ") , (24610, 12, " ") , (24610, 74, "") , (24609, 1, "") , (24667, 0, " ") , (24668, 0, "/") , (24669, 0, "/") , (24670, 0, " ") , (24671, 0, "W") , (24672, 0, "e") , (24673, 0, "'") , (24674, 0, "l") , (24675, 0, "l") , (24676, 0, " ") , (24677, 0, "s") , (24678, 0, "e") , (24679, 0, "t") , (24680, 0, " ") , (24681, 0, "t") , (24682, 0, "h") , (24683, 0, "i") , (24684, 0, "s") , (24685, 0, " ") , (24686, 0, "l") , (24687, 0, "a") , (24688, 0, "t") , (24689, 0, "e") , (24690, 0, "r") , (24691, 0, ".") , (24718, 61, "") , (24718, 0, "u") , (24719, 0, "s") , (24720, 0, "i") , (24721, 0, "z") , (24722, 0, "e") , (24723, 0, ":") , (24724, 0, ":") , (24725, 0, "M") , (24726, 0, "A") , (24727, 0, "X") , (24729, 0, " ") , (24730, 0, "/") , (24731, 0, "/") , (24732, 0, " ") , (24733, 0, "s") , (24734, 0, "e") , (24735, 0, "t") , (24733, 3, "m") , (24734, 0, "u") , (24735, 0, "s") , (24736, 0, "t") , (24737, 0, " ") , (24738, 0, "b") , (24739, 0, "e") , (24740, 0, " ") , (24741, 0, "s") , (24742, 0, "e") , (24743, 0, "t") , (24744, 0, " ") , (24745, 0, "b") , (24746, 0, "y") , (24747, 0, " ") , (24748, 0, "c") , (24749, 0, "a") , (24750, 0, "l") , (24751, 0, "l") , (24752, 0, "e") , (24753, 0, "r") , (24754, 0, ".") , (24755, 0, " ") , (24756, 0, "(") , (24757, 0, "M") , (24758, 0, "a") , (24759, 0, "y") , (24760, 0, "b") , (24761, 0, "e") , (24762, 0, " ") , (24763, 0, "t") , (24764, 0, "h") , (24765, 0, "i") , (24766, 0, "s") , (24767, 0, " ") , (24762, 6, " ") , (24763, 0, "s") , (24764, 0, "h") , (24765, 0, "o") , (24766, 0, "u") , (24767, 0, "l") , (24768, 0, "d") , (24769, 0, " ") , (24770, 0, "j") , (24771, 0, "u") , (24772, 0, "s") , (24773, 0, "t") , (24774, 0, " ") , (24775, 0, "b") , (24776, 0, "e") , (24777, 0, " ") , (24778, 0, "p") , (24779, 0, "a") , (24780, 0, "s") , (24781, 0, "e") , (24781, 1, "") , (24781, 0, "s") , (24782, 0, "e") , (24783, 0, "d") , (24784, 0, " ") , (24785, 0, "i") , (24786, 0, "n") , (24787, 0, ")") , (24718, 70, "l") , (24719, 0, "o") , (24720, 0, "c") , (24721, 0, "a") , (24722, 0, "l") , (24723, 0, "_") , (24724, 0, "i") , (24725, 0, "n") , (24726, 0, "d") , (24727, 0, "e") , (24728, 0, "x") , (24729, 0, ",") , (24593, 0, ",") , (24594, 0, " ") , (24595, 0, "l") , (24596, 0, "o") , (24597, 0, "c") , (24598, 0, "a") , (24599, 0, "l") , (24600, 0, "_") , (24601, 0, "i") , (24602, 0, "n") , (24603, 0, "d") , (24604, 0, "e") , (24605, 0, "x") , (24606, 0, ":") , (24607, 0, " ") , (24608, 0, "u") , (24609, 0, "s") , (24610, 0, "i") , (24611, 0, "z") , (24612, 0, "e") , (24921, 0, "\n ") , (24930, 0, "\n ") , (24922, 8, "") , (24931, 0, "\n ") , (24923, 8, "") , (24932, 0, "c") , (24933, 0, "u") , (24934, 0, "r") , (24935, 0, "s") , (24936, 0, "o") , (24937, 0, "r") , (24921, 0, "\n ") , (24930, 0, "\n ") , (24922, 8, "") , (24923, 8, "") , ( 24922 , 0 , "\n for i in 1..self.head.height as usize {\n n = (*n).parent;\n // And find the local offset. Note\n }" ) , (25059, 12, " ") , (25008, 16, " ") , (24975, 16, " ") , (24923, 12, " ") , (25057, 1, "") , (25056, 1, "") , (26215, 122, "") , ( 24922 , 0 , "\n cursor.entries[0] = SkipEntry {\n node: n,\n skip_usersize: offset\n };" ) , (25030, 12, " ") , (24992, 16, " ") , (24967, 16, " ") , (24923, 12, " ") , (25028, 0, "\n ") , (25029, 8, "") , (24556, 4, "n") , (25026, 0, "\n ") , (25035, 0, "/") , (25036, 0, "/") , (25037, 0, " ") , (24556, 0, "m") , (24557, 0, "u") , (24558, 0, "t") , (24559, 0, " ") , (25042, 0, "N") , (25043, 0, "o") , (25044, 0, "w") , (25045, 0, " ") , (25046, 0, "w") , (25047, 0, "e") , (25048, 0, " ") , (25049, 0, "n") , (25050, 0, "e") , (25051, 0, "e") , (25052, 0, "d") , (25053, 0, " ") , (25054, 0, "t") , (25055, 0, "o") , (25056, 0, " ") , (25057, 0, "w") , (25058, 0, "a") , (25059, 0, "l") , (25060, 0, "k") , (25061, 0, " ") , (25062, 0, "u") , (25063, 0, "p") , (25064, 0, " ") , (25065, 0, "t") , (25066, 0, "h") , (25067, 0, "e") , (25068, 0, " ") , (25069, 0, "p") , (25070, 0, "a") , (25071, 0, "r") , (25072, 0, "e") , (25073, 0, "n") , (25074, 0, "t") , (25075, 0, "s") , (25076, 0, "'") , (25077, 0, " ") , (25078, 0, "t") , (25079, 0, "r") , (25080, 0, "e") , (25081, 0, "e") , (24923, 0, "\n ") , (24932, 0, "l") , (24933, 0, "e") , (24934, 0, "t") , (24935, 0, " ") , (24936, 0, "m") , (24937, 0, "u") , (24938, 0, "t") , (24939, 0, " ") , (24940, 0, "h") , (24941, 0, "e") , (24942, 0, "i") , (24943, 0, "g") , (24944, 0, "h") , (24945, 0, "t") , (24946, 0, " ") , (24947, 0, "=") , (24948, 0, " ") , (24949, 0, "0") , (24950, 0, ";") , (24951, 0, "\n ") , (24960, 0, "\n ") , (24952, 8, "") , (24961, 0, "f") , (24962, 0, "o") , (24963, 0, "r") , (24964, 0, " ") , (24932, 0, "// ") , (24968, 0, "h") , (24969, 0, " ") , (24970, 0, "i") , (24971, 0, "n") , (24972, 0, " ") , (24973, 0, "0") , (24974, 0, ".") , (24975, 0, ".") , (24976, 0, "(") , (24977, 0, "*") , (24978, 0, "n") , (24979, 0, ")") , (24980, 0, ".") , (24981, 0, "h") , (24982, 0, "e") , (24983, 0, "i") , (24984, 0, "g") , (24985, 0, "h") , (24986, 0, "t") , (24987, 0, " ") , (24987, 0, " ") , (24988, 0, "a") , (24989, 0, "s") , (24990, 0, " ") , (24991, 0, "u") , (24992, 0, "s") , (24993, 0, "i") , (24994, 0, "z") , (24995, 0, "e") , (24996, 0, " ") , (24997, 0, "{") , (25095, 8, " ") , (25061, 12, " ") , (25040, 12, " ") , (25000, 8, " ") , (25121, 0, "\n ") , (25122, 12, " }") , (25027, 1, "") , (25027, 0, "h") , (24998, 1, "") , (25183, 0, "\n ") , (25192, 0, "for h in 0..(*n).height as usize { ") , (24955, 0, "\n ") , (24964, 0, "/") , (24965, 0, "/") , (24966, 0, " ") , (24967, 0, "C") , (24968, 0, "o") , (24969, 0, "u") , (24970, 0, "l") , (24971, 0, "d") , (24972, 0, " ") , (24973, 0, "e") , (24974, 0, "v") , (24975, 0, "e") , (24976, 0, "n") , (24977, 0, " ") , (24978, 0, "j") , (24979, 0, "u") , (24980, 0, "s") , (24981, 0, "t") , (24982, 0, " ") , (24964, 19, "") , (24960, 4, "") , (24956, 4, "") , (24955, 1, "") , (25146, 11, "") , (24955, 0, "\n ") , (24964, 0, "\n ") , (24956, 8, "") , (24957, 8, "") , (24956, 0, "\n ") , (24965, 0, "l") , (24966, 0, "e") , (24967, 0, "t") , (24968, 0, " ") , (24969, 0, "h") , (24970, 0, " ") , (24971, 0, "=") , (24972, 0, " ") , (24969, 3, "m") , (24970, 0, "m") , (24970, 1, "") , (24970, 0, "u") , (24971, 0, "t") , (24972, 0, " ") , (24973, 0, "h") , (24974, 0, " ") , (24975, 0, "=") , (24976, 0, " ") , (24977, 0, "0") , (24978, 0, ";") , (24979, 0, "\n ") , (24988, 0, "w") , (24989, 0, "h") , (24990, 0, "i") , (24991, 0, "l") , (24988, 4, "") , (24988, 0, "l") , (24989, 0, "o") , (24990, 0, "o") , (24991, 0, "p") , (24992, 0, " ") , (24993, 0, "{") , (24994, 0, "\n ") , (25007, 1, "\n ") , (25008, 12, " }") , (25007, 0, "w") , (25008, 0, "h") , (25009, 0, "i") , (25010, 0, "l") , (25011, 0, "e") , (25012, 0, " ") , (25013, 0, "h") , (25014, 0, " ") , (25015, 0, "<") , (25016, 0, " ") , (25017, 0, "(*n).height") , (25028, 0, " ") , (25029, 0, "a") , (25030, 0, "s") , (25031, 0, " ") , (25032, 0, "u") , (25033, 0, "s") , (25034, 0, "i") , (25035, 0, "z") , (25036, 0, "e") , (25037, 0, " ") , (25038, 0, "{") , (25039, 0, "\n ") , (25056, 0, "\n ") , (25040, 16, "") , (25041, 16, " }") , (25109, 122, "") , ( 25040 , 0 , " cursor.entries[h] = SkipEntry {\n node: n,\n skip_usersize: offset\n };\n" ) , (25162, 0, " ") , (25147, 12, " ") , (25109, 16, " ") , (25084, 16, " ") , (25040, 12, " ") , (25177, 1, "") , (25258, 0, "// ") , (25215, 0, "// ") , (25195, 0, "\n ") , (25208, 0, "\n ") , (25196, 12, "") , (25498, 0, "// ") , (25451, 0, "// ") , (25422, 0, "// ") , (25374, 0, "// ") , (25330, 0, "// ") , (25197, 12, "") , (25197, 0, " n = (*n).parent;") , (25197, 4, " ") , (25225, 0, "\n ") , (25238, 0, "i") , (25239, 0, "f") , (25240, 0, " ") , (25241, 0, "n") , (25242, 0, " ") , (25243, 0, "=") , (25244, 0, "=") , (25245, 0, " ") , (25246, 0, "s") , (25247, 0, "e") , (25248, 0, "l") , (25249, 0, "f") , (25250, 0, ".") , (25251, 0, "h") , (25252, 0, "e") , (25253, 0, "a") , (25254, 0, "d") , (25246, 0, "&") , (25256, 0, " ") , (25257, 0, "{") , (25258, 0, " ") , (25259, 0, "b") , (25260, 0, "r") , (25261, 0, "e") , (25262, 0, "a") , (25263, 0, "k") , (25264, 0, ";") , (25265, 0, " ") , (25266, 0, "}") , (25267, 0, "\n ") , (25268, 12, "") , (25242, 0, "a") , (25243, 0, "s") , (25244, 0, " ") , (25244, 1, "") , (25243, 1, "") , (25242, 1, "") , (25242, 0, " ") , (25243, 0, "a") , (25244, 0, "s") , (25245, 0, " ") , (25246, 0, "*") , (25247, 0, "c") , (25248, 0, "o") , (25249, 0, "n") , (25250, 0, "s") , (25251, 0, "t") , (25252, 0, " ") , (25253, 0, "_") , (25268, 0, " ") , (25269, 0, "a") , (25270, 0, "s") , (25271, 0, " ") , (25272, 0, "*") , (25273, 0, "c") , (25274, 0, "o") , (25275, 0, "n") , (25276, 0, "s") , (25277, 0, "t") , (25278, 0, " ") , (25279, 0, "_") , (25269, 12, "") , (25280, 0, " ") , (25280, 12, "") , (25279, 1, "") , (25225, 0, "\n ") , (25238, 0, "\n ") , (25226, 12, "") , (25227, 12, "") , (25226, 0, "\n ") , (25227, 12, "") , (25181, 0, "\n ") , (25182, 16, "") , (25181, 1, "") , (25180, 1, "") , (25179, 1, "") , (25178, 1, "") , (25177, 1, "") , (25177, 0, "\n ") , (25194, 0, "h") , (25195, 0, " ") , (25196, 0, "+") , (25197, 0, "=") , (25198, 0, " ") , (25199, 0, "1") , (25200, 0, ";") , (25177, 0, "\n ") , (25263, 0, " ") , (25178, 16, "") , (25259, 0, "d") , (25260, 0, "e") , (25261, 0, "b") , (25262, 0, "u") , (25263, 0, "g") , (25259, 5, "debug_assert!") , (25272, 0, "(") , (25273, 0, "(") , (25274, 0, "*") , (25275, 0, "n") , (25276, 0, ")") , (25277, 0, ".") , (25278, 0, "h") , (25279, 0, "e") , (25280, 0, "i") , (25281, 0, "g") , (25282, 0, "h") , (25283, 0, "t") , (25284, 0, " ") , (25285, 0, ">") , (25286, 0, " ") , (25287, 0, "h") , (25288, 0, ")") , (25289, 0, ";") , (25288, 0, " ") , (25289, 0, "a") , (25290, 0, "s") , (25291, 0, " ") , (25288, 4, "") , (25284, 0, " ") , (25285, 0, "a") , (25286, 0, "s") , (25287, 0, " ") , (25288, 0, "u") , (25289, 0, "s") , (25290, 0, "i") , (25291, 0, "z") , (25292, 0, "e") , (25355, 0, "\n") , (25301, 1, "") , (25354, 0, "\n") , (25300, 1, "") , (25353, 0, "\n debug_assert!((*n).height as usize > h);") , (25247, 53, "") , (25300, 0, "\n n = (*n).parent;") , (25218, 29, "") , (25271, 0, "\n") , (25217, 1, "") , (25216, 0, "\n ") , (25229, 0, "\n ") , (25217, 12, "") , (25230, 0, "/") , (25231, 0, "/") , (25232, 0, " ") , (25233, 0, "?") , (25234, 0, "?") , (25235, 0, " ") , (25236, 0, "C") , (25237, 0, "o") , (25238, 0, "u") , (25239, 0, "l") , (25240, 0, "d") , (25241, 0, " ") , (25242, 0, "i") , (25243, 0, "n") , (25244, 0, "s") , (25245, 0, "t") , (25246, 0, "e") , (25247, 0, "a") , (25248, 0, "d") , (25249, 0, " ") , (25250, 0, "c") , (25251, 0, "h") , (25252, 0, "e") , (25253, 0, "c") , (25254, 0, "k") , (25255, 0, " ") , (25256, 0, "i") , (25257, 0, "f") , (25258, 0, " ") , (25259, 0, "n") , (25260, 0, " ") , (25261, 0, "i") , (25262, 0, "s") , (25263, 0, " ") , (25264, 0, "n") , (25265, 0, "u") , (25266, 0, "l") , (25267, 0, "l") , (25268, 0, ".") , (25408, 0, " ") , (25408, 12, "") , (25233, 2, "S") , (25234, 0, "h") , (25235, 0, "o") , (25236, 0, "u") , (25237, 0, "l") , (25238, 0, "d") , (25239, 6, "") , (25247, 0, " ") , (25248, 0, "b") , (25249, 0, "e") , (25250, 0, " ") , (25251, 0, "a") , (25252, 0, "b") , (25253, 0, "l") , (25254, 0, "e") , (25255, 0, " ") , (25256, 0, "t") , (25257, 0, "o") , (25417, 0, " ") , (25429, 0, "/") , (25430, 0, "/") , (25431, 0, " ") , (25432, 0, "A") , (25433, 0, "n") , (25434, 0, "d") , (25435, 0, " ") , (25436, 0, "u") , (25437, 0, "p") , (25437, 1, "") , (25436, 1, "") , (25436, 0, "f") , (25437, 0, "i") , (25438, 0, "g") , (25439, 0, "u") , (25440, 0, "r") , (25441, 0, "e") , (25442, 0, " ") , (25443, 0, "o") , (25444, 0, "u") , (25445, 0, "t") , (25446, 0, " ") , (25447, 0, "t") , (25448, 0, "h") , (25449, 0, "e") , (25450, 0, " ") , (25451, 0, "o") , (25452, 0, "f") , (25453, 0, "f") , (25454, 0, "s") , (25455, 0, "e") , (25456, 0, "t") , (25457, 0, ".") , (25346, 0, "l") , (25347, 0, "e") , (25348, 0, "t") , (25349, 0, " ") , (25350, 1, "p") , (25351, 0, "a") , (25352, 0, "r") , (25353, 0, "e") , (25354, 0, "n") , (25355, 0, "t") , (25467, 0, "\n ") , (25480, 0, "\n ") , (25468, 12, "") , (25481, 0, "n") , (25482, 0, " ") , (25483, 0, "=") , (25484, 0, " ") , (25485, 0, "p") , (25486, 0, "a") , (25487, 0, "r") , (25488, 0, "e") , (25489, 0, "n") , (25490, 0, "t") , (25491, 0, ";") , (25466, 1, "") , (25466, 0, " ") , (25467, 0, "f") , (25468, 0, "r") , (25469, 0, "o") , (25470, 0, "m") , (25471, 0, " ") , (25472, 0, "p") , (25473, 0, "a") , (25474, 0, "r") , (25475, 0, "e") , (25476, 0, "n") , (25477, 0, "t") , (25478, 0, " ") , (25479, 0, "t") , (25480, 0, "o") , (25481, 0, " ") , (25482, 0, "n") , (25483, 0, ".") , (25484, 0, "\n ") , ( 25497 , 0 , " let mut n = new_node_ptr;\n loop {\n n = (*n).nexts_mut()[new_height_usize - 2].node;\n if n.is_null() || (*n).height >= new_height { break; }\n\n (*n).parent = new_node_ptr;\n }" ) , (25485, 24, " ") , (25485, 38, "") , (25485, 214, "") , (25484, 1, "") , (25484, 0, "\n ") , (25497, 0, "\n ") , (25485, 12, "") , (25486, 12, "") , (25441, 3, "W") , (25442, 0, "a") , (25443, 0, "l") , (25444, 0, "k") , (25445, 0, " ") , (25446, 0, "f") , (25447, 0, "r") , (25448, 0, "o") , (25449, 0, "m") , (25450, 0, " ") , (25451, 0, "b") , (25452, 0, "p") , (25452, 1, "") , (25451, 1, "") , (25451, 0, "p") , (25452, 0, "a") , (25453, 0, "r") , (25454, 0, "e") , (25455, 0, "n") , (25456, 0, "t") , (25457, 0, " ") , (25458, 0, "b") , (25459, 0, "a") , (25460, 0, "c") , (25461, 0, "k") , (25462, 0, " ") , (25463, 0, "t") , (25464, 0, "o") , (25465, 0, " ") , (25466, 0, "n") , (25467, 0, ",") , (25468, 0, " ") , (25468, 1, "") , (25474, 1, "") , (25474, 0, "i") , (25475, 0, "n") , (25476, 0, "g") , (25492, 18, ".") , (25493, 0, "\n ") , (25506, 0, "l") , (25507, 0, "e") , (25508, 0, "t") , (25509, 0, " ") , (25510, 0, "i") , (25510, 1, "") , (25510, 0, "c") , (25511, 0, "u") , (25511, 1, "") , (25511, 0, " ") , (25512, 0, "=") , (25513, 0, " ") , (25514, 0, "p") , (25515, 0, "a") , (25516, 0, "r") , (25517, 0, "e") , (25518, 0, "n") , (25519, 0, "t") , (25520, 0, ";") , (25521, 0, "\n ") , (25534, 0, "w") , (25535, 0, "h") , (25536, 0, "i") , (25537, 0, "l") , (25538, 0, "e") , (25539, 0, " ") , (25540, 0, "c") , (25541, 0, " ") , (25542, 0, "!") , (25543, 0, "=") , (25544, 0, " ") , (25545, 0, "n") , (25546, 0, " ") , (25547, 0, "{") , (25548, 0, "\n ") , (25565, 0, "\n ") , (25549, 16, "") , (25550, 16, " }") , (25549, 0, " ") , (25565, 0, "c") , (25566, 0, " ") , (25567, 0, "=") , (25568, 0, " ") , (25569, 0, "(") , (25570, 0, "*") , (25571, 0, "c") , (25572, 0, ")") , (25573, 0, ".") , (25574, 0, "n") , (25575, 0, "e") , (25576, 0, "x") , (25577, 0, "s") , (25577, 1, "") , (25577, 0, "t") , (25578, 0, "s") , (25579, 0, "[") , (25580, 0, "(") , (25581, 0, "*") , (25582, 0, "c") , (25583, 0, ")") , (25584, 0, ".") , (25585, 0, "h") , (25586, 0, "e") , (25587, 0, "i") , (25588, 0, "g") , (25589, 0, "h") , (25590, 0, "t") , (25591, 0, " ") , (25592, 0, "-") , (25593, 0, " ") , (25594, 0, "1") , (25594, 1, "") , (25594, 0, "2") , (25400, 1, "") , (25400, 0, "p") , (25401, 0, "a") , (25402, 0, "r") , (25403, 0, "e") , (25404, 0, "n") , (25405, 0, "t") , (25371, 0, "\n ") , (25372, 12, "") , (25371, 1, "") , (25429, 0, "\n ") , (25442, 0, "\n ") , (25430, 12, "") , (25443, 0, "l") , (25444, 0, "e") , (25445, 0, "t") , (25446, 0, " ") , (25447, 0, "p") , (25448, 0, "_") , (25449, 0, "h") , (25450, 0, "e") , (25451, 0, "i") , (25452, 0, "g") , (25453, 0, "h") , (25454, 0, "t") , (25455, 0, " ") , (25456, 0, "=") , (25457, 0, " ") , (25458, 0, "(") , (25459, 0, "*") , (25460, 0, "p") , (25461, 0, "a") , (25462, 0, "r") , (25463, 0, "e") , (25464, 0, "n") , (25465, 0, "t") , (25466, 0, ")") , (25467, 0, ".") , (25468, 0, "h") , (25469, 0, "e") , (25470, 0, "i") , (25471, 0, "g") , (25472, 0, "h") , (25473, 0, "t") , (25474, 0, ";") , (25475, 0, "\n") , (25430, 1, "") , (25474, 0, "\n debug_assert!((*parent).height as usize > h);") , (25372, 58, "") , (25443, 16, "p") , (25444, 0, "_") , (25445, 0, "h") , (25446, 0, "e") , (25447, 0, "i") , (25448, 0, "g") , (25449, 0, "h") , (25450, 0, "t") , (25451, 9, "") , (25415, 0, " ") , (25416, 0, "a") , (25417, 0, "s") , (25418, 0, " ") , (25419, 0, "s") , (25420, 0, "u") , (25420, 1, "") , (25419, 1, "") , (25419, 0, "u") , (25420, 0, "s") , (25421, 0, "i") , (25422, 0, "z") , (25423, 0, "e") , (25467, 1, "") , (25424, 0, " ") , (25425, 0, "-") , (25426, 0, " ") , (25427, 0, "1") , (25426, 2, "") , (25424, 2, "") , (25467, 0, "\n") , (25419, 5, "") , (25419, 0, "su") , (25418, 3, "") , (25415, 3, "") , (25451, 0, " as usize") , (25443, 8, "(*parent).height") , (25416, 58, "") , (25372, 0, " debug_assert!((*parent).height as usize > h);\n") , (25474, 1, "") , (25430, 0, "\n") , (25443, 32, "let p_height = (*parent).height as usize - 1;") , (25447, 8, "w") , (25448, 0, "a") , (25449, 0, "l") , (25450, 0, "k") , (25451, 0, "_") , (25452, 0, "h") , (25453, 0, "e") , (25454, 0, "i") , (25455, 0, "g") , (25456, 0, "h") , (25457, 0, "t") , (25491, 1, "") , (25431, 0, " \n") , (25504, 68, "") , ( 25444 , 0 , " // Walk from parent back to n, figuring out the offset.\n" ) , (25572, 28, "") , (25512, 0, " let c = parent;\n") , (25439, 4, "") , (25435, 4, "") , (25431, 4, "") , (25430, 1, "") , (25646, 15, "") , (25646, 0, "w") , (25647, 0, "a") , (25648, 0, "l") , (25649, 0, "k") , (25650, 0, "_") , (25651, 0, "h") , (25652, 0, "e") , (25653, 0, "i") , (25646, 8, "walk_height") , (25657, 0, "]") , (25585, 1, "") , (25585, 0, "2") , (25585, 1, "") , (25585, 0, "1") , (25585, 1, "") , (25585, 0, "2") , (25631, 0, "l") , (25632, 0, "e") , (25633, 0, "t") , (25634, 0, " ") , (25635, 0, "e") , (25636, 0, "l") , (25637, 0, "e") , (25638, 0, "m") , (25639, 0, " ") , (25640, 0, "=") , (25641, 1, "") , (25641, 1, "") , (25641, 1, "") , (25641, 1, "") , (25641, 0, " ") , (25665, 0, ";") , (25666, 0, "\n ") , (25683, 0, "c") , (25684, 0, " ") , (25685, 0, "=") , (25686, 0, " ") , (25687, 0, "e") , (25688, 0, "l") , (25689, 0, "e") , (25690, 0, "m") , (25691, 0, "e") , (25692, 0, ".") , (25692, 1, "") , (25691, 1, "") , (25691, 0, ".") , (25692, 0, "n") , (25693, 0, "o") , (25694, 0, "d") , (25695, 0, "e") , (25696, 0, ";") , (25666, 0, "\n ") , (25683, 0, "o") , (25684, 0, "f") , (25685, 0, "f") , (25686, 0, "s") , (25687, 0, "e") , (25688, 0, "t") , (25689, 0, " ") , (25690, 0, "+") , (25691, 0, "=") , (25692, 0, " ") , (25693, 0, "e") , (25694, 0, "l") , (25695, 0, "e") , (25696, 0, "m") , (25697, 0, ".") , (25698, 0, "s") , (25699, 0, "k") , (25700, 0, "i") , (25701, 0, "p") , (25702, 0, "_") , (25703, 0, "u") , (25698, 6, "skip_usersize") , (25711, 0, ";") , (25515, 0, "m") , (25516, 0, "u") , (25517, 0, "t") , (25518, 0, " ") , (25762, 1, "") , (25797, 295, "") , (25218, 115, "") , (25217, 1, "") , (25216, 1, "") , (25216, 0, "\n ") , (25325, 0, "\n ") , (25217, 12, "") , (25326, 0, "\n ") , (25314, 12, "") , (25327, 0, "i") , (25328, 0, "f") , (25329, 0, " ") , (25330, 0, "p") , (25331, 0, "a") , (25332, 0, "r") , (25333, 0, "e") , (25334, 0, "n") , (25335, 0, "t") , (25336, 0, ".") , (25337, 0, "i") , (25338, 0, "s") , (25339, 0, "_") , (25340, 0, "n") , (25341, 0, "u") , (25342, 0, "l") , (25343, 0, "l") , (25344, 0, "(") , (25345, 0, ")") , (25346, 0, " ") , (25347, 0, "{") , (25348, 0, " ") , (25349, 0, "b") , (25350, 0, "r") , (25351, 0, "e") , (25352, 0, "a") , (25353, 0, "k") , (25354, 0, ";") , (25355, 0, " ") , (25356, 0, "}") , (25314, 0, "\n ") , (25327, 0, "/") , (25328, 0, "/") , (25329, 0, " ") , (25330, 0, "R") , (25331, 0, "e") , (25332, 0, "a") , (25333, 0, "c") , (25334, 0, "h") , (25335, 0, "e") , (25336, 0, "d") , (25337, 0, " ") , (25338, 0, "t") , (25339, 0, "h") , (25340, 0, "e") , (25341, 0, " ") , (25342, 0, "h") , (25343, 0, "e") , (25344, 0, "a") , (25345, 0, "d") , (25346, 0, ".") , (24955, 1, "") , (24924, 31, "") , (24923, 1, "") , (25725, 0, "\n ") , (25734, 0, "c") , (25735, 0, "u") , (25736, 0, "r") , (25737, 0, "s") , (25738, 0, "o") , (25739, 0, "r") , (25740, 0, ".") , (25741, 0, "u") , (25742, 0, "s") , (25743, 0, "e") , (25744, 0, "r") , (25745, 0, "p") , (25746, 0, "o") , (25747, 0, "s") , (25748, 0, " ") , (25749, 0, "=") , (25750, 0, " ") , (25751, 0, "o") , (25752, 0, "f") , (25753, 0, "f") , (25754, 0, "s") , (25755, 0, "e") , (25756, 0, "t") , (25757, 0, ";") , (26487, 610, "") , (26487, 0, "\n ") , (26500, 0, "s") , (26501, 0, "e") , (26502, 0, "l") , (26503, 0, "f") , (26504, 0, ".") , (26505, 0, "i") , (26506, 0, "t") , (26507, 0, "e") , (26508, 0, "r") , (26509, 0, "_") , ( 26505 , 5 , "iter_at_node(mut n: *mut Node, mut offset: usize, local_index: usize)" ) , (26518, 19, "n") , (26521, 17, "o") , (26522, 0, "f") , (26523, 0, "f") , (26524, 0, "s") , (26525, 0, "e") , (26526, 0, "t") , (26529, 18, "l") , (26530, 0, "o") , (26531, 0, "c") , (26532, 0, "a") , (26533, 0, "l") , (26534, 0, "_") , (26535, 0, "i") , (26536, 0, "n") , (26537, 0, "d") , (26538, 0, "e") , (26539, 0, "x") , (26541, 20, "") , (26541, 0, "\n\n cursor") , (26529, 11, "local_index: usize") , (26521, 6, "mut offset: usize") , (26518, 1, "mut n: *mut Node") , (26505, 72, "iter_") , (26487, 23, "") , ( 26487 , 0 , "\n // Now we need to make a cursor at the node/userpos location pair.\n let mut cursor = Cursor {\n userpos: 0,\n local_index: local_index.expect(\"Invalid marker - item not found in node\"),\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };\n\n\n for i in 1..self.head.height as usize {\n n = (*n).parent;\n // And find the local offset. Note\n }\n unimplemented!();" ) , (25750, 8, "") , (25750, 0, " offset;") , (26487, 0, "self.iter_at_node(n, offset, local_index)") , (26487, 0, " ") , (26540, 0, "\n ") , (26728, 61, "") , (26541, 12, "") , ( 26528 , 11 , "local_index.expect(\"Invalid marker - item not found in node\")" ) , (26590, 550, "") , (26590, 20, "") , (26486, 0, "\n ") , (26499, 0, "\n ") , (26487, 12, "") , (26500, 0, "l") , (26501, 0, "e") , (26502, 0, "t") , (26503, 0, " ") , (26504, 0, "l") , (26505, 0, "o") , (26506, 0, "c") , (26507, 0, "a") , (26508, 0, "l") , (26509, 0, "_") , (26510, 0, "i") , (26511, 0, "n") , (26504, 8, "local_index") , (26515, 0, " ") , (26516, 0, "=") , (26517, 0, " ") , (26560, 61, "") , ( 26518 , 0 , "local_index.expect(\"Invalid marker - item not found in node\")" ) , (26579, 0, ";") , (26622, 0, "o") , (26623, 0, "=") , (26623, 1, "") , (26623, 0, "l") , (26624, 0, "o") , (26624, 1, "") , (26623, 1, "") , (26622, 1, "") , (26622, 0, "l") , (26623, 0, "o") , (26624, 0, "c") , (26625, 0, "a") , (26626, 0, "l") , (26622, 5, "local_index") , (26022, 3, "") , (26021, 1, "") , (20829, 0, "\n ") , (20846, 0, "\n ") , (20830, 16, "") , (20847, 0, "/") , (20848, 0, "/") , (20849, 0, " ") , (20850, 0, "C") , (20851, 0, "h") , (20852, 0, "e") , (20853, 0, "c") , (20854, 0, "k") , (20855, 0, " ") , (20856, 0, "t") , (20857, 0, "h") , (20858, 0, "e") , (20859, 0, " ") , (20860, 0, "v") , (20861, 0, "a") , (20862, 0, "l") , (20863, 0, "u") , (20864, 0, "e") , (20865, 0, " ") , (20866, 0, "r") , (20867, 0, "e") , (20868, 0, "t") , (20869, 0, "u") , (20870, 0, "r") , (20871, 0, "n") , (20872, 0, "e") , (20873, 0, "d") , (20874, 0, " ") , (20875, 0, "b") , (20876, 0, "y") , (20877, 0, " ") , (20878, 0, "t") , (20879, 0, "h") , (20880, 0, "e") , (20881, 0, " ") , (20882, 0, "i") , (20883, 0, "t") , (20884, 0, "e") , (20885, 0, "r") , (20886, 0, "a") , (20887, 0, "t") , (20888, 0, "o") , (20889, 0, "r") , (20890, 0, " ") , (20891, 0, "f") , (20892, 0, "u") , (20893, 0, "n") , (20894, 0, "c") , (20895, 0, "t") , (20896, 0, "i") , (20897, 0, "o") , (20898, 0, "n") , (20899, 0, "s") , (20900, 0, " ") , (20901, 0, "m") , (20902, 0, "a") , (20903, 0, "t") , (20904, 0, "c") , (20905, 0, "h") , (20906, 0, "e") , (20907, 0, "s") , (20908, 0, ".") , (20909, 0, "\n ") , (20926, 0, "s") , (20927, 0, "e") , (20928, 0, "l") , (20929, 0, "f") , (20930, 0, ".") , (20931, 0, "i") , (20932, 0, "t") , (20933, 0, "e") , (20934, 0, "r") , ( 20931 , 4 , "iter_at_node(mut n: *mut Node, mut offset: usize, local_index: usize)" ) , (20944, 19, "n") , (20947, 17, "n") , (20948, 0, ".") , (20949, 0, "g") , (20950, 0, "e") , (20951, 0, "t") , (20952, 0, "_") , (20953, 0, "l") , (20954, 0, "o") , (20954, 1, "") , (20953, 1, "") , (20953, 0, "u") , (20954, 0, "s") , (20955, 0, "e") , (20956, 0, "r") , (20957, 0, "l") , (20958, 0, "e") , (20959, 0, "n") , (20960, 0, "(") , (20961, 0, ")") , (20964, 18, "n") , (20965, 0, ".") , (20966, 0, "n") , (20967, 0, "u") , (20968, 0, "m") , (20969, 0, "_") , (20970, 0, "i") , (20971, 0, "t") , (20966, 6, "num_items") , (20976, 0, ";") , (20926, 0, "l") , (20927, 0, "e") , (20928, 0, "t") , (20929, 0, " ") , (20930, 0, "n") , (20931, 0, "o") , (20932, 0, "d") , (20933, 0, "e") , (20934, 0, "_") , (20935, 0, "i") , (20936, 0, "t") , (20937, 0, "e") , (20938, 0, "r") , (20939, 0, " ") , (20940, 0, "=") , (20941, 0, " ") , (24728, 3, "c") , (24729, 0, "o") , (24730, 0, "n") , (24731, 0, "s") , (24732, 0, "t") , (24796, 0, "\n ") , (24805, 0, "l") , (24806, 0, "e") , (24807, 0, "t") , (24808, 0, " ") , (24809, 0, "n") , (24810, 0, " ") , (24811, 0, "=") , (24812, 0, " ") , (24809, 0, "m") , (24810, 0, "u") , (24811, 0, "t") , (24812, 0, " ") , (24817, 0, "n") , (24818, 0, " ") , (24819, 0, "a") , (24820, 0, "s") , (24821, 0, " ") , (24822, 0, "*") , (24823, 0, "m") , (24824, 0, "u") , (24825, 0, "t") , (24826, 0, " ") , (24827, 0, "_") , (24828, 0, ";") , (24720, 4, "") , (24825, 0, "\n ") , (24826, 8, "") , (24825, 0, " ") , (24826, 0, "/") , (24827, 0, "/") , (24828, 0, " ") , (24829, 0, "W") , (24830, 0, "e") , (24831, 0, " ") , (24832, 0, "d") , (24833, 0, "o") , (24834, 0, "n") , (24835, 0, "'") , (24836, 0, "t") , (24837, 0, " ") , (24838, 0, "m") , (24839, 0, "u") , (24840, 0, "t") , (24841, 0, "a") , (24842, 0, "t") , (24843, 0, "e") , (24844, 0, ",") , (24845, 0, " ") , (24846, 0, "b") , (24847, 0, "u") , (24848, 0, "t") , (24849, 0, " ") , (24823, 1, "N") , (24824, 0, "o") , (24825, 0, "d") , (24826, 0, "e") , (24827, 0, "<") , (24828, 0, "C") , (24829, 0, ">") , (24856, 0, "w") , (24857, 0, "e") , (24858, 0, " ") , (24859, 0, "n") , (24860, 0, "e") , (24861, 0, "e") , (24862, 0, "d") , (24863, 0, " ") , (24864, 0, "a") , (24865, 0, " ") , (24866, 0, "m") , (24867, 0, "u") , (24868, 0, "t") , (24869, 0, " ") , (24870, 0, "p") , (24871, 0, "t") , (24872, 0, "r") , (24873, 0, ".") , (24709, 11, "") , (24709, 0, "&mut self, ") , (24710, 4, "") , (20991, 0, " ") , (20992, 0, "a") , (20993, 0, "s") , (20994, 0, " ") , (20995, 0, "u") , (20996, 0, "s") , (20997, 0, "i") , (20998, 0, "z") , (20999, 0, "e") , (20942, 0, "u") , (20943, 0, "n") , (20944, 0, "s") , (20945, 0, "a") , (20946, 0, "f") , (20947, 0, "e") , (20948, 0, " ") , (20949, 0, "{") , (20950, 0, " ") , (21010, 0, " ") , (21011, 0, "}") , (21013, 0, "\n ") , (21030, 0, "l") , (21031, 0, "e") , (21032, 0, "t") , (21033, 0, " ") , (21034, 0, "n") , (21035, 0, "o") , (21036, 0, "r") , (21037, 0, "m") , (21038, 0, "a") , (21039, 0, "l") , (21040, 0, "_") , (21041, 0, "i") , (21042, 0, "t") , (21043, 0, "e") , (21044, 0, "r") , (21045, 0, " ") , (21046, 0, "=") , (21047, 0, " ") , (21048, 0, "s") , (21049, 0, "e") , (21050, 0, "l") , (21051, 0, "f") , (21052, 0, ".") , (21053, 0, "iter_at_userpos(target_userpos: usize)") , (21069, 21, "n") , (21070, 0, "u") , (21071, 0, "m") , (21072, 0, "u") , (21073, 0, "s") , (21074, 0, "e") , (21075, 0, "r") , (21075, 1, "") , (21074, 1, "") , (21073, 1, "") , (21072, 1, "") , (21072, 0, "_") , (21073, 0, "u") , (21074, 0, "s") , (21075, 0, "e") , (21076, 0, "r") , (21077, 0, "c") , (21078, 0, "o") , (21079, 0, "u") , (21080, 0, "n") , (21081, 0, "t") , (21083, 0, ";") , ( 21084 , 0 , "\n let node_iter = unsafe { self.iter_at_node(n, n.get_userlen(), n.num_items as usize) };" ) , (20910, 104, "") , (21084, 0, "\n ") , (21101, 0, "a") , (21102, 0, "s") , (21103, 0, "s") , (21101, 3, "assert_eq!") , (21111, 0, "(") , (21112, 0, "n") , (21113, 0, "o") , (21114, 0, "r") , (21115, 0, "m") , (21116, 0, "a") , (21117, 0, "l") , (21118, 0, "_") , (21119, 0, "i") , (21120, 0, "t") , (21121, 0, "e") , (21122, 0, "r") , (21123, 0, ",") , (21124, 0, " ") , (21125, 0, "n") , (21126, 0, "o") , (21127, 0, "d") , (21128, 0, "e") , (21129, 0, "_") , (21130, 0, "i") , (21131, 0, "t") , (21132, 0, "e") , (21133, 0, "r") , (21134, 0, ")") , (21135, 0, ";") , (20930, 0, "(") , (20942, 0, ",") , (20943, 0, " ") , (20944, 0, "_") , (20945, 0, ")") , (20944, 1, "") , (20944, 0, "l") , (20945, 0, "o") , (20946, 0, "c") , (20947, 0, "a") , (20948, 0, "l") , (20949, 0, "_") , (20950, 0, "o") , (20951, 0, "f") , (20952, 0, "f") , (20953, 0, "s") , (20954, 0, "e") , (20955, 0, "t") , (20996, 0, "\n ") , (21013, 0, "a") , (21014, 0, "s") , (21013, 2, "assert_eq!") , (21023, 0, "(") , (21024, 0, "l") , (21025, 0, "o") , (21026, 0, "c") , (21027, 0, "a") , (21028, 0, "l") , (21029, 0, "_") , (21030, 0, "o") , (21031, 0, "f") , (21032, 0, "f") , (21033, 0, "s") , (21034, 0, "e") , (21035, 0, "t") , (21036, 0, ",") , (21037, 0, " ") , (21038, 0, "n") , (21039, 0, ".") , (21040, 0, "g") , (21041, 0, "e") , (21042, 0, "t") , (21043, 0, ")") , (21044, 0, "u") , (21044, 1, "") , (21043, 1, "") , (21043, 0, "_") , (21044, 0, "u") , (21045, 0, "s") , (21046, 0, "e") , (21047, 0, "r") , (21048, 0, "l") , (21049, 0, "e") , (21040, 10, "get_userlen") , (21051, 0, "(") , (21052, 0, ")") , (21053, 0, ")") , (21054, 0, ";") , (25816, 0, "\n // Reached the head.") , (25741, 33, "") , (25783, 0, "\n") , (25740, 1, "") , (25782, 0, "\n debug_assert!((*parent).height as usize > h);") , (25682, 58, "") , (25816, 0, "\n") , (25783, 1, "") , (25815, 0, "\n debug_assert!((*parent).height as usize > h);") , (25725, 58, "") , (25757, 0, "\n if parent.is_null() { break; }") , (25682, 43, "") , (25757, 0, "\n ") , (25828, 1, "") , (25758, 12, "") , (25815, 1, "") , (25815, 0, ";") , (21038, 15, "0") , (26024, 5, "") , (26023, 1, "") , (26023, 0, ".") , (26024, 0, "n") , (26025, 0, "e") , (26026, 0, "x") , (26027, 0, "t") , (26028, 0, "s") , (26029, 0, "_") , (26030, 0, "m") , (26031, 0, "u") , (26032, 0, "t") , (26033, 0, "(") , (26034, 0, ")") , (26029, 4, "") , (18167, 0, "\n ") , (18172, 0, "\n ") , (18168, 4, "") , (18173, 0, "f") , (18174, 0, "n") , (18175, 0, " ") , (18176, 0, "i") , (18177, 0, "s") , (18178, 0, "_") , (18179, 0, "h") , (18180, 0, "e") , (18181, 0, "a") , (18182, 0, "d") , (18183, 0, "(") , (18184, 0, "*") , (18184, 1, "") , (18184, 0, "&") , (18185, 0, "s") , (18186, 0, "e") , (18187, 0, "l") , (18188, 0, "f") , (18189, 0, ",") , (18190, 0, " ") , (18191, 0, "&") , (18191, 1, "") , (18191, 0, "*") , (18192, 0, "m") , (18192, 1, "") , (18192, 0, "m") , (18193, 0, "u") , (18194, 0, "t") , (18195, 0, " ") , (18196, 0, "N") , (18197, 0, "o") , (18198, 0, "d") , (18199, 0, "e") , (18200, 0, "<") , (18201, 0, "C") , (18202, 0, ">") , (18203, 0, ")") , (18191, 0, "n") , (18192, 0, "o") , (18193, 0, "d") , (18194, 0, "e") , (18195, 0, ":") , (18196, 0, " ") , (18210, 0, " ") , (18211, 0, "{") , (18212, 0, "\n ") , (18221, 0, "\n ") , (18213, 8, "") , (18214, 8, " }") , (18213, 0, "is_head = n as *const _ == &self.head as *const _") , (18213, 0, " ") , (18221, 10, "") , (18221, 1, "n") , (18222, 0, "o") , (18223, 0, "d") , (18224, 0, "e") , (18210, 0, " ") , (18211, 0, "-") , (18212, 0, ">") , (18213, 0, " ") , (18214, 0, "b") , (18215, 0, "o") , (18216, 0, "o") , (18217, 0, "l") , (19538, 0, "s") , (19539, 0, "e") , (19540, 0, "l") , (19541, 0, "f") , (19542, 0, ".") , (19550, 0, "(") , (19551, 0, "n") , (19552, 0, ")") , (19550, 3, "") , (19538, 5, "") , (18213, 5, "") , (18213, 0, " bool") , (19538, 0, "self.") , (19538, 5, "") , (19447, 71, "") , (19467, 0, "s") , (19468, 0, "e") , (19469, 0, "l") , (19470, 0, "f") , (19471, 0, ".") , (19479, 0, "(") , (19480, 0, "n") , (19481, 0, ")") , (18198, 3, "c") , (18199, 0, "o") , (18200, 0, "n") , (18201, 0, "s") , (18202, 0, "t") , (19888, 0, "s") , (19889, 0, "e") , (19890, 0, "l") , (19891, 0, "f") , (19892, 0, ".") , (19900, 0, "(") , (19901, 0, "n") , (19902, 0, ")") , (25828, 0, " ") , (25828, 0, "p") , (25828, 1, "") , (25828, 0, "s") , (25829, 0, "e") , (25830, 0, "l") , (25831, 0, "f") , (25832, 0, ".") , (25833, 0, "i") , (25834, 0, "s") , (25835, 0, "_") , (25836, 0, "h") , (25833, 4, "is_head(node: *const Node)") , (25861, 0, ")") , (25841, 0, "(") , (25842, 20, "p") , (25843, 0, "a") , (25844, 0, "r") , (25845, 0, "e") , (25846, 0, "n") , (25847, 0, "t") , (25847, 1, "") , (25847, 1, "") , (25846, 1, "") , (25841, 5, "p") , (25842, 0, "a") , (25843, 0, "r") , (25844, 0, "e") , (25845, 0, "n") , (25846, 0, "t") , (25848, 0, " ") , (25849, 0, "|") , (25850, 0, "|") , (25801, 0, "\n ") , (25814, 0, "/") , (25815, 0, "/") , (25816, 0, " ") , (25817, 0, "I") , (25818, 0, "f") , (25819, 0, " ") , (25820, 0, "w") , (25821, 0, "e") , (25822, 0, "'") , (25823, 0, "r") , (25824, 0, "e") , (25825, 0, " ") , (25826, 0, "t") , (25827, 0, "h") , (25828, 0, "e") , (25829, 0, " ") , (25830, 0, "s") , (25831, 0, "a") , (25832, 0, "m") , (25833, 0, "e") , (25834, 0, " ") , (25835, 0, "h") , (25836, 0, "i") , (25837, 0, "e") , (25837, 1, "") , (25836, 1, "") , (25835, 1, "") , (25835, 0, "h") , (25836, 0, "e") , (25837, 0, "i") , (25838, 0, "g") , (25839, 0, "h") , (25840, 0, "t") , (25868, 24, "") , (25897, 0, "\n ") , (25906, 0, "|") , (25907, 0, "|") , (25908, 0, " ") , (25906, 0, " ") , (25910, 0, " ") , (25917, 0, "self.is_head(parent) || ") , (25940, 1, "") , (25939, 1, "") , (25938, 1, "") , (25917, 0, "(") , (25940, 0, ")") , (25939, 0, "&") , (25940, 0, "&") , (25941, 0, " ") , (25942, 0, "(*parent).height as usize > h") , (25968, 1, "") , (25968, 0, "=") , (25969, 0, "=") , (25841, 0, " ") , (25842, 0, "a") , (25843, 0, "s") , (25844, 0, " ") , (25845, 0, "t") , (25846, 0, "h") , (25847, 0, "e") , (25848, 0, " ") , (25849, 0, "p") , (25850, 0, "a") , (25851, 0, "r") , (25852, 0, "e") , (25853, 0, "n") , (25854, 0, "t") , (25855, 0, ",") , (25856, 0, " ") , (25817, 4, "W") , (25822, 0, " ") , (25823, 0, "e") , (25824, 0, "i") , (25825, 0, "t") , (25826, 0, "h") , (25827, 0, "e") , (25828, 0, "r") , (25817, 44, "I") , (25818, 0, "f") , (25819, 0, " ") , (25820, 0, "w") , (25821, 0, "e") , (25822, 0, "'") , (25823, 0, "r") , (25824, 0, "e") , (25825, 0, " ") , (25826, 0, "t") , (25827, 0, "h") , (25828, 0, "e") , (25829, 0, " ") , (25830, 0, "s") , (25831, 0, "a") , (25832, 0, "m") , (25833, 0, "e") , (25834, 0, " ") , (25835, 0, "h") , (25836, 0, "e") , (25837, 0, "i") , (25838, 0, "g") , (25839, 0, "h") , (25840, 0, "t") , (25841, 0, " ") , (25842, 0, "a") , (25843, 0, "s") , (25844, 0, " ") , (25845, 0, "t") , (25846, 0, "h") , (25847, 0, "e") , (25848, 0, " ") , (25849, 0, "p") , (25850, 0, "a") , (25851, 0, "r") , (25852, 0, "e") , (25853, 0, "n") , (25854, 0, "t") , (25855, 0, " ") , (25856, 0, "i") , (25857, 0, "t") , (25858, 0, " ") , (25859, 0, "s") , (25859, 1, "") , (25858, 1, "") , (25858, 0, "s") , (25859, 0, " ") , (25860, 0, "i") , (25861, 0, "f") , (25862, 0, "n") , (25863, 0, "e") , (25864, 0, ".") , (25859, 6, " ") , (25860, 0, "f") , (25861, 0, "i") , (25862, 0, "n") , (25863, 0, "e") , (25864, 0, ".") , (21098, 0, "\n ") , (21115, 0, "/") , (21116, 0, "/") , (21117, 0, " ") , (21118, 0, "D") , (21119, 0, "i") , (21120, 0, "r") , (21121, 0, "e") , (21122, 0, "t") , (21122, 1, "") , (21121, 1, "") , (21121, 0, "t") , (21122, 0, "y") , (21123, 0, " ") , (21124, 0, "h") , (21125, 0, "a") , (21126, 0, "c") , (21127, 0, "k") , (21128, 0, ".") , (21129, 0, " ") , (21130, 0, "I") , (21131, 0, "f") , (21132, 0, " ") , (21133, 0, "a") , (21134, 0, " ") , (21135, 0, "n") , (21136, 0, "o") , (21130, 7, "T") , (21131, 0, "h") , (21132, 0, "e") , (21133, 0, " ") , (21133, 1, "") , (21132, 1, "") , (21131, 1, "") , (21130, 1, "") , (21130, 0, "I") , (21131, 0, "f") , (21132, 0, " ") , (21133, 0, "n") , (21134, 0, " ") , (21135, 0, "h") , (21136, 0, "a") , (21137, 0, "s") , (21138, 0, " ") , (21139, 0, "0") , (21140, 0, "-") , (21141, 0, "s") , (21142, 0, "i") , (21143, 0, "z") , (21144, 0, "e") , (21145, 0, "d") , (21146, 0, " ") , (21147, 0, "e") , (21148, 0, "l") , (21149, 0, "e") , (21150, 0, "m") , (21151, 0, "e") , (21152, 0, "n") , (21153, 0, "t") , (21154, 0, "s") , (21155, 0, " ") , (21156, 0, "a") , (21157, 0, "t") , (21158, 0, " ") , (21159, 0, "t") , (21160, 0, "h") , (21161, 0, "e") , (21162, 0, " ") , (21163, 0, "e") , (21164, 0, "n") , (21165, 0, "d") , (21166, 0, ",") , (21167, 0, " ") , (21168, 0, "t") , (21169, 0, "h") , (21170, 0, "e") , (21171, 0, " ") , (21172, 0, "c") , (21173, 0, "u") , (21174, 0, "r") , (21175, 0, "s") , (21176, 0, "o") , (21177, 0, "r") , (21172, 6, "n") , (21173, 0, "o") , (21174, 0, "r") , (21175, 0, "m") , (21176, 0, "a") , (21177, 0, "l") , (21178, 0, " ") , (21179, 0, "c") , (21180, 0, "u") , (21181, 0, "r") , (21182, 0, "s") , (21183, 0, "o") , (21184, 0, " ") , (21184, 1, "") , (21184, 0, "r") , (21185, 0, " ") , (21186, 0, "w") , (21187, 0, "o") , (21188, 0, "n") , (21189, 0, "'") , (21190, 0, "t") , (21191, 0, " ") , (21192, 0, "b") , (21193, 0, "e") , (21194, 0, " ") , (21195, 0, "a") , (21196, 0, "t") , (21197, 0, " ") , (21198, 0, "t") , (21199, 0, "h") , (21200, 0, "e") , (21201, 0, " ") , (21202, 0, "e") , (21203, 0, "n") , (21204, 0, "d") , (21205, 0, ".") , (21206, 0, ".") , (21207, 0, ".") , ( 21099 , 109 , " // Dirty hack. If n has 0-sized elements at the end, the normal\n // cursor won't be at the end..." ) , (21227, 0, "\n ") , (21244, 0, "n") , (21245, 0, "o") , (21246, 0, "r") , (21247, 0, "m") , (21244, 4, "normal_iter") , (21255, 0, ".") , (21256, 0, "l") , (21257, 0, "o") , (21258, 0, "c") , (21259, 0, "a") , (21256, 4, "local_index") , (21267, 0, " ") , (21268, 0, "=") , (21269, 0, " ") , (21270, 0, "n") , (21271, 0, "o") , (21272, 0, "r") , (21273, 0, "m") , (21274, 0, "a") , (21270, 5, "normal_iter") , (21270, 11, "") , (21270, 0, "n") , (21271, 0, ".") , (21272, 0, "n") , (21273, 0, "u") , (21274, 0, "m") , (21275, 0, "_") , (21272, 4, "num_items") , (21281, 0, " ") , (21281, 1, "") , (21281, 0, " ") , (21282, 0, "a") , (21283, 0, "s") , (21284, 0, " ") , (21285, 0, "u") , (21286, 0, "s") , (21287, 0, "i") , (21288, 0, "z") , (21289, 0, "e") , (21290, 0, ";") , (20988, 0, "m") , (20989, 0, "u") , (20990, 0, "t") , (20991, 0, " ") , (21295, 0, "\n ") , (21312, 0, "w") , (21313, 0, "h") , (21314, 0, "i") , (21315, 0, "l") , (21316, 0, "e") , (21317, 0, " ") , (21318, 0, "(") , (21318, 1, "") , (21318, 0, "n") , (21319, 0, "o") , (21320, 0, "r") , (21321, 0, "m") , (21322, 0, "a") , (21318, 5, "normal_iter") , (21329, 0, ".") , (21330, 0, "here_ptr()") , (21340, 0, ".") , (21341, 0, "g") , (21342, 0, "e") , (21343, 0, "t") , (21344, 0, "_") , (21345, 0, "u") , (21341, 5, "get_userlen") , (21352, 0, "(") , (21353, 0, ")") , (21354, 0, " ") , (21340, 15, "") , (21340, 0, " ") , (21341, 0, "!") , (21342, 0, "=") , (21343, 0, " ") , (21344, 0, "n") , (21345, 0, " ") , (21346, 0, "{") , (21347, 0, "\n ") , (21368, 0, "n") , (21369, 0, "o") , (21370, 0, "r") , (21371, 0, "m") , (21372, 0, "a") , (21373, 0, "l") , (21368, 6, "normal_iter") , (21379, 0, ".") , (21380, 0, "a") , (21381, 0, "d") , (21382, 0, "v") , (21383, 0, "a") , (21384, 0, "n") , (21380, 5, "advance_node") , (21392, 0, "(") , (21393, 0, ")") , (21394, 0, ";") , (21395, 0, "\n ") , (21396, 20, " }") , (21295, 52, "") , (21232, 16, " ") , (21232, 0, " while normal_iter.here_ptr() != n {\n") , (21351, 48, "") , (21284, 0, " normal_iter.advance_node();\n") , (21399, 18, "") , (21332, 20, " ") , (21332, 0, " }\n") , (21281, 0, " ") , (21282, 0, "a") , (21283, 0, "s") , (21284, 0, " ") , (21285, 0, "*") , (21286, 0, "c") , (21287, 0, "o") , (21288, 0, "n") , (21289, 0, "s") , (21290, 0, "t") , (21291, 0, " ") , (21292, 0, "_") , (21293, 0, " ") , (21294, 0, "a") , (21295, 0, "s") , (21296, 0, " ") , (21297, 0, "*") , (21298, 0, "m") , (21299, 0, "u") , (21300, 0, "t") , (21301, 0, " ") , (21302, 0, "_") , (21102, 0, "\n ") , ( 31268 , 0 , "\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {" ) , (21103, 16, "") , (31169, 0, "// ") , (31284, 0, "F") , (31285, 0, ">") , (31285, 1, "") , (31284, 1, "") , (31284, 0, "<") , (31285, 0, "F") , (31286, 0, ">") , (31285, 1, "") , (31285, 0, "N") , (31286, 0, "o") , (31286, 1, "") , (31286, 0, "o") , (31287, 0, "t") , (31288, 0, "i") , (31289, 0, "f") , (31290, 0, "y") , (31348, 0, ",") , (31349, 0, " ") , (31350, 0, "n") , (31351, 0, "o") , (31352, 0, "t") , (31353, 0, "i") , (31354, 0, "f") , (31355, 0, "y") , (31356, 0, ":") , (31357, 0, " ") , (31358, 0, "N") , (31359, 0, "o") , (31360, 0, "t") , (31361, 0, "i") , (31362, 0, "f") , (31363, 0, "y") , (31365, 0, "\n ") , (31370, 1, "") , (31370, 0, " ") , (31374, 0, "w") , (31375, 0, "h") , (31376, 0, "e") , (31377, 0, "r") , (31378, 0, "e") , (31379, 0, " ") , (31380, 0, "n") , (31381, 0, "o") , (31382, 0, "t") , (31383, 0, "i") , (31384, 0, "f") , (31385, 0, "y") , (31386, 0, ":") , (31387, 0, " ") , (31379, 9, " ") , (31380, 0, "N") , (31381, 0, "o") , (31382, 0, "t") , (31383, 0, "i") , (31384, 0, "f") , (31385, 0, "y") , (31386, 0, ":") , (31387, 0, " ") , (31388, 0, "F") , (31389, 0, "n") , (31390, 0, "M") , (31391, 0, "u") , (31392, 0, "t") , (31393, 0, "(") , (31394, 0, ")") , (31395, 0, " ") , (31164, 0, "\n ") , (31169, 0, "/") , (31170, 0, "/") , ( 31171 , 0 , "fn notify(&mut self, _items: &[Self::Item], _at_marker: ItemMarker)" ) , (31474, 0, "i") , (31475, 0, "t") , (31476, 0, "e") , (31477, 0, "m") , (31478, 0, "s") , (31479, 0, ":") , (31480, 0, " ") , (31481, 0, "&") , (31482, 0, "[") , (31483, 0, "S") , (31484, 0, "e") , (31485, 0, "l") , (31486, 0, "f") , (31487, 0, ":") , (31488, 0, ":") , (31489, 0, "I") , (31490, 0, "t") , (31491, 0, "e") , (31492, 0, "m") , (31493, 0, "]") , (31474, 7, "") , (31476, 0, "c") , (31477, 0, ":") , (31478, 0, ":") , (31478, 1, "") , (31477, 1, "") , (31476, 1, "") , (31476, 4, "C") , (31454, 0, " ") , (31488, 0, ",") , (31489, 0, " ") , (31490, 0, "ItemMarker") , (31501, 4, "C") , (31163, 0, "\n ") , (31168, 0, "\n ") , (31164, 4, "") , (31169, 0, "f") , (31170, 0, "n") , (31171, 0, " ") , (31172, 0, "n") , (31173, 0, "o") , (31174, 0, "_") , (31175, 0, "n") , (31176, 0, "o") , (31177, 0, "t") , (31178, 0, "i") , (31179, 0, "f") , (31180, 0, "y") , (31181, 0, "(") , (31181, 1, "") , (31181, 0, "(&[C::Item], ItemMarker)") , (31208, 0, " ") , (31209, 0, "{") , (31210, 0, "}") , (31182, 0, "_") , (31183, 0, "i") , (31184, 0, "t") , (31185, 0, "e") , (31186, 0, "m") , (31187, 0, "s") , (31188, 0, ",") , (31189, 0, " ") , (31188, 1, "") , (31188, 0, ":") , (31202, 0, "m") , (31203, 0, "a") , (31204, 0, "r") , (31205, 0, "k") , (31206, 0, "e") , (31207, 0, "r") , (31208, 0, ":") , (31209, 0, " ") , (31202, 0, "_") , (37128, 0, "\n ") , (37133, 0, "\n ") , (37129, 4, "") , ( 37134 , 0 , "unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item], notify: Notify)" ) , (37222, 16, "") , (37158, 8, "") , (31415, 0, "n") , (31416, 0, "o") , (31417, 0, "t") , (31418, 0, "i") , (31415, 4, "") , (31429, 0, "_") , (31430, 0, "a") , (31431, 0, "n") , (31432, 0, "d") , (31433, 0, "_") , (31434, 0, "n") , (31435, 0, "o") , (31436, 0, "t") , (31437, 0, "i") , (31438, 0, "f") , (31439, 0, "y") , (37226, 0, " ") , (37227, 0, "{") , (37228, 0, "\n ") , (37237, 0, "\n ") , (37229, 8, "") , (37230, 8, " }") , (37229, 0, " ") , (37237, 0, "i") , (37238, 0, "n") , (37239, 0, "s") , (37240, 0, "e") , (37241, 0, "r") , (37242, 0, "t") , (37243, 0, "_") , (37244, 0, "a") , (37237, 8, "insert_at_iter_and_notify") , (37262, 0, "(") , (37263, 0, "s") , (37264, 0, "e") , (37265, 0, "l") , (37266, 0, "f") , (37267, 0, ",") , (37268, 0, " ") , (37269, 0, "c") , (37270, 0, "u") , (37271, 0, "r") , (37272, 0, "s") , (37273, 0, "o") , (37274, 0, "r") , (37275, 0, ",") , (37276, 0, " ") , (37277, 0, "c") , (37278, 0, "o") , (37279, 0, "n") , (37280, 0, "t") , (37281, 0, "e") , (37282, 0, "n") , (37283, 0, "t") , (37284, 0, "s") , (37285, 0, ",") , (37286, 0, " ") , (37287, 0, "n") , (37288, 0, "o") , (37287, 2, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (37297, 18, ")") , (37297, 26, "") , (37296, 1, "") , (37296, 0, ")") , (37297, 0, ";") , (37297, 1, "") , (37237, 0, "S") , (37238, 0, "e") , (37239, 0, "F") , (37239, 1, "") , (37239, 0, "l") , (37240, 0, "f") , (37241, 0, ":") , (37242, 0, ":") , (37237, 6, "") , (37237, 25, "") , (37237, 1, "") , (37241, 0, ".") , (37242, 0, "insert_at_iter_and_notify") , (37267, 0, "(") , (37268, 1, "") , (37268, 1, "") , (37296, 0, ";") , (37296, 1, "") , (37286, 0, "s") , (37287, 0, "e") , (37288, 0, "l") , (37289, 0, "f") , (37290, 0, ":") , (37291, 0, ":") , (37286, 1, "") , (37286, 0, "S") , (37190, 4, "") , (37190, 0, "mut ") , (34363, 0, "\n ") , (34376, 0, "\n ") , (34364, 12, "") , (34377, 0, "/") , (34378, 0, "/") , (34379, 0, " ") , (34380, 0, "N") , (34381, 0, "o") , (34382, 0, "t") , (34383, 0, "i") , (34384, 0, "f") , (34385, 0, "y") , (34386, 0, "\n ") , (34399, 0, "n") , (34400, 0, "o") , (34401, 0, "t") , (34402, 0, "i") , (34403, 0, "f") , (34399, 5, "notify") , (34405, 0, "(") , (34405, 1, "") , (34399, 0, "// ") , (34399, 3, "") , (34405, 0, "(") , (34406, 0, "c") , (34407, 0, "o") , (34408, 0, "n") , (34409, 0, "t") , (34410, 0, "e") , (34411, 0, "n") , (34412, 0, "t") , (34413, 0, "s") , (34414, 0, ",") , (34415, 0, " ") , (34416, 0, "M") , (34417, 0, "a") , (34418, 0, "r") , (34416, 3, "") , (34416, 0, "I") , (34417, 0, "t") , (34418, 0, "e") , (34419, 0, "m") , (34416, 4, "ItemMarker") , (34426, 0, " ") , (34427, 0, "{") , (34428, 0, "\n ") , (34445, 0, "\n ") , (34429, 16, "") , (34430, 16, " }") , (34443, 0, ")") , (34429, 0, " ") , (34445, 0, "p") , (34446, 0, "t") , (34447, 0, "r") , (34448, 0, ":") , (34449, 0, " ") , (34450, 0, "e") , (34451, 0, ",") , (34452, 0, "\n ") , (34469, 0, "P") , (34470, 0, "h") , (34471, 0, "a") , (34469, 3, "PhantomData") , (34469, 11, "") , (34469, 0, "_") , (34469, 1, "_phanton") , (34477, 0, ":") , (34478, 0, " ") , (34479, 0, "PhantomData") , (34476, 1, "m") , (1776, 1, "m") , (34505, 0, ";") , (31506, 0, "m") , (31507, 0, "u") , (31508, 0, "t") , (31509, 0, " ") , (34369, 21, "") , (34368, 1, "") , (31163, 0, "\n ") , (31168, 0, "\n ") , (31164, 4, "") , ( 31169 , 0 , "unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {" ) , (31192, 1, "") , (31191, 1, "") , (31191, 0, "_") , (31191, 1, "") , (31191, 0, "a") , (31192, 0, "n") , (31193, 0, "d") , (31194, 0, "_") , (31195, 0, "n") , (31196, 0, "o") , (31197, 0, "t") , (31198, 0, "i") , (31199, 0, "f") , (31200, 0, "y") , (31201, 0, "<") , (31202, 0, "N") , (31203, 0, "o") , (31204, 0, "t") , (31205, 0, "i") , (31206, 0, "f") , (31207, 0, "y") , (31208, 0, ">") , (31305, 0, ",") , (31306, 0, " ") , (31307, 0, ", mut notify: Notify") , (31308, 1, "") , (31307, 1, "") , (31327, 0, "\n ") , (31336, 0, "\n ") , (31328, 8, "") , (31329, 8, " }") , (31326, 1, "") , (31325, 1, "") , (31325, 0, ")") , (31304, 1, "") , (31325, 0, "\n ") , (31330, 0, "where Notify: FnMut(&[C::Item], ItemMarker) {") , (31330, 0, " ") , (31383, 0, "\n ") , (31392, 4, "") , (31392, 0, "s") , (31393, 0, "e") , (31394, 0, "l") , (31395, 0, "f") , (31396, 0, ".") , (31397, 0, "i") , (31398, 0, "n") , (31399, 0, "s") , (31400, 0, "e") , (31401, 0, "r") , (31402, 0, "t") , ( 31397 , 6 , "insert_node_at(cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool)" ) , (31412, 22, "c") , (31413, 0, "u") , (31414, 0, "r") , (31415, 0, "s") , (31416, 0, "o") , (31417, 0, "r") , (31420, 20, "c") , (31421, 0, "o") , (31422, 0, "n") , (31423, 0, "t") , (31424, 0, "e") , (31425, 0, "n") , (31426, 0, "t") , (31427, 0, "s") , (31430, 18, "n") , (31431, 0, "e") , (31432, 0, "w") , (31433, 0, "_") , (31434, 0, "u") , (31435, 0, "s") , (31436, 0, "e") , (31437, 0, "r") , (31438, 0, "l") , (31439, 0, "e") , (31440, 0, "n") , (31443, 17, "m") , (31444, 0, "o") , (31445, 0, "v") , (31446, 0, "e") , (31447, 0, "_") , (31448, 0, "c") , (31449, 0, "u") , (31450, 0, "r") , (31451, 0, "s") , (31452, 0, "o") , (31453, 0, "r") , (31455, 0, ";") , (31383, 80, "") , (31165, 218, "") , (31164, 1, "") , ( 27886 , 0 , " unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n" ) , (27890, 0, "// ") , ( 28016 , 126 , " unsafe fn insert_node_and_notify(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {\n" ) , (28016, 4, " ") , (28016, 8, " ") , (28177, 0, " ") , (31383, 0, "\n ") , (31392, 0, "\n ") , (31384, 8, "") , (31393, 0, "n") , (31394, 0, "o") , (31395, 0, "t") , (31396, 0, "i") , (31397, 0, "f") , (31398, 0, "y") , (31399, 0, "(") , (31400, 0, "c") , (31401, 0, "o") , (31402, 0, "n") , (31403, 0, "t") , (31404, 0, "e") , (31405, 0, "n") , (31406, 0, "t") , (31407, 0, "s") , (31408, 0, ",") , (31409, 0, " ") , (31410, 0, "M") , (31410, 1, "") , (31410, 0, "I") , (31411, 0, "t") , (31412, 0, "e") , (31413, 0, "m") , (31410, 4, "ItemMarker") , (31420, 0, " ") , (31421, 0, "{") , (31422, 0, "\n ") , (31435, 0, "\n ") , (31423, 12, "") , (31424, 12, " }") , (31433, 0, ")") , (31423, 0, " ") , (31435, 0, "p") , (31436, 0, "t") , (31437, 0, "r") , (31438, 0, ":") , (31439, 0, " ") , (31440, 0, "n") , (31441, 0, "e") , (31442, 0, "w") , (31443, 0, "_") , (31444, 0, "n") , (31445, 0, "o") , (31440, 6, "new_node") , (31448, 0, "_") , (31449, 0, "p") , (31450, 0, "t") , (31451, 0, "r") , (31452, 0, ",") , (31453, 0, "\n ") , (31466, 0, "_") , (31467, 0, "p") , (31468, 0, "h") , (31466, 3, "_phantom") , (31474, 0, ":") , (31475, 0, " ") , (31476, 0, "P") , (31477, 0, "h") , (31476, 2, "PhantomData") , (31498, 0, ";") , (31505, 65, "") , (36968, 1, "") , (36967, 1, "") , ( 36955 , 12 , "insert_node_and_notify(cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)" ) , (36977, 105, "") , (37006, 0, ",") , (37007, 0, " ") , (37008, 0, "n") , (37009, 0, "o") , (37010, 0, "t") , (37011, 0, "i") , (37012, 0, "f") , (37013, 0, "y") , (37525, 0, ",") , (37526, 0, " ") , (37527, 0, "n") , (37528, 0, "o") , (37529, 0, "t") , (37530, 0, "i") , (37531, 0, "f") , (37532, 0, "y") , (37484, 1, "") , (37483, 1, "") , (37483, 0, "a") , (37484, 0, "n") , (37485, 0, "d") , (37486, 0, "_") , (37487, 0, "n") , (37488, 0, "o") , (37489, 0, "t") , (37490, 0, "i") , (37491, 0, "f") , (37492, 0, "y") , (37736, 0, ";") , (37736, 1, "") , (37483, 10, "") , (37483, 0, "at") , (37526, 7, "") , (37525, 1, "") , (37007, 7, "") , (37006, 1, "") , ( 36977 , 0 , "(cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)" ) , (36955, 127, "insert_node_") , (36967, 0, "at") , ( 31505 , 0 , "\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}" ) , (31498, 1, "") , (31476, 11, "Ph") , (31476, 2, "PhantomData") , (31498, 0, ";") , (31505, 65, "") , (36967, 2, "") , ( 36955 , 12 , "insert_node_and_notify(cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)" ) , (36977, 105, "") , (37006, 0, ",") , (37007, 0, " notify") , (37525, 0, ",") , (37526, 0, " notify") , (37483, 2, "") , (37483, 0, "and_notify") , (37736, 0, ";") , (37574, 0, "\n ") , ( 37579 , 0 , "\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}" ) , (37575, 4, "") , (37575, 1, "") , (37574, 1, "") , (37806, 0, "// ") , (37731, 0, "// ") , (37643, 0, "// ") , (37490, 3, "") , (37484, 5, "") , (36974, 3, "") , (36968, 5, "") , (28049, 3, "") , (28043, 5, "") , (2704, 3, "") , (2603, 3, "") , (31702, 1, "") , (31701, 1, "") , (31700, 1, "") , (31699, 1, "") , (31698, 1, "") , (31697, 1, "") , (31696, 1, "") , (31695, 1, "") , (31694, 1, "") , (31693, 1, "") , (31692, 1, "") , (31778, 59, "") , (31777, 1, "") , (31777, 0, "\n") , (31778, 0, " where Notify: FnMut(&[C::Item], ItemMarker) ") , (31692, 0, "_and_notify") , (31703, 125, "_") , ( 31703 , 1 , "(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)\n where Notify: FnMut(&[C::It" ) , (31793, 0, "// ") , (31668, 0, "// ") , (31577, 3, "") , (31660, 128, "") , (31573, 4, " ") , ( 31573 , 0 , " // unsafe fn insert_at_iter_and_notify(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)\n" ) , (31792, 64, "") , (31701, 8, " ") , ( 31701 , 0 , " // where Notify: FnMut(&[C::Item], ItemMarker) {\n" ) , (31765, 12, " ") , (31765, 8, " ") , (28014, 0, "// ") , (27884, 3, "") , (28006, 156, "") , (27880, 4, " ") , ( 27880 , 0 , " // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)\n" ) , (28036, 8, " ") , (28175, 0, "// ") , ( 28226 , 0 , "\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {" ) , (28163, 12, " ") , (28036, 127, "") , (31374, 0, "c") , (31375, 0, ":") , (31375, 1, "") , (31374, 1, "") , (31374, 0, "C") , (31375, 0, ":") , (31376, 0, ":") , (31384, 0, "s") , (31385, 0, "e") , (31386, 0, ".") , (31387, 0, "f") , (31387, 1, "") , (31386, 1, "") , (31386, 0, "l") , (31387, 0, "f") , (31388, 0, ".") , (31389, 0, "c") , (31390, 0, "o") , (31391, 0, "n") , (31392, 0, "f") , (31393, 0, "i") , (31394, 0, "g") , (31395, 0, ",") , (31396, 0, " ") , (31384, 0, "&") , (31385, 0, "m") , (31386, 0, "u") , (31387, 0, "t") , (31388, 0, " ") , (31388, 1, "") , (31384, 4, "") , (31396, 1, "") , (31386, 10, "") , (31386, 0, ".f") , (31384, 4, "") , (31374, 3, "") , (31374, 0, "c:") , (31374, 2, "") , (28091, 127, "") , (28036, 4, " ") , ( 28036 , 0 , " unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n" ) , (28175, 3, "") , (28036, 4, " ") , ( 28166 , 0 , "\n // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, mut notify: Notify)" ) , (28036, 8, " ") , (27880, 156, "") , (27884, 0, "// ") , (28014, 3, "") , (31765, 4, " ") , (31765, 8, " ") , ( 31860 , 0 , "\n // where Notify: FnMut(&[C::Item], ItemMarker) {" ) , (31765, 12, " ") , (31701, 64, "") , ( 31792 , 0 , "\n // unsafe fn insert_at_iter_and_notify(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)" ) , (31701, 8, " ") , (31573, 128, "") , (31577, 0, "// ") , (31796, 3, "") , (31668, 3, "") , (2701, 0, "// ") , (2603, 0, "// ") , (2704, 3, "") , (2603, 3, "") , (2701, 0, "// ") , (2603, 0, "// ") , (37469, 0, "ify") , (37468, 0, "nd_no") , (36961, 0, "ify") , (36960, 0, "nd_no") , (28044, 0, "ify") , (28043, 0, "nd_no") , (37490, 3, "") , (37484, 5, "") , (36974, 3, "") , (36968, 5, "") , (28049, 3, "") , (28043, 5, "") , (31698, 11, "") , (37539, 64, "") , (44354, 0, "\n ") , ( 44359 , 0 , "\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}" ) , (44355, 4, "") , (44419, 0, "\n ") , (44420, 4, "") , (44354, 1, "") , (41488, 0, "\n ") , ( 41493 , 0 , " unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {\n" ) , (41607, 12, " ") , (41489, 8, " ") , (41607, 0, "// ") , (41493, 0, "// ") , (41692, 0, "<") , (41693, 0, "N") , (41694, 0, "o") , (41695, 0, "t") , (41696, 0, "i") , (41697, 0, "f") , (41698, 0, "y") , (41699, 0, ">") , (41794, 0, ",") , (41795, 0, " ") , (41796, 0, "m") , (41797, 0, "u") , (41798, 0, "t") , (41799, 0, " ") , (41800, 0, "n") , (41801, 0, "o") , (41802, 0, "t") , (41803, 0, "i") , (41804, 0, "f") , (41805, 0, "y") , (41806, 0, ":") , (41807, 0, " ") , (41808, 0, "N") , (41809, 0, "o") , (41810, 0, "t") , (41811, 0, "i") , (41812, 0, "f") , (41813, 0, "y") , (41815, 1, "") , (41815, 0, "\n ") , (41820, 0, " ") , (41824, 0, " ") , (41828, 0, "w") , (41829, 0, "h") , (41830, 0, "e") , (41831, 0, "r") , (41832, 0, "e") , (41833, 0, " ") , (41834, 1, "") , (41834, 0, "Notify: FnMut(&[C::Item], ItemMarker) {") , (44136, 0, ",") , (44137, 0, " ") , (44138, 0, "n") , (44139, 0, "o") , (44140, 0, "t") , (44141, 0, "i") , (44142, 0, "f") , (44143, 0, "y") , (43103, 0, "\n ") , (43116, 0, "\n ") , (43104, 12, "") , (43117, 0, "n") , (43118, 0, "o") , (43119, 0, "t") , (43120, 0, "i") , (43121, 0, "f") , (43122, 0, "y") , (43123, 0, "(") , (43124, 0, "n") , (43125, 0, "e") , (43126, 0, "w") , (43127, 0, "_") , (43128, 0, "i") , (43129, 0, "t") , (43130, 0, "e") , (43131, 0, "m") , (43132, 0, "s") , (43133, 0, ",") , (43134, 0, " ") , (43135, 0, "I") , (43136, 0, "t") , (43137, 0, "e") , (43138, 0, "m") , (43135, 4, "ItemMarker") , (43145, 0, " ") , (43146, 0, "{") , (43147, 0, "\n ") , (43164, 0, "\n ") , (43148, 16, "") , (43149, 16, " }") , (43162, 0, ")") , (43148, 0, " ") , (43164, 0, "_") , (43164, 1, "_phantom") , (43172, 0, ":") , (43173, 0, " ") , (43174, 0, "P") , (43175, 0, "a") , (43176, 0, "h") , (43174, 3, "PhantomData") , (43147, 0, "\n ") , (43202, 0, ",") , (43148, 16, "") , (43148, 0, " ") , (43164, 0, "p") , (43165, 0, "t") , (43166, 0, "r") , (43167, 0, ":") , (43168, 0, " ") , (43169, 0, "e") , (43170, 0, ",") , (43225, 0, ";") , (43104, 122, "") , (43103, 1, "") , (43819, 0, "\n ") , ( 43832 , 0 , "\n notify(new_items, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });" ) , (43820, 12, "") , (45213, 0, ",") , (45214, 0, " ") , (45215, 0, "n") , (45216, 0, "o") , (45215, 2, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (45215, 53, "no") , (45217, 0, "n") , (45217, 1, "") , (45217, 0, "_") , (45218, 0, "n") , (45219, 0, "o") , (45220, 0, "f") , (45220, 1, "") , (45220, 0, "t") , (45221, 0, "i") , (45222, 0, "f") , (45223, 0, "y") , (45215, 0, "S") , (45216, 0, "e") , (45217, 0, "l") , (45218, 0, "f") , (45219, 0, ":") , (45220, 0, ":") , (45855, 0, "Self::no_notify") , (45855, 15, "") , (45855, 0, ",") , (45856, 0, " ") , (45857, 0, "Self::no_notify") , (46407, 0, ",") , (46408, 0, " ") , (46409, 0, "Self::no_notify") , (46484, 0, ",") , (46485, 0, " ") , (46486, 0, "Self::no_notify") , (46846, 0, ",") , (46847, 0, " ") , (46848, 0, "Self::no_notify") , (31776, 0, "&") , (28161, 0, "&") , (44263, 0, "&") , (46851, 0, "&") , (46489, 0, "&") , (46412, 0, "&") , (45860, 0, "&") , (31765, 3, "") , (31765, 1, "") , (31774, 0, "m") , (31775, 0, "u") , (31776, 0, "t") , (31777, 0, " ") , (46855, 0, "m") , (46492, 0, "m") , (46414, 0, "m") , (45861, 0, "m") , (46859, 0, "u") , (46495, 0, "u") , (46416, 0, "u") , (45862, 0, "u") , (46863, 0, "t") , (46498, 0, "t") , (46418, 0, "t") , (45863, 0, "t") , (46867, 0, " ") , (46501, 0, " ") , (46420, 0, " ") , (45864, 0, " ") , (44264, 0, "m") , (44265, 0, "u") , (44266, 0, "t") , (44267, 0, " ") , (28149, 4, "") , (28158, 0, "m") , (28159, 0, "u") , (28160, 0, "t") , (28161, 0, " ") , (31500, 79, "") , (31499, 1, "") , (1182, 1, "") , (1182, 0, "1") , (1183, 0, "9") , (1184, 0, "9") , (1184, 1, "") , (1183, 1, "") , (1183, 0, "0") , (1184, 0, "0") , (1182, 3, "2") , (1572, 1, "") , (1572, 0, "1") , (1573, 0, "0") , ( 26440 , 0 , " let walk_height = (*parent).height as usize - 2;\n" ) , (26452, 0, "// ") , (26534, 29, "") , (26534, 0, "(") , (26535, 0, "*") , (26536, 0, "n") , (26537, 0, ")") , (26538, 0, ".") , (26539, 0, "h") , (26540, 0, "e") , (26541, 0, "i") , (26542, 0, "g") , (26543, 0, "h") , (26544, 0, "t") , (26545, 0, " ") , (26546, 0, "-") , (26547, 0, " ") , (26548, 0, "1") , (26549, 0, " ") , (26550, 0, "a") , (26551, 0, "s") , (26552, 0, " ") , (26553, 0, "u") , (26554, 0, "s") , (26555, 0, "i") , (26556, 0, "z") , (26557, 0, "e") , (26549, 9, "") , (26545, 0, " as usize") , (20003, 1, "") , (20003, 0, ">") , (20003, 1, "") , (20003, 0, "-") , (20003, 1, "") , (20003, 0, "=") , (20006, 13, "") , (20006, 0, "s") , (20007, 0, "e") , (20008, 0, ".") , (20008, 1, "") , (20008, 0, "l") , (20009, 0, "f") , (20010, 0, ".") , (20011, 0, "h") , (20012, 0, "e") , (20013, 0, "a") , (20014, 0, "d") , (20015, 0, " ") , (20016, 0, "a") , (20017, 0, "s") , (20018, 0, " ") , (20019, 0, "u") , (20019, 1, "") , (20018, 1, "") , (20017, 1, "") , (20016, 1, "") , (20015, 1, "") , (20015, 0, " ") , (20016, 0, "a") , (20017, 0, "s") , (20018, 0, " ") , (20019, 0, "u") , (20020, 0, "s") , (20021, 0, "i") , (20022, 0, "z") , (20023, 0, "e") , (20015, 9, "") , (20011, 4, "") , (20011, 0, "h") , (20012, 0, "e") , (20013, 0, "i") , (20014, 0, "g") , (20015, 0, "h") , (20016, 0, "t") , (20011, 0, "n") , (20012, 0, "o") , (20013, 0, "d") , (20014, 0, "e") , (20015, 0, ".") , (20011, 4, "h") , (20012, 0, "e") , (20013, 0, "a") , (20014, 0, "d") , (20195, 0, "\n ") , (20212, 0, "d") , (20213, 0, "b") , (20214, 0, "g") , (20215, 0, "!") , (20216, 0, "(") , (20217, 0, "n") , (20218, 0, ".") , (20219, 0, "p") , (20220, 0, "a") , (20221, 0, "r") , (20222, 0, "e") , (20223, 0, "n") , (20224, 0, "t") , (20225, 0, ")") , (20226, 0, ";") , (20227, 0, "\n ") , (20228, 16, "") , (20196, 0, " dbg!(n.parent);\n") , (20249, 8, "s") , (20250, 0, "e") , (20251, 0, "l") , (20252, 0, "f") , (20253, 0, ".") , (20254, 0, "h") , (20255, 0, "e") , (20256, 0, "a") , (20257, 0, "d") , (20249, 0, "&") , (20259, 0, " ") , (20260, 0, "a") , (20261, 0, "s") , (20262, 0, " ") , (20263, 0, "&") , (20264, 0, "*") , (20264, 1, "") , (20263, 1, "") , (20263, 0, "*") , (20264, 0, "c") , (20265, 0, "o") , (20266, 0, "n") , (20267, 0, "s") , (20268, 0, "t") , (20269, 0, " ") , (20270, 0, "_") , (1183, 0, "0") , (20274, 0, "\n dbg!(&self.head as *const _);") , (20274, 0, "\n dbg!(n.parent);") , (20197, 32, "") , (20218, 10, "n") , (40996, 0, "\n ") , (41017, 0, "\n ") , (40997, 20, "") , (41018, 0, "\n ") , (40998, 20, "") , (41019, 0, "\n ") , (40999, 20, "") , (41000, 20, "") , (40999, 0, " ") , (41019, 0, "l") , (41020, 0, "e") , (41021, 0, "t") , (41022, 0, " ") , (41023, 0, "m") , (41024, 0, "u") , (41025, 0, "t") , (41026, 0, " ") , (41027, 0, "s") , (41028, 0, "k") , (41029, 0, "i") , (41030, 0, "p") , (41031, 0, "_") , (41032, 0, "h") , (41033, 0, "e") , (41034, 0, "i") , (41035, 0, "g") , (41036, 0, "h") , (41037, 0, "t") , (41038, 0, " ") , (41039, 0, "=") , (41040, 0, " ") , (41041, 0, "1") , (41042, 0, ";") , (41042, 1, "") , (41041, 1, "") , (41041, 0, "-") , (41041, 1, "") , (41041, 0, "0") , (41042, 0, ";") , (40998, 0, " ") , (41018, 0, "/") , (41019, 0, "/") , (41020, 0, " ") , (41021, 0, "W") , (41022, 0, "e") , (41023, 0, " ") , (41024, 0, "n") , (41025, 0, "e") , (41026, 0, "e") , (41027, 0, "d") , (41028, 0, " ") , (41029, 0, "t") , (41030, 0, "o") , (41031, 0, " ") , (41032, 0, "u") , (41033, 0, "p") , (41034, 0, "d") , (41035, 0, "a") , (41036, 0, "t") , (41037, 0, "e") , (41038, 0, " ") , (41039, 0, "a") , (41040, 0, "l") , (41041, 0, "l") , (41042, 0, " ") , (41043, 0, "t") , (41044, 0, "h") , (41045, 0, "e") , (41046, 0, " ") , (41047, 0, "n") , (41048, 0, "o") , (41049, 0, "d") , (41050, 0, "e") , (41051, 0, "s") , (41052, 0, " ") , (41053, 0, "t") , (41054, 0, "h") , (41055, 0, "a") , (41056, 0, "t") , (41057, 0, " ") , (41021, 37, "I") , (41022, 0, "f") , (41023, 0, " ") , (41024, 0, "y") , (41025, 0, "o") , (41026, 0, "u") , (41027, 0, " ") , (41028, 0, "i") , (41029, 0, "m") , (41030, 0, "a") , (41031, 0, "g") , (41032, 0, "i") , (41033, 0, "n") , (41034, 0, "e") , (41035, 0, " ") , (41036, 0, "t") , (41037, 0, "h") , (41038, 0, "i") , (41039, 0, "s") , (41040, 0, " ") , (41041, 0, "n") , (41042, 0, "o") , (41043, 0, "d") , (41044, 0, "e") , (41045, 0, " ") , (41046, 0, "a") , (41047, 0, "s") , (41048, 0, " ") , (41049, 0, "b") , (41050, 0, "e") , (41050, 1, "") , (41049, 1, "") , (41049, 0, "a") , (41050, 0, " ") , (41051, 0, "b") , (41052, 0, "i") , (41053, 0, "g") , (41054, 0, " ") , (41055, 0, "b") , (41056, 0, "u") , (41057, 0, "i") , (41058, 0, "l") , (41059, 0, "d") , (41060, 0, "i") , (41061, 0, "n") , (41062, 0, "g") , (41063, 0, ",") , (41064, 0, " ") , (41065, 0, "w") , (41066, 0, "e") , (41067, 0, " ") , (41068, 0, "n") , (41069, 0, "e") , (41070, 0, "e") , (41071, 0, "d") , (41072, 0, " ") , (41073, 0, "t") , (41074, 0, "o") , (41075, 0, " ") , (41076, 0, "u") , (41077, 0, "p") , (41078, 0, "d") , (41079, 0, "a") , (41080, 0, "t") , (41081, 0, "e") , (41082, 0, " ") , (41083, 0, "a") , (41084, 0, "l") , (41085, 0, "l") , (41086, 0, " ") , (41087, 0, "t") , (41088, 0, "h") , (41089, 0, "e") , (41090, 0, " ") , (41091, 0, "n") , (41092, 0, "o") , (41093, 0, "d") , (41094, 0, "e") , (41095, 0, "s") , (41083, 13, "t") , (41084, 0, "h") , (41085, 0, "e") , (41086, 0, " ") , (41087, 0, "p") , (41088, 0, "a") , (41089, 0, "r") , (41090, 0, "e") , (41091, 0, "n") , (41092, 0, "t") , (41093, 0, " ") , (41094, 0, "o") , (41095, 0, "f") , (41096, 0, " ") , (41097, 0, "a") , (41098, 0, "l") , (41099, 0, "l") , (41100, 0, " ") , (41101, 0, "t") , (41102, 0, "h") , (41103, 0, "e") , (41104, 0, " ") , (41105, 0, "n") , (41106, 0, "o") , (41107, 0, "d") , (41108, 0, "e") , (41109, 0, "s") , (41110, 0, " ") , (41111, 0, "w") , (41112, 0, "e") , (41113, 0, " ") , (41114, 0, "c") , (41115, 0, "a") , (41116, 0, "n") , (41116, 1, "") , (41116, 0, "s") , (41117, 0, "t") , (41118, 0, " ") , (41119, 0, "a") , (41120, 0, " ") , (41121, 0, "s") , (41121, 1, "") , (41121, 0, "s") , (41122, 0, "h") , (41123, 0, "a") , (41124, 0, "d") , (41125, 0, "o") , (41126, 0, "w") , (41127, 0, " ") , (41128, 0, "o") , (41129, 0, "v") , (41130, 0, "e") , (41131, 0, "r") , (41132, 0, ".") , (41133, 0, " ") , (41134, 0, "S") , (41135, 0, "o") , (41136, 0, ",") , (41137, 0, " ") , (41138, 0, "t") , (41139, 0, "h") , (41140, 0, "e") , (41141, 0, " ") , (41142, 0, "n") , (41143, 0, "e") , (41138, 6, "i") , (41139, 0, "f") , (41140, 0, " ") , (41141, 0, "w") , (41141, 1, "") , (41141, 0, "o") , (41142, 0, "u") , (41143, 0, "r") , (41144, 0, " ") , (41145, 0, "h") , (41146, 0, "e") , (41147, 0, "i") , (41148, 0, "g") , (41149, 0, "h") , (41150, 0, "t") , (41151, 0, " ") , (41152, 0, "i") , (41153, 0, "s") , (41154, 0, " ") , (41155, 0, "2") , (41156, 0, ",") , (41157, 0, " ") , (41157, 1, "") , (41156, 1, "") , (41155, 1, "") , (41155, 0, "3") , (41156, 0, " ") , (41157, 0, "a") , (41158, 0, "n") , (41159, 0, "d") , (41160, 0, " ") , (41161, 0, "t") , (41162, 0, "h") , (41163, 0, "e") , (41164, 0, " ") , (41165, 0, "n") , (41166, 0, "e") , (41167, 0, "x") , (41168, 0, "t") , (41169, 0, " ") , (41170, 0, "n") , (41171, 0, "o") , (41172, 0, "d") , (41173, 0, "e") , (41174, 0, "s") , (41175, 0, " ") , (41176, 0, "h") , (41177, 0, "a") , (41178, 0, "v") , (41179, 0, "e") , (41180, 0, " ") , (41181, 0, "h") , (41182, 0, "e") , (41183, 0, "i") , (41184, 0, "g") , (41185, 0, "h") , (41186, 0, "t") , (41187, 0, "s") , (41188, 0, " ") , (41189, 0, "1") , (41190, 0, " ") , (41191, 0, "a") , (41192, 0, "n") , (41193, 0, "d") , (41194, 0, " ") , (41195, 0, "2") , (41196, 0, ",") , (41197, 0, " ") , (41198, 0, "t") , (41199, 0, "h") , (41200, 0, "e") , (41201, 0, "y") , (41202, 0, " ") , (41203, 0, "b") , (41204, 0, "o") , (41205, 0, "t") , (41206, 0, "h") , (41207, 0, " ") , (41208, 0, "n") , (41209, 0, "e") , (41210, 0, "e") , (41211, 0, "d") , (41212, 0, " ") , (41213, 0, "n") , (41214, 0, "e") , (41215, 0, "w") , (41216, 0, " ") , (41217, 0, "p") , (41218, 0, "a") , (41219, 0, "r") , (41220, 0, "e") , (41221, 0, "n") , (41222, 0, "t") , (41223, 0, "s") , (41224, 0, ".") , (41225, 0, " ") , (41226, 0, "T") , (41227, 0, "h") , (41228, 0, "e") , (41229, 0, " ") , (41229, 1, "") , (41228, 1, "") , (41227, 1, "") , (41226, 1, "") , (41225, 1, "") , ( 40998 , 227 , " // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents." ) , (41511, 0, "\n ") , (41536, 0, "s") , (41537, 0, "k") , (41538, 0, "i") , (41539, 0, "p") , (41540, 0, "_") , (41536, 5, "skip_height") , (41547, 0, " ") , (41548, 0, "=") , (41549, 0, " ") , (41550, 0, "u") , (41551, 0, "s") , (41552, 0, "i") , (41553, 0, "z") , (41554, 0, "e") , (41555, 0, ":") , (41556, 0, ":") , (41557, 0, "m") , (41558, 0, "a") , (41559, 0, "x") , (41550, 10, "s") , (41551, 0, "k") , (41552, 0, "i") , (41553, 0, "p") , (41554, 0, "_") , (41550, 5, "skip_height") , (41561, 0, ".") , (41562, 0, "m") , (41563, 0, "a") , (41564, 0, "p") , (41564, 1, "") , (41564, 0, "x") , (41565, 0, "(") , (41566, 0, "(") , (41567, 0, "*") , (41568, 0, "n") , (41569, 0, ")") , (41570, 0, ".") , (41571, 0, "h") , (41572, 0, "e") , (41573, 0, "i") , (41574, 0, "g") , (41575, 0, "h") , (41576, 0, "t") , (41577, 0, ")") , (41578, 0, ";") , (41577, 0, " ") , (41578, 0, "a") , (41579, 0, "s") , (41580, 0, " ") , (41581, 0, "s") , (41582, 0, "u") , (41582, 1, "") , (41581, 1, "") , (41580, 1, "") , (41579, 1, "") , (41578, 1, "") , (41577, 1, "") , (41577, 0, " ") , (41578, 0, "a") , (41579, 0, "s") , (41580, 0, " ") , (41581, 0, "u") , (41582, 0, "s") , (41583, 0, "i") , (41584, 0, "z") , (41585, 0, "e") , (41413, 10, "s") , (41414, 0, "k") , (41415, 0, "i") , (41416, 0, "p") , (41413, 4, "skip_height") , (41589, 1, "") , (41513, 0, " \n") , (41614, 50, "") , (41538, 0, " (*n).parent = new_parent;\n") , (40947, 0, "// ") , (41579, 10, "cursor.entries[height - 1].node") , (41594, 10, "s") , (41595, 0, "k") , (41596, 0, "i") , (41597, 0, "p") , (41594, 4, "skip_height") , (41605, 0, " ") , (41606, 0, "+") , (41607, 0, " ") , (41608, 0, "1") , (41594, 11, "(*n).height as usize") , (41664, 11, "") , (41664, 0, "u") , (41665, 0, "s") , (41666, 0, "i") , (41667, 0, "z") , (41668, 0, "e") , (41669, 0, ":") , (41670, 0, ":") , (41671, 0, "m") , (41672, 1, "") , (41672, 1, "") , (41675, 0, "skip_height") , (41686, 0, ",") , (41687, 0, " ") , (41370, 0, "\n ") , (41395, 0, "d") , (41396, 0, "b") , (41397, 0, "g") , (41395, 3, "dbg!") , (41399, 0, "(") , (41400, 0, "\"") , (41401, 0, "s") , (41402, 0, "k") , (41402, 1, "") , (41401, 1, "") , (41400, 1, "") , (41400, 0, "s") , (41401, 0, "k") , (41402, 0, "i") , (41403, 0, "p") , (41404, 0, "_") , (41400, 5, "skip_height") , (41411, 0, ")") , (41412, 0, ";") , (41413, 0, "\n ") , (41438, 0, "d") , (41439, 0, "b") , (41440, 0, "g") , (41441, 0, "!") , (41442, 0, "(") , (41443, 0, "(*n).height as usize") , (41463, 0, ")") , (41464, 0, ";") , (41465, 0, "\n ") , (41828, 0, " ") , (41466, 24, "") , (41805, 0, "-") , (41806, 0, " ") , (41807, 0, "1") , (41438, 0, "// ") , (41395, 0, "// ") , (41642, 0, "\n ") , (41667, 0, "/") , (41668, 0, "/") , (41669, 0, " ") , (41670, 0, "T") , (41671, 0, "O") , (41672, 0, "D") , (41673, 0, "O") , (41674, 0, ":") , (41675, 0, " ") , (41676, 0, "W") , (41677, 0, "e") , (41678, 0, " ") , (41679, 0, "c") , (41680, 0, "a") , (41681, 0, "n") , (41682, 0, " ") , (41683, 0, "c") , (41684, 0, "a") , (41685, 0, "c") , (41686, 0, "h") , (41687, 0, "e") , (41688, 0, " ") , (41689, 0, "t") , (41690, 0, "h") , (41691, 0, "i") , (41692, 0, "s") , (41693, 0, " ") , (41694, 0, "e") , (41695, 0, "a") , (41696, 0, "c") , (41697, 0, "h") , (41698, 0, " ") , (41699, 0, "t") , (41700, 0, "i") , (41701, 0, "m") , (41702, 0, "e") , (41703, 0, " ") , (41704, 0, "t") , (41705, 0, "h") , (41706, 0, "e") , (41707, 0, " ") , (41708, 0, "c") , (41709, 0, "u") , (41710, 0, "r") , (41708, 3, "h") , (41709, 0, "e") , (41710, 0, "i") , (41710, 1, "") , (41710, 0, "i") , (41711, 0, "g") , (41712, 0, "h") , (41713, 0, "t") , (41714, 0, " ") , (41715, 0, "g") , (41716, 0, "o") , (41717, 0, "e") , (41718, 0, "s") , (41719, 0, " ") , (41720, 0, "u") , (41721, 0, "p") , (41722, 0, "?") , (41679, 3, "c") , (41680, 0, "p") , (41681, 0, "u") , (41681, 1, "") , (41680, 1, "") , (41680, 0, "o") , (41681, 0, "u") , (41682, 0, "l") , (41683, 0, "d") , (20218, 0, "(") , (20232, 0, ",") , (20233, 0, " ") , (20234, 0, "*") , (20235, 0, "(") , (20235, 1, "") , (20234, 1, "") , (20234, 0, "(") , (20235, 0, "*") , (20236, 0, "n") , (20237, 0, ")") , (20238, 0, ".") , (20239, 0, "h") , (20240, 0, "e") , (20241, 0, "i") , (20242, 0, "g") , (20243, 0, "h") , (20244, 0, "t") , (20245, 0, ")") , (31088, 0, "\n ") , (31101, 0, "\n ") , (31089, 12, "") , (31102, 0, "\n ") , (31090, 12, "") , (31103, 0, "\n ") , (31091, 12, "") , (31104, 0, "\n ") , (31092, 12, "") , (31093, 12, "") , ( 31090 , 0 , " if height > 1 {\n let mut n = e;\n // let new_parent = cursor.entries[height - 1].node;\n\n // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents.\n let mut skip_height = 0;\n\n loop {\n // dbg!(skip_height);\n // dbg!((*n).height as usize);\n\n n = (*n).nexts_mut()[skip_height].node;\n if n.is_null() || (*n).height >= height as u8 { break; }\n \n // TODO: We could cache this each time the height goes up?\n (*n).parent = cursor.entries[(*n).height as usize + 1].node;\n skip_height = usize::max(skip_height, (*n).height as usize - 1);\n }\n }" ) , (32152, 16, " ") , (32130, 20, " ") , (32041, 24, " ") , (31956, 24, " ") , (31873, 24, " ") , (31848, 24, " ") , (31767, 24, " ") , (31703, 24, " ") , (31647, 24, " ") , (31601, 24, " ") , (31574, 20, " ") , (31528, 20, " ") , (31470, 20, " ") , (31390, 20, " ") , (31309, 20, " ") , (31231, 20, " ") , (31157, 20, " ") , (31122, 20, " ") , (31090, 16, " ") , (31089, 28, "\\") , (32053, 13, "") , (32052, 1, "") , (32035, 16, " ") , (31950, 20, " ") , (31869, 20, " ") , (31790, 20, " ") , (31769, 20, " ") , (31692, 20, " ") , (31632, 20, " ") , (31580, 20, " ") , (31538, 20, " ") , (31515, 16, " ") , (31473, 16, " ") , (31419, 16, " ") , (31343, 16, " ") , (31266, 16, " ") , (31192, 16, " ") , (31122, 16, " ") , (31091, 16, " ") , (31983, 0, "// ") , (31902, 0, "// ") , (31825, 0, "// ") , (31750, 0, "// ") , (31660, 0, "// ") , (31604, 0, "// ") , (31556, 0, "// ") , (31518, 0, "// ") , (31499, 0, "// ") , (31461, 0, "// ") , (31411, 0, "// ") , (31339, 0, "// ") , (31266, 0, "// ") , (31196, 0, "// ") , (31130, 0, "// ") , (31103, 0, "// ") , (32028, 3, "") , (31944, 3, "") , (31864, 3, "") , (31786, 3, "") , (31693, 3, "") , (31634, 3, "") , (31583, 3, "") , (31542, 3, "") , (31520, 3, "") , (31479, 3, "") , (31426, 3, "") , (31351, 3, "") , (31275, 3, "") , (31202, 3, "") , (31133, 3, "") , (31103, 3, "") , (31115, 1, "") , (31115, 0, "n") , (31116, 0, "e") , (31117, 0, "w") , (31118, 0, "_") , (31119, 0, "n") , (31120, 0, "o") , (31115, 6, "new_node") , (31123, 0, "_") , (31124, 0, "p") , (31125, 0, "t") , (31126, 0, "r") , (32249, 0, "// ") , (32205, 0, "// ") , (32133, 0, "// ") , (32068, 0, "// ") , (32049, 0, "// ") , (32011, 0, "// ") , (31854, 46, "") , (31854, 0, "n") , (31855, 0, "e") , (31856, 0, "w") , (31857, 0, "_") , (31858, 0, "n") , (31859, 0, "o") , (31854, 6, "new_node_ptr") , (31749, 74, "") , (31748, 1, "") , (31791, 0, ";") , (31128, 331, "") , (31089, 1, "") , (31376, 0, "n") , (31377, 0, "e") , (31378, 0, "w") , (31379, 0, "_") , (31391, 1, "") , (31390, 1, "") , (31389, 1, "") , (31388, 1, "") , (31387, 1, "") , (31386, 1, "") , (31555, 2, "") , (42035, 0, "\n ") , (42060, 0, "d") , (42061, 0, "b") , (42062, 0, "g") , (42063, 0, "!") , (42064, 0, "(") , (42065, 0, "n") , (42066, 0, ".") , (42067, 0, "c") , (42068, 0, "o") , (42069, 0, "n") , (42070, 0, "t") , (42071, 0, "e") , (42072, 0, "n") , (42073, 0, "t") , (42074, 0, "_") , (42067, 8, "content_slice") , (42080, 0, "(") , (42081, 0, ")") , (42082, 0, ")") , (42083, 0, ";") , (1939, 0, " ") , (1940, 0, "+") , (1941, 0, " ") , (1942, 0, "D") , (1943, 0, "e") , (1944, 0, "b") , (1945, 0, "u") , (1946, 0, "g") , (1942, 0, "f") , (1943, 0, "m") , (1944, 0, "t") , (1945, 0, ":") , (1946, 0, ":") , (1942, 0, "s") , (1943, 0, "t") , (1944, 0, "d") , (1945, 0, ":") , (1946, 0, ":") , (42083, 0, "(") , (42084, 0, "*") , (42086, 0, ")") , (42054, 0, " dbg!((*n).content_slice());\n") , (42140, 15, "") , (42140, 0, "h") , (42141, 0, "e") , (42142, 0, "i") , (42143, 0, "g") , (42144, 0, "h") , (42145, 0, "t") , (42148, 0, "\n ") , (42173, 0, "s") , (42174, 0, "e") , (42175, 0, "l") , (42176, 0, "f") , (42177, 0, ".") , (42178, 0, "i") , (42179, 0, "s") , (42180, 0, "_") , (42178, 3, "is_head(node: *const Node)") , (42186, 20, "n") , (42187, 0, ".") , (42188, 0, "p") , (42189, 0, "a") , (42190, 0, "r") , (42191, 0, "e") , (42192, 0, "n") , (42193, 0, "t") , (42195, 0, ";") , (42173, 23, "") , (42149, 24, "") , (42148, 1, "") , (42148, 0, "\n ") , (42362, 0, "\n ") , (42149, 24, "") , (42363, 0, "a") , (42364, 0, "s") , (42365, 0, "s") , (42363, 3, "assert_eq!") , (42373, 0, "(") , (42374, 0, "(") , (42375, 0, "*") , (42376, 0, "n") , (42377, 0, ")") , (42378, 0, ".") , (42379, 0, "p") , (42380, 0, "a") , (42381, 0, "r") , (42382, 0, "e") , (42383, 0, "n") , (42384, 0, "t") , (42385, 0, ",") , (42386, 0, " ") , (42387, 0, "e") , (42388, 0, ")") , (42389, 0, ";") , (42387, 1, "") , (42387, 0, "n") , (40967, 11, "g") , (40968, 0, "h") , (40968, 1, "") , (40967, 1, "") , (40967, 0, "e") , (40967, 1, "") , (40967, 0, "h") , (40968, 0, "e") , (40969, 0, "i") , (40969, 1, "") , (40967, 2, "height") , (40973, 9, "") , (38979, 0, "\n ") , (38992, 0, "s") , (38993, 0, "e") , (38994, 0, "l") , (38995, 0, "f") , (38996, 0, ".") , (38997, 0, "c") , (38998, 0, "h") , (38999, 0, "e") , (39000, 0, "c") , (38997, 4, "check()") , (39004, 0, ";") , (38992, 0, " ") , (38992, 0, "i") , (38993, 0, "f") , (38994, 0, " ") , (38995, 0, "e") , (38996, 0, "n") , (38997, 0, "v") , (38992, 6, "") , (38992, 0, "if cfg!(debug_assertions) {") , (39033, 0, " ") , (39034, 0, "}") , (42961, 0, "\n ") , (42974, 0, "\n ") , (42962, 12, "") , (42975, 0, "if cfg!(debug_assertions) { self.check(); }") , (1182, 2, "2") , (38978, 0, "\n ") , (38991, 0, "s") , (38992, 0, "e") , (38993, 0, "l") , (38994, 0, "f") , (38995, 0, ".") , (38996, 0, "p") , (38997, 0, "r") , (38998, 0, "i") , (38996, 3, "print()") , (39003, 0, ";") , (50957, 0, "\n ") , (50966, 0, "l") , (50967, 0, "e") , (50968, 0, "t") , (50969, 0, " ") , (50970, 0, "p") , (50971, 0, "t") , (50972, 0, "r") , (50973, 0, "T") , (50973, 1, "") , (50973, 0, "_") , (50974, 0, "t") , (50975, 0, "o") , (50976, 0, "_") , (50977, 0, "i") , (50978, 0, "d") , (50979, 0, " ") , (50980, 0, "=") , (50981, 0, " ") , (50982, 0, "s") , (50983, 0, "t") , (50984, 0, "d") , (50957, 0, "\n ") , (50966, 0, "u") , (50967, 0, "s") , (50968, 0, "e") , (50969, 0, " ") , (50970, 0, "s") , (50971, 0, "t") , (50972, 0, "d") , (50973, 0, ":") , (50974, 0, ":") , (50975, 0, "c") , (50976, 0, "o") , (50977, 0, "l") , (50978, 0, "l") , (50975, 4, "collections") , (50986, 0, ":") , (50987, 0, ":") , (50988, 0, "H") , (50989, 0, "a") , (50990, 0, "s") , (50991, 0, "h") , (50988, 4, "HashMap") , (50995, 0, ";") , (51021, 3, "H") , (51022, 0, "a") , (51023, 0, "s") , (51024, 0, "h") , (51025, 0, "M") , (51026, 0, "a") , (51027, 0, "p") , (51021, 7, "HashMap") , (51028, 0, ":") , (51029, 0, ":") , (51030, 0, "n") , (51031, 0, "e") , (51032, 0, "w") , (51030, 3, "new()") , (51035, 0, "(") , (51036, 0, ")") , (51036, 1, "") , (51035, 1, "") , (51035, 0, ";") , (51117, 0, "\n ") , (51130, 0, "p") , (51131, 0, "t") , (51132, 0, "r") , (51130, 3, "ptr_to_id") , (51139, 0, ".") , (51140, 0, "s") , (51141, 0, "e") , (51141, 1, "") , (51140, 1, "") , (51139, 1, "") , (51139, 0, ".") , (51140, 0, "i") , (51141, 0, "n") , (51142, 0, "s") , (51143, 0, "e") , (51144, 0, "r") , (51140, 5, "insert(k: K, v: V)") , (51147, 4, "n") , (51148, 0, "o") , (51149, 0, "d") , (51150, 0, "e") , (51151, 0, " ") , (51152, 0, "a") , (51153, 0, "s") , (51154, 0, " ") , (51155, 0, "*") , (51156, 0, "c") , (51157, 0, "o") , (51158, 0, "n") , (51159, 0, "s") , (51160, 0, "t") , (51161, 0, " ") , (51162, 0, "_") , (51165, 4, "i") , (51167, 0, ";") , (51008, 0, " ") , (51009, 0, "m") , (51010, 0, "i") , (51011, 0, "u") , (51011, 1, "") , (51010, 1, "") , (51010, 0, "u") , (51011, 0, "t") , (51272, 0, "\n ") , (51285, 0, "p") , (51286, 0, "r") , (51287, 0, "i") , (51288, 0, "n") , (51289, 0, "t") , (51290, 0, " ") , (51290, 1, "") , (51290, 0, "!") , (51291, 0, "(") , (51292, 0, "\"") , (51293, 0, "(") , (51294, 0, "p") , (51295, 0, "a") , (51296, 0, "r") , (51297, 0, "e") , (51298, 0, "n") , (51299, 0, "t") , (51300, 0, ":") , (51301, 0, " ") , (51302, 0, "{") , (51303, 0, "}") , (51304, 0, "}") , (51304, 1, "") , (51304, 0, ")") , (51305, 0, "\"") , (51306, 0, ";") , (51306, 1, "") , (51306, 0, ",") , (51307, 0, " ") , (51272, 0, "\n ") , (51285, 0, "i") , (51286, 0, "f") , (51287, 0, " ") , (51288, 0, "l") , (51289, 0, "e") , (51290, 0, "t") , (51291, 0, " ") , (51292, 0, "p") , (51293, 0, "t") , (51294, 0, "r") , (51285, 0, "// ") , (51040, 0, "\n ") , (51049, 0, "p") , (51050, 0, "t") , (51051, 0, "r") , (51049, 3, "ptr") , (51052, 0, ".") , (51052, 1, "") , (51052, 0, "_") , (51053, 0, "t") , (51054, 0, "o") , (51049, 6, "ptr_to_id") , (51058, 0, ".") , (51059, 0, "i") , (51060, 0, "n") , (51061, 0, "s") , (51062, 0, "e") , (51063, 0, "r") , (51064, 0, "t") , (51065, 0, "(") , (51066, 0, "p") , (51067, 0, "t") , (51068, 0, "r") , (51069, 0, ":") , (51069, 1, "") , (51068, 1, "") , (51066, 2, "s") , (51067, 0, "t") , (51068, 0, "d") , (51069, 0, ":") , (51070, 0, ":") , (51071, 0, "p") , (51072, 0, "t") , (51073, 0, "r") , (51074, 0, ":") , (51075, 0, ":") , (51076, 0, "n") , (51077, 0, "u") , (51078, 0, "l") , (51079, 0, "l") , (51076, 4, "null()") , (51082, 0, ",") , (51083, 0, " ") , (51084, 0, "-") , (51085, 0, "1") , (51086, 0, ")") , (51087, 0, ";") , (51085, 1, "") , (51084, 1, "") , (51084, 0, "u") , (51085, 0, "s") , (51086, 0, "i") , (51087, 0, "z") , (51088, 0, "e") , (51089, 0, ":") , (51090, 0, ":") , (51091, 0, "M") , (51092, 0, "A") , (51093, 0, "X") , (51341, 13, "") , (51341, 0, "p") , (51342, 0, "t") , (51343, 0, "r") , (51341, 3, "ptr_to_id") , (51350, 0, ".") , (51351, 0, "g") , (51352, 0, "e") , (51351, 2, "get(k: &Q)") , (51355, 5, "n") , (51356, 0, "o") , (51357, 0, "d") , (51358, 0, "e") , (51359, 0, ".") , (51360, 0, "p") , (51361, 0, "o") , (51361, 1, "") , (51361, 0, "a") , (51362, 0, "r") , (51363, 0, "e") , (51364, 0, "n") , (51365, 0, "t") , (51367, 0, ";") , (51366, 0, " ") , (51367, 0, "a") , (51368, 0, "s") , (51369, 0, " ") , (51370, 0, "*") , (51371, 0, "c") , (51372, 0, "o") , (51373, 0, "n") , (51374, 0, "s") , (51375, 0, "t") , (51376, 0, " ") , (51377, 0, "_") , (51366, 12, "") , (51355, 0, "&") , (51367, 0, " ") , (51368, 0, "a") , (51369, 0, "s") , (51370, 0, " ") , (51371, 0, "*") , (51372, 0, "c") , (51373, 0, "o") , (51374, 0, "n") , (51375, 0, "s") , (51376, 0, "t") , (51377, 0, " ") , (51378, 0, "_") , (51356, 0, "(") , (51380, 0, ")") , (51341, 0, "i") , (51342, 0, "f") , (51343, 0, " ") , (51344, 0, "l") , (51345, 0, "e") , (51346, 0, "t") , (51347, 0, " ") , (51348, 0, "S") , (51349, 0, "o") , (51350, 0, "m") , (51351, 0, "e") , (51352, 0, "(") , (51353, 0, "i") , (51354, 0, "d") , (51355, 0, ")") , (51356, 0, " ") , (51357, 0, "=") , (51358, 0, " ") , (51400, 1, "") , (51400, 0, " ") , (51401, 0, "{") , (51415, 0, " ") , (51442, 0, "i") , (51443, 0, "d") , (51444, 0, ")") , (51445, 0, ";") , (51446, 0, "\n ") , (51447, 16, " }") , (51520, 0, "\n }") , (51461, 12, " ") , (51447, 14, "") , (51510, 0, "\n print!(\"(parent: {})\", id);") , (51403, 44, "") , ( 51466 , 0 , "\n if let Some(id) = ptr_to_id.get(&(node.parent as *const _)) {" ) , (51403, 16, " ") , (51329, 74, "") , (51347, 1, "") , (51346, 1, "") , (51518, 0, "\n ") , (51531, 0, "p") , (51532, 0, "r") , (51533, 0, "i") , (51534, 0, "n") , (51531, 4, "println!") , (51539, 0, "(") , (51540, 0, ")") , (51541, 0, ";") , (51518, 0, "\n ") , (51519, 12, "") , (51485, 0, " ") , (51460, 0, "\n ") , (51477, 0, "i") , (51478, 0, "f") , (51477, 2, "") , (51477, 0, "i") , (51478, 0, "f") , (51479, 0, " ") , (51480, 0, "i") , (51481, 0, "d") , (51482, 0, " ") , (51483, 0, "=") , (51484, 0, "=") , (51485, 0, " ") , (51486, 0, "u") , (51487, 0, "s") , (51488, 0, "i") , (51489, 0, "z") , (51490, 0, "e") , (51491, 0, ":") , (51492, 0, ":") , (51493, 0, "M") , (51494, 0, "A") , (51495, 0, "X") , (51496, 0, " ") , (51497, 0, "{") , (51498, 0, " ") , (51461, 38, "") , (51460, 1, "") , (51049, 0, "// ") , (51464, 0, " print!(\" (parent: {})\", id);\n") , (51553, 14, "") , (51509, 16, " ") , (51509, 0, " }\n") , (51545, 6, "p") , (51546, 0, "o") , (51547, 0, "i") , (51548, 0, "n") , (51549, 0, "t") , (51550, 0, "e") , (51551, 0, "r") , (51560, 2, "") , (51555, 0, ":") , (51556, 0, "?") , (51562, 0, "n") , (51563, 0, "o") , (51564, 0, "d") , (51565, 0, "e") , (51566, 0, " ") , (51567, 0, "a") , (51568, 0, "s") , (51569, 0, " ") , (51570, 0, "*") , (51571, 0, "c") , (51572, 0, "o") , (51573, 0, "n") , (51574, 0, "s") , (51575, 0, "t") , (51576, 0, " ") , (51577, 0, "_") , (42454, 1, "") , (42454, 0, "e") , (42297, 0, "\n") , (42216, 1, "") , (42296, 0, "\n dbg!((*n).height);") , (42173, 43, "") , (42253, 0, "\n dbg!((*n).content_slice());") , (42121, 52, "") , ( 42201 , 0 , "\n n = (*n).nexts_mut()[skip_height].node;" ) , (42057, 64, "") , (42137, 0, "\n") , (42056, 1, "") , (42201, 0, "\n") , (42137, 1, "") , ( 42200 , 0 , "\n if n.is_null() || (*n).height >= height as u8 { break; }" ) , (42056, 81, "") , (42055, 0, "\n ") , (42321, 1, "") , (42056, 24, "") , (42279, 0, "// ") , (42227, 0, "// ") , (20314, 0, "// ") , (20282, 0, "// ") , (20230, 0, "// ") , (20320, 3, "") , (20285, 3, "") , (20230, 3, "") , (20314, 0, "// ") , (20282, 0, "// ") , (20230, 0, "// ") , (20230, 3, "") , (20214, 0, " dbg!((n as *const _, (*n).height));\n") , (20235, 1, "") , (20248, 14, "") , (20267, 0, "// ") , (19391, 0, "(") , (19392, 0, "i") , (19393, 0, ",") , (19394, 0, " ") , (19396, 0, ")") , (19412, 0, ".") , (19413, 0, "e") , (19414, 0, "n") , (19415, 0, "u") , (19416, 0, "m") , (19413, 4, "enumerate()") , (20247, 0, "// ") , (20230, 0, "\n ") , (20247, 0, "p") , (20248, 0, "r") , (20249, 0, "i") , (20250, 0, "n") , (20247, 4, "println!") , (20255, 0, "(") , (20256, 0, "\"") , (20257, 0, "v") , (20258, 0, "i") , (20259, 0, "s") , (20260, 0, "i") , (20261, 0, "t") , (20262, 0, "i") , (20263, 0, "n") , (20264, 0, "g") , (20265, 0, " ") , (20266, 0, "{") , (20267, 0, "}") , (20268, 0, "\"") , (20269, 0, ",") , (20270, 0, " ") , (20271, 0, "i") , (20272, 0, ")") , (20273, 0, ";") , (20291, 3, "") , (20291, 0, "// ") , (20268, 0, " ") , (20269, 0, "{") , (20270, 0, ":") , (20271, 0, "?") , (20272, 0, "}") , (20277, 0, ",") , (20278, 0, " ") , (20279, 0, "n as *const _") , (18524, 0, "\n ") , (18537, 0, "s") , (18538, 0, "e") , (18539, 0, "l") , (18540, 0, "f") , (18541, 0, ".") , (18542, 0, "p") , (18543, 0, "r") , (18544, 0, "i") , (18542, 3, "print()") , (18549, 0, ";") , (41062, 0, "\n ") , (41079, 0, "\n ") , (41063, 16, "") , (41080, 0, "p") , (41081, 0, "r") , (41082, 0, "i") , (41083, 0, "n") , (41080, 4, "println!") , (41088, 0, "(") , (41089, 0, "\"") , (41090, 0, "r") , (41091, 0, "e") , (41092, 0, "m") , (41093, 0, "o") , (41094, 0, "v") , (41095, 0, "i") , (41096, 0, "n") , (41097, 0, "g") , (41098, 0, "\"") , (41099, 0, ",") , (41100, 0, " ") , (41098, 0, " ") , (41099, 0, "{") , (41100, 0, "}") , (41104, 0, "e") , (41105, 0, ")") , (41106, 0, ";") , (41105, 0, ",") , (41106, 0, " ") , (41107, 0, "\"") , (41108, 0, "c") , (41109, 0, "o") , (41110, 0, "n") , (41111, 0, "t") , (41112, 0, "e") , (41113, 0, "n") , (41114, 0, "t") , (41115, 0, "s") , (41116, 0, "\"") , (41117, 0, " ") , (41117, 1, "") , (41101, 0, " ") , (41102, 0, "c") , (41103, 0, "o") , (41104, 0, "n") , (41105, 0, "t") , (41106, 0, "e") , (41107, 0, "n") , (41108, 0, "t") , (41109, 0, "s") , (41110, 0, " ") , (41111, 0, "{") , (41112, 0, "}") , (41113, 0, " ") , (41114, 0, "e") , (41115, 0, "h") , (41115, 1, "") , (41114, 1, "") , (41114, 0, "h") , (41115, 0, "e") , (41116, 0, "i") , (41117, 0, "g") , (41118, 0, "h") , (41119, 0, "t") , (41120, 0, " ") , (41121, 0, "{") , (41122, 0, "}") , (41129, 10, "") , (41064, 68, "") , (41063, 1, "") , (41175, 0, "\n ") , (41176, 16, "") , (41175, 0, "\n ") , ( 41192 , 0 , " println!(\"removing {} contents {} height {}\", e, );\n" ) , (41176, 32, " ") , (41243, 1, "") , (41241, 0, "(") , (41242, 0, "*") , (41243, 0, "e") , (41244, 0, ")") , (41245, 0, ".") , (41246, 0, "c") , (41247, 0, "o") , (41248, 0, "n") , (41246, 3, "content_slice") , (41259, 0, "(") , (41260, 0, ")") , (41261, 0, ",") , (41262, 0, " ") , (41263, 0, "h") , (41264, 0, "e") , (41265, 0, "i") , (41266, 0, "g") , (41267, 0, "h") , (41268, 0, "t") , (41212, 0, ":") , (41213, 0, "?") , (41226, 0, ":") , (41227, 0, "?") , ( 42720 , 0 , "\n // TODO: We could cache this each time the height goes up?" ) , (42586, 83, "") , (42805, 0, "\n ") , (42806, 24, "") , (42671, 10, "C") , (42710, 1, "") , (42749, 0, "\n ") , (42774, 0, " ") , (42824, 0, "\n ") , (42825, 28, " }") , (42825, 21, "") , (42824, 1, "") , (42749, 0, "i") , (42750, 0, "f") , (42751, 0, " ") , (42183, 0, "\n ") , (42204, 0, "l") , (42205, 0, "e") , (42206, 0, "t") , (42207, 0, " ") , (42208, 0, "c") , (42209, 0, "u") , (42210, 0, "r") , (42211, 0, "s") , (42212, 0, "o") , (42213, 0, "r") , (42214, 0, "_") , (42215, 0, "n") , (42216, 0, "o") , (42217, 0, "d") , (42218, 0, "e") , (42219, 0, " ") , (42220, 0, "=") , (42221, 0, " ") , (42222, 0, "c") , (42223, 0, "u") , (42224, 0, "r") , (42225, 0, "s") , (42226, 0, "o") , (42227, 0, "r") , (42228, 0, ".") , (42229, 0, "h") , (42230, 0, "e") , (42231, 0, "r") , (42232, 0, "e") , (42229, 4, "here_ptr()") , (42239, 0, ";") , (42240, 0, "\n ") , (42261, 0, "l") , (42262, 0, "e") , (42263, 0, "t") , (42264, 0, " ") , (42265, 0, "c") , (42266, 0, "u") , (42267, 0, "r") , (42268, 0, "s") , (42269, 0, "o") , (42270, 0, "r") , (42271, 0, "_") , (42272, 0, "n") , (42273, 0, "o") , (42274, 0, "d") , (42275, 0, "e") , (42276, 0, "_") , (42277, 0, "h") , (42278, 0, "e") , (42279, 0, "i") , (42280, 0, "g") , (42281, 0, "h") , (42282, 0, "t") , (42283, 0, " ") , (42284, 0, "=") , (42285, 0, " ") , (42286, 0, "*") , (42286, 1, "") , (42286, 0, "(") , (42287, 0, "*") , (42288, 0, "c") , (42289, 0, "u") , (42290, 0, "r") , (42291, 0, "s") , (42292, 0, "o") , (42288, 5, "cursor_node") , (42299, 0, ")") , (42300, 0, ".") , (42301, 0, "h") , (42302, 0, "e") , (42303, 0, "i") , (42301, 3, "height") , (42307, 0, " ") , (42308, 0, "a") , (42309, 0, "s") , (42310, 0, " ") , (42311, 0, "u") , (42312, 0, "s") , (42313, 0, "i") , (42314, 0, "z") , (42315, 0, "e") , (42316, 0, ";") , (42886, 0, "c") , (42887, 0, "u") , (42888, 0, "r") , (42889, 0, "o") , (42890, 0, "s") , (42891, 0, "r") , (42886, 6, "cursor_node_height") , (42904, 0, " ") , (42905, 0, ">") , (42906, 0, "=") , (42907, 0, " ") , (42908, 0, "(") , (42909, 0, "*") , (42910, 0, "n") , (42911, 0, ")") , (42912, 0, ".") , (42913, 0, "h") , (42914, 0, "e") , (42915, 0, "i") , (42916, 0, "g") , (42917, 0, "h") , (42918, 0, "t") , (42919, 0, " ") , (42920, 0, "{") , (42921, 0, "\n ") , (42922, 28, " }") , (42947, 0, " ") , (42948, 0, "e") , (42949, 0, "l") , (42950, 0, "s") , (42951, 0, "e") , (42952, 0, " ") , (42953, 0, "{") , (43028, 1, "") , (43028, 0, "\n ") , (43029, 28, " }") , (42921, 0, "\n ") , (42950, 0, "c") , (42951, 0, "u") , (42952, 0, "r") , (42953, 0, "s") , (42954, 0, "o") , (42955, 0, "r") , (42950, 6, "cursor_node") , (43094, 0, ";") , (42307, 9, "") , (42897, 1, "") , ( 43058 , 0 , "\n cursor.entries[(*n).height as usize + 1].node" ) , (43058, 0, "\n } else {") , (42952, 33, "") , (42940, 0, "// ") , (42940, 3, "") , (43025, 33, "") , (42952, 0, " } else {\n") , (43058, 74, "") , (43051, 1, "") , (43050, 1, "") , (43049, 1, "") , (43048, 1, "") , (43047, 1, "") , (43047, 0, "e") , (43540, 0, "// ") , (41192, 0, "// ") , (39147, 0, "// ") , (39176, 0, "// ") , (20273, 0, "// ") , (18537, 0, "// ") , (19421, 0, "_") , (52080, 0, "// ") , (52035, 0, "// ") , (51961, 0, "// ") , (51564, 0, "// ") , (51755, 0, "// ") , (51525, 0, "// ") , (51525, 3, "") , (51755, 3, "") , (51564, 3, "") , (52086, 3, "") , (52038, 3, "") , (51961, 3, "") , (1572, 2, "5") , (1182, 1, "") , (1182, 0, "1") , (1183, 0, "0") , (42851, 76, "") , (42779, 24, " ") , ( 42779 , 0 , " (*n).parent = if cursor_node_height > (*n).height {\n" ) , (42931, 40, "") , (42855, 0, " cursor_node\n") , (42971, 33, "") , (42895, 0, " } else {\n") , (42965, 0, "W") , (42966, 0, "e") , (42967, 0, " ") , (42968, 0, "s") , (42969, 0, "h") , (42970, 0, "o") , (42971, 0, "u") , (42972, 0, "l") , (42973, 0, "d") , (42974, 0, " ") , (42975, 0, "b") , (42976, 0, "e") , (42977, 0, " ") , (42978, 0, "a") , (42979, 0, "b") , (42980, 0, "l") , (42981, 0, "e") , (42982, 0, " ") , (42983, 0, "t") , (42984, 0, "o") , (42985, 0, " ") , (42986, 1, "") , (42986, 0, "c") , ( 42928 , 97 , " // TODO: We should be able to cache this each time\n // the height goes up" ) , (43056, 0, ".") , (42518, 0, "\n ") , (42543, 0, "l") , (42544, 0, "e") , (42545, 0, "t") , (42546, 0, " ") , (42547, 0, "n") , (42548, 0, "-") , (42548, 1, "") , (42548, 0, "_") , (42549, 0, "h") , (42550, 0, "e") , (42551, 0, "i") , (42552, 0, "g") , (42553, 0, "h") , (42554, 0, "t") , (42555, 0, " ") , (42556, 0, "=") , (42557, 0, " ") , (42558, 0, "(") , (42559, 0, "*") , (42560, 0, "n") , (42561, 0, ")") , (42562, 0, ".") , (42563, 0, "h") , (42564, 0, "e") , (42565, 0, "i") , (42566, 0, "g") , (42567, 0, "h") , (42568, 0, "t") , (42569, 0, ";") , (42519, 51, "") , (42518, 1, "") , (42599, 0, "\n ") , (42624, 0, " let n_height = (*n).height;") , (42600, 48, " ") , (43270, 11, "n") , (43153, 11, "n") , (42893, 11, "n") , (43251, 0, "_") , (43144, 0, "_") , (42894, 0, "_") , (43254, 0, "h") , (43146, 0, "h") , (42895, 0, "h") , (43257, 0, "e") , (43148, 0, "e") , (42896, 0, "e") , (43260, 0, "i") , (43150, 0, "i") , (42897, 0, "i") , (43263, 0, "g") , (43152, 0, "g") , (42898, 0, "g") , (43266, 0, "h") , (43154, 0, "h") , (42899, 0, "h") , (43269, 0, "t") , (43156, 0, "t") , (42900, 0, "t") , ( 43287 , 0 , "\n \n assert_eq!((*n).parent, e);\n (*n).parent = if cursor_node_height > n_height {\n cursor_node\n } else {\n // TODO: We should be able to cache this each time\n // the height goes up.\n cursor.entries[n_height as usize].node\n };\n\n skip_height = usize::max(skip_height, n_height as usize - 1);" ) , (43226, 0, "// ") , (43198, 0, "// ") , (43131, 0, "// ") , (43080, 0, "// ") , (43001, 0, "// ") , (42968, 0, "// ") , (42928, 0, "// ") , (42855, 0, "// ") , (42803, 0, "// ") , (43391, 0, "\n ") , (43416, 0, "\n ") , (43392, 24, "") , (43364, 53, "") , (42803, 3, "") , (42830, 0, "\n ") , (43361, 0, "\n ") , (42831, 24, "") , (43362, 0, "i") , (43363, 0, "f") , (43364, 0, " ") , (43365, 0, "n") , (43366, 0, "_") , (43367, 0, "h") , (43368, 0, "e") , (43369, 0, "i") , (43370, 0, "g") , (43371, 0, "h") , (43372, 0, "t") , (43373, 0, " ") , (43374, 0, ">") , (43375, 0, " ") , (43376, 0, "s") , (43377, 0, "k") , (43378, 0, "i") , (43379, 0, "p") , (43380, 0, "_") , (43381, 0, "h") , (43382, 0, "e") , (43383, 0, "i") , (43376, 8, "skip_height") , (43373, 0, " ") , (43374, 0, "a") , (43375, 0, "s") , (43376, 0, " ") , (43377, 0, "u") , (43378, 0, "s") , (43379, 0, "i") , (43380, 0, "z") , (43381, 0, "e") , (43396, 0, " ") , (43397, 0, "{") , (43398, 0, "\n ") , (43427, 0, "\n ") , (43399, 28, "") , (43400, 28, " }") , (43399, 0, " ") , (43427, 0, "s") , (43428, 0, "k") , (43429, 0, "i") , (43430, 0, "p") , (43431, 0, "_") , (43427, 5, "skip_height") , (43438, 0, " ") , (43439, 0, "=") , (43440, 0, " ") , (43441, 0, "n") , (43442, 0, "_") , (43443, 0, "e") , (43444, 0, "i") , (43444, 1, "") , (43443, 1, "") , (43443, 0, "h") , (43444, 0, "e") , (43445, 0, "i") , (43446, 0, "g") , (43447, 0, "h") , (43448, 0, "t") , (43449, 0, " ") , (43450, 0, "=") , (43450, 1, "") , (43450, 0, "a") , (43451, 0, "s") , (43452, 0, " ") , (43453, 0, "u") , (43454, 0, "s") , (43455, 0, "i") , (43456, 0, "z") , (43457, 0, "e") , (43458, 0, ";") , (43459, 0, "\n ") , (43935, 0, "// ") , (43460, 28, "") , (42324, 0, "\n ") , (42345, 0, "l") , (42346, 0, "e") , (42347, 0, "t") , (42348, 0, " ") , (42349, 0, "m") , (42350, 0, "u") , (42351, 0, "t") , (42352, 0, " ") , (42353, 0, "n") , (42354, 0, "e") , (42355, 0, "w") , (42356, 0, "_") , (42357, 0, "p") , (42358, 0, "a") , (42359, 0, "r") , (42360, 0, "e") , (42361, 0, "n") , (42362, 0, "t") , (42363, 0, " ") , (42364, 0, "=") , (42365, 0, " ") , (42366, 0, "c") , (42367, 0, "u") , (42368, 0, "r") , (42369, 0, "s") , (42370, 0, "o") , (42371, 0, "r") , (42372, 0, "_") , (42373, 0, "n") , (42374, 0, "o") , (42375, 0, "d") , (42376, 0, "e") , (42377, 0, ";") , (43514, 0, " ") , (43542, 0, "if cursor_node_height > n_height") , (43564, 1, "") , (43564, 0, "<") , (43565, 0, "=") , (43575, 0, " ") , (43576, 0, "{") , (43577, 0, "\n ") , (43610, 0, "\n ") , (43578, 32, "") , (43579, 32, " }") , (43567, 8, "") , (43566, 1, "") , (43565, 1, "") , (43564, 1, "") , (43563, 1, "") , (43545, 0, ">") , (43546, 0, "=") , (43547, 0, " ") , (43545, 0, "n_height") , (43553, 0, " ") , (43578, 0, " ") , (43610, 0, "n") , (43611, 0, "e") , (43612, 0, "w") , (43613, 0, "_") , (43614, 0, "p") , (43615, 0, "a") , (43616, 0, "r") , (43617, 0, "e") , (43618, 0, "n") , (43619, 0, "t") , (43620, 0, " ") , (43621, 0, "=") , (43622, 0, " ") , (43623, 0, "cursor.entries[n_height as usize].node") , (43638, 17, "s") , (43639, 0, "k") , (43640, 0, "i") , (43641, 0, "p") , (43642, 0, "_") , (43643, 0, "h") , (43638, 6, "skip_height") , (43775, 331, "") , (43775, 0, "n") , (43776, 0, "e") , (43777, 0, "w") , (43778, 0, "_") , (43779, 0, "p") , (43780, 0, "a") , (43775, 6, "new_parent") , (43785, 0, ";") , (43787, 90, "") , (43761, 0, "// ") , (43710, 0, "// ") , (43680, 0, "// ") , (43602, 0, "// ") , (43538, 0, "// ") , (43477, 0, "// ") , (43416, 0, "// ") , (43302, 3, "") , (43271, 3, "") , (43201, 3, "") , (43147, 3, "") , (43065, 3, "") , (43029, 3, "") , (42986, 3, "") , (42910, 3, "") , (42884, 0, "\n ") , (42909, 0, "a") , (42910, 0, "s") , (42911, 0, "s") , (42912, 0, "e") , (42913, 0, "r") , (42914, 0, "t") , (42915, 0, "!") , (42916, 0, "(") , (42917, 0, "s") , (42918, 0, "k") , (42919, 0, "i") , (42920, 0, "p") , (42917, 4, "skip_height") , (42917, 0, "n") , (42918, 0, "_") , (42919, 0, "h") , (42920, 0, "e") , (42921, 0, "i") , (42922, 0, "g") , (42923, 0, "h") , (42924, 0, "t") , (42925, 0, " ") , (42926, 0, ">") , (42927, 0, "=") , (42928, 0, " ") , (42940, 0, ")") , (42941, 0, ";") , (42925, 0, " ") , (42926, 0, "a") , (42927, 0, "s") , (42928, 0, " ") , (42929, 0, "u") , (42930, 0, "s") , (42931, 0, "i") , (42932, 0, "z") , (42933, 0, "e") , (42704, 0, " ") , (42705, 0, "a") , (42706, 0, "s") , (42707, 0, " ") , (42708, 0, "u") , (42709, 0, "s") , (42710, 0, "i") , (42711, 0, "z") , (42712, 0, "e") , (42935, 8, "") , (42934, 1, "") , (42323, 0, " ") , (42324, 0, "a") , (42325, 0, "s") , (42326, 0, " ") , (42327, 0, "u") , (42328, 0, "s") , (42329, 0, "i") , (42330, 0, "z") , (42331, 0, "e") , (43357, 0, "// ") , (43471, 3, "") , (43532, 3, "") , (43774, 3, "") , (43482, 9, "") , (43549, 9, "") , (43482, 0, " ") , (43483, 0, "-") , (43484, 0, " ") , (43485, 0, "1") , (43357, 3, "") , (43524, 0, "// ") , (43468, 0, "// ") , (43763, 0, "// ") , (43468, 3, "") , (43524, 3, "") , (43757, 3, "") , (43550, 0, " ") , (43551, 0, "-") , (43552, 0, " ") , (43553, 0, "1") , (43357, 0, "// ") , (43329, 0, "// ") , (43262, 0, "// ") , (43211, 0, "// ") , (43132, 0, "// ") , (43099, 0, "// ") , (43059, 0, "// ") , (42986, 0, "// ") , (43752, 3, "") , (43671, 3, "") , (43604, 3, "") , (43715, 0, " ") , (43716, 0, "-") , (43717, 0, " ") , (43717, 1, "") , (43716, 1, "") , (43716, 0, "+") , (43717, 0, " ") , (43718, 0, "1") , (43831, 3, "") , (43621, 1, "") , (43621, 0, "=") , (42197, 1, "") , (42197, 0, "1") , (42574, 0, " ") , (42575, 0, "-") , (42576, 0, " ") , (42577, 0, "1") , (42962, 0, " ") , (42963, 0, "-") , (42964, 0, " ") , (42965, 0, "1") , (43514, 1, "") , (43513, 1, "") , (43512, 1, "") , (43511, 1, "") , (43581, 1, "") , (43580, 1, "") , (43579, 1, "") , (43578, 1, "") , (43718, 1, "") , (43717, 1, "") , (43716, 1, "") , (43715, 1, "") , (43715, 0, " + 1") , (43578, 0, " - 1") , (43511, 0, " - 1") , (42964, 2, "") , (42962, 2, "") , (42576, 2, "") , (42574, 2, "") , (42197, 1, "") , (42197, 0, "0") , (43755, 26, "") , (43726, 28, " ") , (43644, 32, " ") , (43580, 28, " ") , (43580, 0, " }\n") , (43760, 32, " ") , (43674, 36, " ") , (43606, 32, " ") , (43752, 28, " ") , (43670, 32, " ") , (43606, 28, " ") , (43769, 0, "\n skip_height = n_height - 1;") , (43524, 56, "") , (43713, 56, "") , (43524, 0, " skip_height = n_height - 1;\n") , (43744, 24, " ") , (43666, 28, " ") , (43606, 24, " ") , (43752, 28, " ") , (43670, 32, " ") , (43606, 28, " ") , (43793, 0, "\n }") , (43760, 32, " ") , (43674, 36, " ") , (43606, 32, " ") , (43580, 26, "") , ( 42388 , 0 , " if n_height >= cursor_node_height {\n new_parent = cursor.entries[skip_height + 1].node\n }" ) , (42534, 28, " ") , (42452, 32, " ") , (42388, 28, " ") , (42411, 8, "(*n).height as usize") , (42411, 20, "g") , (42412, 0, "e") , (42413, 0, "u") , (42414, 0, "g") , (42414, 1, "") , (42413, 1, "") , (42412, 1, "") , (42411, 1, "") , (42411, 0, "h") , (42412, 0, "e") , (42413, 0, "i") , (42414, 0, "g") , (42415, 0, "h") , (42416, 0, "t") , (42408, 33, "") , (42375, 0, "if height >= cursor_node_height {") , (42408, 0, "\n ") , (42444, 1, "") , (42445, 20, " }") , (42466, 0, " ") , (42467, 0, "e") , (42468, 0, "l") , (42469, 0, "s") , (42470, 0, "e") , (42471, 0, " ") , (42472, 0, "{") , (42498, 13, "") , (42556, 0, "\n ") , (42557, 20, "") , (42556, 0, ";") , (42558, 0, " ") , (42556, 1, "") , (42556, 21, "") , (42498, 0, "new_parent = ") , (42471, 2, "") , (42466, 5, "") , (42445, 21, " ") , (42444, 0, ";") , (42408, 25, "") , (42375, 33, "") , (42408, 0, "if height >= cursor_node_height {") , (42411, 6, "") , (42411, 0, "geug") , (42411, 4, "(*n).height as usize") , (42411, 20, "geug") , (42411, 4, "") , (42411, 0, "height") , (42408, 33, "") , (42375, 0, "if height >= cursor_node_height {") , (42408, 0, "\n ") , (42444, 1, "") , (42445, 20, " }") , (42466, 0, " else") , (42471, 0, " {") , (42498, 13, "") , (42556, 0, "\n ") , (42557, 20, "") , (42556, 0, ";") , (42534, 0, "\n } else {") , (42445, 29, "") , (42505, 0, "\n cursor_node") , (42409, 36, "") , (42505, 29, "") , (42470, 0, " } else {\n") , (43131, 506, "") , (43372, 0, "arent") , (43368, 3, "") , (43220, 0, "arent") , (43216, 3, "") , (43178, 0, "arent") , (43174, 3, "") , (43121, 0, "arent") , (43117, 3, "") , (42737, 0, "arent") , (42733, 3, "") , (42452, 0, "arent") , (42448, 3, "") , (42187, 0, "arent") , (42183, 3, "") , (42199, 1, "") , (42199, 0, "1") , (42466, 1, "") , (42465, 1, "") , (42464, 1, "") , (42463, 1, "") , (42746, 0, " ") , (42747, 0, "-") , (42748, 0, " ") , (42749, 0, "1") , (43136, 0, " ") , (43137, 0, "-") , (43138, 0, " ") , (43139, 0, "1") , (43199, 0, " ") , (43200, 0, "-") , (43201, 0, " ") , (43202, 0, "1") , (43182, 1, "") , (43181, 1, "") , (43180, 1, "") , (43179, 1, "") , (43198, 1, "") , (43197, 1, "") , (43196, 1, "") , (43195, 1, "") , (43253, 1, "") , (43252, 1, "") , (43251, 1, "") , (43250, 1, "") , (43392, 1, "") , (43391, 1, "") , (43390, 1, "") , (43389, 1, "") , (1939, 0, "/") , (1940, 0, "/") , (1938, 0, ";") , (31737, 271, "") , (31368, 86, "") , (1934, 4, "C") , (1935, 0, "l") , (1936, 0, "o") , (1937, 0, "n") , (1938, 0, "e") , (29029, 0, ".") , (29030, 0, "c") , (29031, 0, "l") , (29032, 0, "o") , (29033, 0, "n") , (29034, 0, "e") , (29035, 0, "(") , (29036, 0, ")") , (29029, 8, "") , (29008, 1, "") , (29007, 1, "") , (29006, 1, "") , (29005, 1, "") , (29005, 0, "c") , (29006, 0, "l") , (29007, 0, "o") , (29008, 0, "n") , (29009, 0, "e") , (29005, 5, "") , (29005, 0, "copy") , (29029, 0, ".clone()") , (29029, 8, "") , (1934, 5, "Copy") , (1934, 4, "Clone") , (1934, 5, "Copy") , (1934, 4, "U") , (1935, 0, "n") , (1936, 0, "p") , (1937, 0, "i") , (1938, 0, "n") , (1933, 0, " ") , (1934, 0, "s") , (1935, 0, "t") , (1936, 0, "d") , (1937, 0, ":") , (1938, 0, ":") , (1939, 0, "p") , (1940, 0, "i") , (1939, 2, "pin") , (1942, 0, ":") , (1943, 0, ":") , (1944, 1, "") , (1944, 5, "") , (1944, 0, "I") , (1944, 1, "") , (1944, 0, "U") , (1945, 0, "n") , (1946, 0, "p") , (1947, 0, "i") , (1931, 17, "") , (28422, 0, ",") , (28423, 0, " ") , (28424, 0, "I") , (28602, 0, ",") , (28603, 0, "\n ") , (28603, 13, "") , (28603, 0, " ") , (28604, 0, "I") , (28605, 0, ":") , (28606, 0, " ") , (28607, 0, "E") , (28608, 0, "x") , (28609, 0, "a") , (28607, 3, "ExactSizeIterator") , (28624, 0, "<") , (28625, 0, "I") , (28626, 0, "t") , (28627, 0, "e") , (28628, 0, "m") , (28629, 0, "=") , (28630, 0, "C") , (28631, 0, ":") , (28632, 0, ":") , (28633, 0, "I") , (28634, 0, "t") , (28635, 0, "e") , (28636, 0, "m") , (28637, 0, ">") , (28472, 10, "") , (28472, 0, "I") , (28964, 0, "/") , (28965, 0, "/") , (28963, 0, " ") , (28964, 0, "i") , (28965, 0, "t") , (28965, 1, "") , (28964, 1, "") , (28964, 0, "c") , (28965, 0, "o") , (28966, 0, "n") , (28967, 0, "t") , (28968, 0, "e") , (28969, 0, "n") , (28970, 0, "t") , (28971, 0, "s") , (28972, 0, ".") , (28973, 0, "s") , (28974, 0, "i") , (28975, 0, "z") , (28973, 3, "size_hint()") , (28984, 0, ";") , (28984, 19, "") , (28984, 0, " ") , (28973, 9, "l") , (28974, 0, "e") , (28975, 0, "n") , (28973, 3, "size_hint") , (28984, 1, "") , (28984, 0, "; //contents.len() ") , (28984, 1, "") , (28973, 11, "siz") , (28964, 12, "") , (28964, 0, "it") , (28963, 3, "") , (28964, 2, "") , (28994, 0, "// ") , (28985, 0, "\n ") , (28994, 0, "\n ") , (28986, 8, "") , (28987, 8, "") , (28986, 0, "\n ") , (28995, 0, "f") , (28996, 0, "o") , (28997, 0, "r") , (28995, 3, "") , (28995, 0, "f") , (28996, 0, "o") , (28997, 0, "r") , (28998, 0, " ") , (28999, 0, "i") , (29000, 0, "t") , (29001, 0, "e") , (29002, 0, "m") , (29003, 0, " ") , (29004, 0, "i") , (29005, 0, "n") , (29006, 0, " ") , (29007, 0, "c") , (29008, 0, "o") , (29009, 0, "n") , (29010, 0, "t") , (29011, 0, "e") , (29012, 0, "n") , (29013, 0, "t") , (29014, 0, "s") , (29015, 0, " ") , (29016, 0, "{") , (29017, 0, "\n ") , (29030, 0, "\n ") , (29018, 12, "") , (29019, 12, " }") , (29018, 0, " ") , (29030, 0, "new_node.items[..contents.len()]") , (29045, 16, "") , (29045, 0, "0") , (29047, 0, " ") , (29048, 0, "=") , (29049, 0, " ") , (29050, 0, "i") , (29051, 0, "t") , (29052, 0, "e") , (29053, 0, "m") , (29054, 0, ";") , (28934, 0, "\n ") , (28943, 0, "l") , (28944, 0, "e") , (28945, 0, "t") , (28946, 0, " ") , (28947, 0, "l") , (28948, 0, "e") , (28949, 0, "n") , (28950, 0, " ") , (28951, 0, "=") , (28952, 0, " ") , (28983, 14, "") , (28953, 0, "contents.len()") , (28967, 0, ";") , (28998, 0, "l") , (28999, 0, "e") , (29000, 0, "n") , (29000, 1, "ms") , (28998, 1, "num_it") , (28949, 1, "ms") , (28947, 1, "num_it") , (29034, 16, "") , (29034, 0, "i") , (29035, 0, " ") , (29036, 0, "i") , (29037, 0, "n") , (29038, 0, " ") , (29039, 0, "0") , (29040, 0, ".") , (29041, 0, ".") , (29042, 0, "n") , (29043, 0, "u") , (29044, 0, "m") , (29045, 0, "_") , (29046, 0, "i") , (29042, 5, "num_items") , (29081, 1, "") , (29081, 0, "i") , (29086, 4, "c") , (29087, 0, "o") , (29088, 0, "n") , (29089, 0, "t") , (29090, 0, "e") , (29091, 0, "n") , (29092, 0, "t") , (29093, 0, "s") , (29094, 0, ".") , (29095, 0, "n") , (29096, 0, "e") , (29095, 2, "next()") , (29101, 0, ".") , (29102, 0, "u") , (29103, 0, "n") , (29104, 0, "w") , (29105, 0, "r") , (29102, 4, "unwrap") , (29108, 0, "(") , (29109, 0, ")") , (28472, 0, "7") , (28472, 1, "") , (28472, 0, "&") , (28473, 0, "m") , (28474, 0, "i") , (28475, 0, "u") , (28476, 0, "t") , (28477, 0, " ") , (28477, 1, "") , (28476, 1, "") , (28475, 1, "") , (28474, 1, "") , (28474, 0, "u") , (28475, 0, "t") , (28476, 0, " ") , (28603, 17, "I") , (28604, 0, "t") , (28605, 0, "e") , (28606, 0, "r") , (28607, 0, "a") , (28608, 0, "t") , (28609, 0, "o") , (28610, 0, "r") , (28479, 0, " ") , (28480, 0, "n") , (28481, 0, "u") , (28482, 0, "m") , (28483, 0, "_") , (28484, 0, "i") , (28485, 0, "t") , (28486, 0, "e") , (28487, 0, "m") , (28488, 0, "s") , (28489, 0, ":") , (28490, 0, " ") , (28491, 0, "u") , (28492, 0, "s") , (28493, 0, "i") , (28494, 0, "z") , (28495, 0, "e") , (28496, 0, ",") , (28736, 0, "// ") , (28809, 0, "// ") , (28809, 3, "") , (28817, 14, "n") , (28818, 0, "u") , (28819, 0, "m") , (28820, 0, "_") , (28821, 0, "i") , (28822, 0, "t") , (28823, 0, "e") , (28824, 0, "m") , (28825, 0, "s") , (28955, 0, "// ") , (29049, 17, "") , (29049, 0, "(") , (29050, 0, "s") , (29051, 0, "l") , (29052, 0, "o") , (29053, 0, "t") , (29054, 0, ",") , (29055, 0, " ") , (29056, 0, "i") , (29057, 0, "t") , (29058, 0, "e") , (29059, 0, "m") , (29060, 0, ")") , (29061, 0, " ") , (29062, 0, "i") , (29063, 0, "n") , (29064, 0, " ") , (29064, 1, "") , (29061, 3, "") , (29055, 6, "") , (29055, 0, " item)") , (29061, 0, " in") , (29064, 0, " ") , (29065, 0, "n") , (29066, 0, "e") , (29067, 0, "w") , (29068, 0, "_") , (29065, 4, "new_node") , (29073, 0, ".") , (29074, 0, "i") , (29075, 0, "t") , (29076, 0, "e") , (29077, 0, "m") , (29078, 0, "s") , (29079, 0, "[") , (29080, 0, ".") , (29081, 0, ".") , (29082, 0, "n") , (29083, 0, "u") , (29084, 0, "m") , (29085, 0, "_") , (29086, 0, "i") , (29087, 0, "t") , (29088, 0, "e") , (29089, 0, "m") , (29090, 0, "s") , (29091, 0, "]") , (29092, 0, ".") , (29093, 0, "z") , (29094, 0, "i") , (29095, 0, "p") , (29096, 0, "(") , (29097, 0, "c") , (29098, 0, "u") , (29099, 0, "r") , (29097, 3, "") , (29097, 0, "c") , (29098, 0, "o") , (29099, 0, "n") , (29100, 0, "t") , (29101, 0, "e") , (29102, 0, "n") , (29103, 0, "t") , (29104, 0, "s") , (29105, 0, ")") , (29121, 0, "// ") , (29169, 0, "\n ") , (29182, 0, "(") , (29182, 1, "") , (29182, 0, "*") , (29183, 0, "s") , (29184, 0, "l") , (29185, 0, "o") , (29186, 0, "t") , (29187, 0, " ") , (29188, 0, "=") , (29189, 0, " ") , (29190, 0, "i") , (29191, 0, "t") , (29192, 0, "e") , (29193, 0, "m") , (29194, 0, ";") , (29092, 0, ".") , (29093, 0, "i") , (29094, 0, "t") , (29095, 0, "e") , (29096, 0, "r") , (29097, 0, "(") , (29098, 0, ")") , (29097, 0, "_") , (29098, 0, "m") , (29099, 0, "u") , (29100, 0, "t") , (29216, 0, "\n ") , (29225, 0, "\n ") , (29217, 8, "") , (29226, 0, "/") , (29227, 0, "/") , (29228, 0, " ") , (29229, 0, "D") , (29229, 1, "") , (29229, 0, "T") , (29230, 0, "O") , (29231, 0, "D") , (29232, 0, "O") , (29233, 0, "O") , (29234, 0, ":") , (29235, 0, " ") , (29235, 1, "") , (29234, 1, "") , (29233, 1, "") , (29233, 0, ":") , (29234, 0, " ") , (29235, 0, "M") , (29236, 0, "a") , (29237, 0, "k") , (29238, 0, "e") , (29239, 0, " ") , (29240, 0, "s") , (29241, 0, "u") , (29242, 0, "r") , (29243, 0, "e") , (29244, 0, " ") , (29245, 0, "t") , (29246, 0, "h") , (29247, 0, "e") , (29248, 0, " ") , (29249, 0, "i") , (29250, 0, "t") , (29251, 0, "e") , (29252, 0, "r") , (29253, 0, "a") , (29254, 0, "t") , (29255, 0, "o") , (29256, 0, "r") , (29257, 0, " ") , (29258, 0, "w") , (29259, 0, "r") , (29260, 0, "o") , (29261, 0, "t") , (29262, 0, "e") , (29263, 0, " ") , (29264, 0, "n") , (29265, 0, "u") , (29266, 0, "m") , (29267, 0, "_") , (29268, 0, "i") , (29269, 0, "t") , (29270, 0, "e") , (29271, 0, "m") , (29272, 0, "s") , (29264, 0, "a") , (29265, 0, "t") , (29266, 0, " ") , (29267, 0, "l") , (29268, 0, "e") , (29269, 0, "a") , (29270, 0, "s") , (29271, 0, "t") , (29272, 0, " ") , (29282, 0, ".") , (29283, 0, " ") , (29284, 0, "I") , (29285, 0, "f") , (29286, 0, " ") , (29287, 0, "n") , (29288, 0, "o") , (29289, 0, "t") , (29290, 0, ",") , (29291, 0, " ") , (29292, 0, "w") , (29293, 0, "e") , (29294, 0, "'") , (29295, 0, "r") , (29296, 0, "e") , (29297, 0, " ") , (29298, 0, "i") , (29299, 0, "n") , (29300, 0, " ") , (29301, 0, "a") , (29302, 0, "n") , (29303, 0, " ") , (29304, 0, "i") , (29305, 0, "n") , (29306, 0, "v") , (29307, 0, "a") , (29308, 0, "l") , (29309, 0, "i") , (29310, 0, "d") , (29311, 0, " ") , (29312, 0, "s") , (29313, 0, "t") , (29314, 0, "a") , (29315, 0, "t") , (29316, 0, "e") , (29317, 0, "!") , (29318, 0, "\n ") , (29399, 0, "\n") , (29328, 1, "") , (29319, 8, "") , (29390, 0, "\n") , (29319, 1, "") , ( 29389 , 0 , "\n // TODO: Make sure the iterator wrote at least num_items. If not, we're in an invalid state!" ) , (29218, 101, "") , (29288, 0, "\n") , (29217, 1, "") , ( 29390 , 0 , " // debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n" ) , (29398, 3, "") , (29459, 1, "") , (29389, 0, "\n ") , (29457, 8, "n") , (29390, 8, "") , (29450, 0, "e") , (29451, 0, "w") , (29449, 3, "new_node") , (29457, 0, ".") , (29458, 0, "i") , (29458, 1, "") , (29457, 1, "") , (29457, 0, ".") , (29458, 0, "i") , (29459, 0, "t") , (29460, 0, "e") , (29461, 0, "m") , (29462, 0, "s") , (29463, 0, "(") , (29464, 0, ")") , (29458, 5, "c") , (29459, 0, "o") , (29460, 0, "n") , (29461, 0, "t") , (29462, 0, "e") , (29463, 0, "n") , (29464, 0, "t") , (29465, 0, "_") , (29466, 0, "s") , (29467, 0, "l") , (29468, 0, "i") , (29469, 0, "c") , (29470, 0, "e") , (28621, 8, "E") , (28622, 0, "x") , (28623, 0, "a") , (28624, 0, "c") , (28621, 4, "ExactSizeIterator") , (28855, 0, "\n ") , (28864, 0, "d") , (28865, 0, "e") , (28866, 0, "b") , (28867, 0, "u") , (28868, 0, "g") , (28864, 5, "debug_assert!") , (28877, 0, "(") , (28878, 0, "c") , (28879, 0, "o") , (28880, 0, "n") , (28881, 0, "t") , (28882, 0, "e") , (28883, 0, "n") , (28884, 0, "t") , (28885, 0, "s") , (28886, 0, ".") , (28887, 0, "l") , (28888, 0, "e") , (28889, 0, "n") , (28890, 0, "(") , (28891, 0, ")") , (28892, 0, " ") , (28893, 0, ">") , (28894, 0, " ") , (28894, 1, "") , (28894, 0, "=") , (28895, 0, " ") , (28896, 0, "n") , (28897, 0, "u") , (28898, 0, "m") , (28899, 0, "_") , (28900, 0, "i") , (28901, 0, "t") , (28902, 0, "e") , (28896, 7, "num_items") , (28905, 0, ")") , (28906, 0, ";") , (29537, 1, "") , (29349, 102, "") , (32303, 8, "new_node.content_slice()") , (32600, 9, "m") , (32601, 0, "u") , (32602, 0, "t") , (32603, 0, " ") , (32604, 0, "I") , (32552, 0, ",") , (32553, 0, " ") , (32554, 0, "I") , (32689, 0, ",") , (32690, 0, " ") , (32691, 0, ", I: ExactSizeIterator") , (32692, 1, "") , (32691, 1, "") , (32690, 1, "") , (32690, 0, " ") , (33161, 0, "// ") , ( 34474 , 0 , " c[..].copy_within(item_idx..e_num_items,\n item_idx + num_inserted_items);\n" ) , (34656, 0, "// ") , (34599, 0, "// ") , (34473, 0, "\n ") , (34490, 0, "/") , (34491, 0, "/") , (34492, 0, " ") , (34493, 0, "C") , (34494, 0, "a") , (34495, 0, "n") , (34496, 0, "'") , (34497, 0, "t") , (34498, 0, " ") , (34499, 0, "u") , (34500, 0, "s") , (34501, 0, "e") , (34502, 0, " ") , (34503, 0, "c") , (34504, 0, "o") , (34505, 0, "p") , (34506, 0, "y") , (34507, 0, "_") , (34508, 0, "w") , (34509, 0, "i") , (34510, 0, "t") , (34511, 0, "h") , (34512, 0, "i") , (34513, 0, "n") , (34514, 0, " ") , (34515, 0, "b") , (34516, 0, "e") , (34517, 0, "c") , (34518, 0, "a") , (34519, 0, "u") , (34520, 0, "s") , (34521, 0, "e") , (34522, 0, " ") , (34523, 0, "w") , (34524, 0, "e") , (34525, 0, " ") , (34526, 0, "a") , (34527, 0, "r") , (34528, 0, "e") , (34529, 0, "n") , (34530, 0, "'") , (34531, 0, "t") , (34532, 0, " ") , (34533, 0, "s") , (34534, 0, "u") , (34535, 0, "r") , (34536, 0, "e") , (34537, 0, " ") , (34538, 0, "i") , (34539, 0, "f") , (34540, 0, " ") , (34541, 0, "i") , (34541, 1, "") , (34541, 0, "t") , (34542, 0, "h") , (34543, 0, "e") , (34544, 0, " ") , (34545, 0, "t") , (34546, 0, "y") , (34547, 0, "p") , (34548, 0, "e") , (34549, 0, " ") , (34550, 0, "i") , (34551, 0, "m") , (34552, 0, "p") , (34553, 0, "l") , (34554, 0, "e") , (34555, 0, "m") , (34556, 0, "e") , (34557, 0, "n") , (34558, 0, "t") , (34559, 0, "s") , (34560, 0, " ") , (34561, 0, "C") , (34562, 0, "o") , (34563, 0, "p") , (34564, 0, "y") , (34565, 0, ".") , (34566, 0, " ") , (34567, 0, "M") , (34567, 1, "") , (34567, 0, "M") , (34568, 0, "e") , (34569, 0, "m") , (34570, 0, "m") , (34571, 0, "o") , (34572, 0, "v") , (34573, 0, "e") , (34574, 0, " ") , (34575, 0, "i") , (34576, 0, "n") , (34577, 0, "s") , (34578, 0, "t") , (34579, 0, "e") , (34580, 0, "a") , (34581, 0, "d") , (34582, 0, ".") , (34600, 92, "") , ( 34600 , 0 , " ptr::copy(\n &c[leading_bytes + removed_bytes],\n &mut c[leading_bytes],\n trailing_bytes);" ) , (34737, 24, " ") , (34690, 24, " ") , (34631, 24, " ") , (34584, 36, " ") , (34574, 9, " ") , (34575, 0, "t") , (34576, 0, "h") , (34577, 0, "e") , (34578, 0, " ") , (34579, 0, "e") , (34580, 0, "x") , (34581, 0, "i") , (34582, 0, "s") , (34583, 0, "t") , (34584, 0, "i") , (34585, 0, "n") , (34586, 0, "g") , (34587, 0, " ") , (34588, 0, "i") , (34589, 0, "t") , (34590, 0, "e") , (34591, 0, "s") , (34592, 0, "m") , (34592, 1, "") , (34591, 1, "") , (34591, 0, "m") , (34592, 0, "s") , (34593, 0, ".") , ( 34595 , 161 , " ptr::copy(\n &c[offset_bytes],\n &mut c[offset_bytes + num_inserted_bytes],\n (*e).num_bytes as usize - offset_bytes);" ) , (34645, 12, "item_idx") , (34683, 33, "item_idx + num_inserted_items") , (34740, 9, "") , (34739, 1, "") , (34739, 0, ".") , (34740, 0, "n") , (34741, 0, "u") , (34742, 0, "m") , (34743, 0, "_") , (34744, 0, "i") , (34745, 0, "t") , (34746, 0, "e") , (34747, 0, "m") , (34748, 0, "s") , (34761, 12, "i") , (34762, 0, "t") , (34763, 0, "e") , (34764, 0, "m") , (34765, 0, "_") , (34766, 0, "i") , (34767, 0, "d") , (34768, 0, "x") , (34956, 0, "// ") , (34943, 0, "\n ") , ( 34956 , 0 , "\n for (cell, item) in into.iter_mut().zip(iter) {\n *cell = item;\n }" ) , (34944, 12, "") , (35019, 4, " ") , (34997, 8, " ") , (34945, 4, " ") , (35027, 8, " ") , (35001, 12, " ") , (34945, 8, " ") , (34943, 1, "") , (34943, 0, ".") , (34944, 0, " ") , (34945, 0, "C") , (34946, 0, "a") , (34947, 0, "n") , (34948, 0, "'") , (34949, 0, "t") , (34950, 0, " ") , (34951, 0, "m") , (34952, 0, "e") , (34953, 0, "m") , (34954, 0, "c") , (34955, 0, "p") , (34956, 0, "y") , (34957, 0, " ") , (34958, 0, "f") , (34959, 0, "r") , (34960, 0, "o") , (34961, 0, "m") , (34962, 0, " ") , (34963, 0, "a") , (34964, 0, "n") , (34965, 0, " ") , (34966, 0, "i") , (34967, 0, "t") , (34968, 0, "e") , (34969, 0, "r") , (34970, 0, "a") , (34971, 0, "t") , (34972, 0, "o") , (34973, 0, "r") , (34974, 0, ",") , (34975, 0, " ") , (34976, 0, "b") , (34977, 0, "u") , (34978, 0, "t") , (34979, 0, " ") , (34980, 0, "h") , (34981, 0, "o") , (34982, 0, "p") , (34983, 0, "e") , (34980, 4, "t") , (34981, 0, "h") , (34982, 0, "e") , (34983, 0, " ") , (34984, 0, "r") , (34985, 0, "u") , (34986, 0, "s") , (34987, 0, "t") , (34984, 4, "o") , (34985, 0, "p") , (34986, 0, "t") , (34987, 0, "i") , (34988, 0, "m") , (34989, 0, "i") , (34990, 0, "z") , (34991, 0, "e") , (34992, 0, "r") , (34993, 0, " ") , (34994, 0, "s") , (34995, 0, "h") , (34996, 0, "o") , (34997, 0, "u") , (34998, 0, "l") , (34999, 0, "d") , (35000, 0, " ") , (35001, 0, "m") , (35002, 0, "a") , (35003, 0, "k") , (35004, 0, "e") , (35005, 0, " ") , (35006, 0, "t") , (35007, 0, "h") , (35008, 0, "i") , (35009, 0, "s") , (35010, 0, " ") , (35011, 0, "f") , (35012, 0, "a") , (35013, 0, "s") , (35014, 0, "t") , (35015, 0, ".") , ( 34902 , 114 , " // Then copy in the new items. Can't memcpy from an iterator, but\n // the optimizer should make this fast." ) , ( 34474 , 120 , " // Can't use copy_within because we aren't sure if the type\n // implements Copy. Memmove the existing items." ) , (35083, 4, "") , (35083, 0, "c") , (35084, 0, "[") , (35085, 0, "i") , (35086, 0, "t") , (35087, 0, "e") , (35088, 0, "m") , (35085, 4, "item_idx") , (35093, 0, "]") , (35093, 0, ".") , (35094, 0, ".") , (35095, 0, "i") , (35096, 0, "t") , (35097, 0, "e") , (35098, 0, "m") , (35095, 4, "item_idx") , (35103, 0, " ") , (35104, 0, "+") , (35105, 0, " ") , (35106, 0, "n") , (35107, 0, "u") , (35108, 0, "m") , (35106, 3, "num_inserted_items") , (35141, 4, "c") , (35142, 0, "o") , (35143, 0, "n") , (35144, 0, "t") , (35141, 4, "contents") , (35388, 0, "\n ") , (35401, 0, "l") , (35402, 0, "e") , (35403, 0, "t") , (35404, 0, " ") , (35405, 0, "n") , (35406, 0, "u") , (35407, 0, "m") , (35408, 0, "_") , (35409, 0, "i") , (35410, 0, "n") , (35411, 0, "s") , (35412, 0, "e") , (35413, 0, "r") , (35414, 0, "t") , (35415, 0, "e") , (35416, 0, "d") , (35417, 0, "_") , (35418, 0, "u") , (35419, 0, "s") , (35420, 0, "e") , (35421, 0, "r") , (35422, 0, "c") , (35423, 0, "o") , (35424, 0, "u") , (35425, 0, "n") , (35426, 0, "t") , (35427, 0, " ") , (35428, 0, "=") , (35429, 0, " ") , (35430, 0, "C::userlen_of_slice(contents);") , (35450, 8, "") , (35450, 0, "c") , (35451, 0, "[") , (35452, 0, "item_idx..item_idx + num_inserted_items]") , (35450, 0, "&") , (35050, 0, "\n ") , (35063, 0, "l") , (35064, 0, "e") , (35065, 0, "t") , (35066, 0, " ") , (35067, 0, "n") , (35068, 0, "e") , (35069, 0, "w") , (35067, 3, "n") , (35067, 1, "") , (35067, 0, "m") , (35068, 0, "u") , (35069, 0, "t") , (35070, 0, " ") , (35071, 0, "n") , (35072, 0, "e") , (35073, 0, "w") , (35074, 0, "_") , (35071, 4, "d") , (35072, 0, "e") , (35073, 0, "s") , (35074, 0, "t") , (35075, 0, "_") , (35076, 0, "c") , (35077, 0, "o") , (35078, 0, "n") , (35079, 0, "t") , (35080, 0, "e") , (35081, 0, "n") , (35082, 0, "t") , (35083, 0, "_") , (35084, 0, "s") , (35085, 0, "l") , (35086, 0, "i") , (35087, 0, "c") , (35088, 0, "e") , (35089, 0, " ") , (35090, 0, "=") , (35091, 0, " ") , (35092, 0, "item_idx..item_idx + num_inserted_items]") , (35092, 0, "&") , (35093, 0, "m") , (35094, 0, "u") , (35095, 0, "t") , (35096, 0, " ") , (35097, 0, "c") , (35098, 0, "[") , (35139, 0, ";") , (35173, 42, "d") , (35174, 0, "e") , (35175, 0, "s") , (35176, 0, "t") , (35173, 4, "dest_content_slice") , (35516, 43, "d") , (35517, 0, "e") , (35518, 0, "s") , (35519, 0, "t") , (35516, 4, "dest_content_slice") , (36240, 8, "d") , (36241, 0, "e") , (36242, 0, "s") , (36243, 0, "t") , (36240, 4, "dest_content_slice") , (38436, 6, "t") , (38437, 0, "a") , (38438, 0, "k") , (38439, 0, "e") , (38475, 0, "// ") , (38571, 9, "") , (28498, 20, "") , (29329, 0, "\n ") , (29338, 0, "l") , (29339, 0, "e") , (29340, 0, "t") , (29341, 0, " ") , (29368, 11, "") , (29342, 0, "new_userlen") , (29353, 0, " ") , (29354, 0, "=") , (29355, 0, " ") , (29384, 45, "") , (29356, 0, "C::userlen_of_slice(new_node.content_slice())") , (29400, 1, "") , (29400, 0, ")") , (29401, 0, ";") , (29411, 0, "// ") , (29403, 32, "") , (29402, 1, "") , (28480, 18, "") , (28826, 0, "// ") , (28780, 0, "// ") , (28875, 0, "\n ") , (28884, 0, "a") , (28885, 0, "s") , (28886, 0, "s") , (28887, 0, "e") , (28888, 0, "r") , (28889, 0, "t") , (28890, 0, "!") , (28891, 0, "(") , (28875, 0, "\n ") , (28884, 0, "l") , (28885, 0, "e") , (28886, 0, "t") , (28887, 0, " ") , (28888, 0, "n") , (28889, 0, "u") , (28890, 0, "m") , (28891, 0, "_") , (28892, 0, "i") , (28893, 0, "t") , (28894, 0, "e") , (28895, 0, "m") , (28896, 0, "s") , (28897, 0, " ") , (28898, 0, "=") , (28899, 0, " ") , (28900, 0, "c") , (28901, 0, "o") , (28902, 0, "n") , (28903, 0, "t") , (28904, 0, "e") , (28905, 0, "n") , (28906, 0, "t") , (28907, 0, "s") , (28908, 0, ".") , (28909, 0, "l") , (28910, 0, "e") , (28911, 0, "n") , (28912, 0, "(") , (28913, 0, ")") , (28914, 0, ";") , (28932, 0, "n") , (28933, 0, "u") , (28934, 0, "m") , (28932, 3, "num_items") , (28941, 0, " ") , (28942, 0, "<") , (28943, 0, "=") , (28944, 0, " ") , (28945, 0, "N") , (28946, 0, "O") , (28947, 0, "D") , (28948, 0, "E") , (28949, 0, "_") , (28945, 5, "NODE_NUM_ITEMS") , (28959, 0, ")") , (28960, 0, ";") , (28472, 5, "") , (28472, 0, "&mut ") , (28472, 5, "") , (28472, 0, "&mut ") , (28959, 2, "") , (28959, 0, ");") , (28959, 2, "") , (28945, 14, "NODE_") , (28944, 6, "") , (28941, 3, "") , (28932, 9, "num") , (28932, 3, "") , (28899, 16, "") , (28897, 2, "") , (28887, 10, "") , (28875, 12, "") , (28875, 17, "") , (28829, 3, "") , (28780, 3, "") , (28480, 0, "num_items: usize, ") , (29402, 0, "\n") , (29402, 1, "") , (29402, 0, "\n") , (29403, 0, " // debug_assert_eq!(, );") , (29411, 3, "") , (29400, 2, "") , (29400, 0, ");") , (29411, 0, "// ") , (29403, 32, "") , (29402, 1, "") , (28480, 18, "") , (28480, 0, "num_items: usize, ") , (28601, 17, "I") , (28602, 0, "t") , (28603, 0, "e") , (28604, 0, "r") , (28605, 0, "a") , (28606, 0, "t") , (28607, 0, "o") , (28608, 0, "r") , (28858, 5, "") , (28858, 0, "s") , (28859, 0, "i") , (28860, 0, "z") , (28861, 0, "e") , (28858, 4, "size_hint()") , (28869, 0, ".") , (28870, 0, "0") , (32227, 14, "n") , (32067, 14, "n") , (32215, 0, "u") , (32068, 0, "u") , (32217, 0, "m") , (32069, 0, "m") , (32219, 0, "_") , (32070, 0, "_") , (32221, 0, "i") , (32071, 0, "i") , (32218, 5, "num_items") , (32067, 5, "num_items") , (38357, 0, "l") , (38358, 0, "e") , (38359, 0, "t") , (38360, 0, " ") , (38361, 0, "m") , (38362, 0, "u") , (38363, 0, "t") , (38364, 0, " ") , (38365, 0, "n") , (38366, 0, "u") , (38367, 0, "m") , (38368, 0, "_") , (38365, 4, "num_inserted_items") , (38383, 0, " ") , (38384, 0, "=") , (38385, 0, " ") , (38386, 0, "n") , (38387, 0, "u") , (38388, 0, "m") , (38389, 0, "_") , (38386, 4, "num_inserted_items") , (38404, 0, ";") , (38405, 0, "\n ") , (38418, 0, "w") , (38419, 0, "h") , (38420, 0, "i") , (38421, 0, "l") , (38422, 0, "e") , (38423, 0, " ") , (38424, 0, "n") , (38425, 0, "u") , (38426, 0, "m") , (38427, 0, "_") , (38424, 4, "num_inserted_items") , (38442, 0, " ") , (38443, 0, ">") , (38444, 0, " ") , (38445, 0, "0") , (38446, 0, " ") , (38447, 0, "{") , (38448, 0, "\n ") , (38465, 0, "\n ") , (38449, 16, "") , (38450, 16, " }") , (38660, 0, "// ") , (38594, 0, "// ") , (38533, 0, "// ") , (38476, 0, "// ") , ( 38656 , 0 , "\n // self.insert_node_at(cursor, chunk, true, notify);" ) , ( 38656 , 0 , "\n // // let userlen = C::userlen_of_slice(chunk);" ) , (38588, 12, " ") , (38524, 64, "") , ( 38596 , 0 , "\n // for chunk in contents.take(NODE_NUM_ITEMS) {" ) , (38524, 16, " ") , (38464, 60, "") , (38532, 0, "\n }") , (38464, 12, " ") , (38450, 14, "") , (38522, 0, "\n") , (38449, 1, "") , (38449, 16, " ") , (38461, 3, "") , (38514, 1, "") , (38493, 5, "c") , (38494, 0, "o") , (38495, 0, "n") , (38496, 0, "t") , (38497, 0, "e") , (38498, 0, "n") , (38499, 0, "t") , (38493, 7, "contents") , (38501, 0, ",") , (38502, 0, " ") , (38448, 0, "\n ") , (38465, 0, "l") , (38466, 0, "e") , (38467, 0, "t") , (38468, 0, " ") , (38469, 0, "i") , (38470, 0, "n") , (38471, 0, "s") , (38472, 0, "e") , (38473, 0, "r") , (38474, 0, "t") , (38475, 0, "+") , (38475, 1, "") , (38475, 0, "_") , (38476, 0, "h") , (38477, 0, "e") , (38478, 0, "r") , (38479, 0, "e") , (38480, 0, " ") , (38481, 0, "=") , (38482, 0, " ") , (38483, 0, "u") , (38484, 0, "s") , (38485, 0, "i") , (38486, 0, "z") , (38487, 0, "e") , (38488, 0, ":") , (38489, 0, ":") , (38490, 0, "M") , (38490, 1, "") , (38490, 0, "m") , (38491, 0, "a") , (38492, 0, "x") , (38493, 0, "(") , (38494, 0, "n") , (38495, 0, "u") , (38494, 2, "num_inserted_items") , (38512, 0, ",") , (38513, 0, " ") , (38514, 0, "M") , (38515, 0, "A") , (38516, 0, "X") , (38516, 1, "") , (38515, 1, "") , (38514, 1, "") , (38514, 0, "N") , (38515, 0, "U") , (38516, 0, "M") , (38514, 3, "NODE_NUM_ITEMS") , (38528, 0, ")") , (38529, 0, ";") , (38490, 3, "m") , (38491, 0, "i") , (38492, 0, "n") , (38585, 0, "i") , (38586, 0, "n") , (38587, 0, "s") , (38588, 0, "e") , (38589, 0, "r") , (38585, 5, "insert_here") , (38612, 0, "\n ") , (38629, 0, "n") , (38630, 0, "u") , (38631, 0, "m") , (38629, 3, "num_inserted_items") , (38647, 0, " ") , (38648, 0, "-") , (38649, 0, "=") , (38650, 0, " ") , (38651, 0, "i") , (38652, 0, "n") , (38653, 0, "s") , (38654, 0, "e") , (38655, 0, "r") , (38651, 5, "insert_here") , (38662, 0, ";") , (38646, 1, "aining") , (38642, 2, "r") , (38640, 1, "ms") , (38634, 4, "") , (38629, 4, "") , (38511, 1, "aining") , (38507, 2, "r") , (38505, 1, "ms") , (38499, 4, "") , (38494, 4, "") , (38441, 1, "aining") , (38437, 2, "r") , (38435, 1, "ms") , (38429, 4, "") , (38424, 4, "") , (38382, 1, "aining") , (38378, 2, "r") , (38376, 1, "ms") , (38370, 4, "") , (38365, 4, "") , (38291, 53, "") , (38291, 0, ",") , (38292, 0, " ") , (38293, 0, "b") , (38294, 0, "u") , (38295, 0, "t") , (38296, 0, " ") , (38297, 0, "w") , (38298, 0, "e") , (38291, 8, ".") , (39296, 0, ".") , (39297, 0, "t") , (39297, 1, "") , (39297, 0, "i") , (39298, 0, "t") , (39299, 0, "e") , (39300, 0, "r") , (39301, 0, "(") , (39302, 0, ")") , (16566, 0, "\n") , (16567, 0, "\n") , (16568, 0, "\n") , (16568, 0, "s") , (16569, 0, "t") , (16570, 0, "r") , (16571, 0, "u") , (16572, 0, "c") , (16573, 0, "t") , (16574, 0, " ") , (16575, 0, "I") , (16576, 0, "n") , (16577, 0, "i") , (16578, 0, "t") , (16579, 0, "i") , (16579, 1, "") , (16575, 4, "U") , (16576, 0, "n") , (16577, 0, "i") , (16578, 0, "n") , (16579, 0, "i") , (16580, 0, "t") , (16581, 0, "I") , (16582, 0, "t") , (16583, 0, "e") , (16584, 0, "r") , (16581, 0, "O") , (16582, 0, "w") , (16583, 0, "n") , (16584, 0, "e") , (16585, 0, "d") , (16590, 0, " ") , (16591, 0, "{") , (16592, 0, "\n ") , (16593, 4, "") , (16592, 1, "") , (16591, 1, "") , (16591, 0, "{") , (16592, 0, "\n ") , (16597, 0, "\n ") , (16593, 4, "") , (16594, 4, "}") , (16593, 0, " ") , (16597, 0, "p") , (16598, 0, "t") , (16599, 0, "r") , (16600, 0, ":") , (16601, 0, " ") , (16602, 0, "N") , (16603, 0, "o") , (16604, 0, "n") , (16605, 0, "N") , (16606, 0, "u") , (16607, 0, "l") , (16608, 0, "l") , (16609, 0, "<") , (16590, 0, "<") , (16591, 0, "'") , (16592, 0, "a") , (16593, 0, ",") , (16594, 0, " ") , (16595, 0, "T") , (16596, 0, ":") , (16597, 0, " ") , (16598, 0, "'") , (16599, 0, "a") , (16600, 0, ">") , (16621, 0, "T") , (16622, 0, ">") , (16623, 0, ",") , (16624, 0, "\n ") , (16629, 0, "e") , (16630, 0, "n") , (16631, 0, "d") , (16632, 0, ":") , (16633, 0, " ") , (16634, 0, "*") , (16635, 0, "c") , (16636, 0, "o") , (16637, 0, "n") , (16638, 0, "s") , (16639, 0, "t") , (16640, 0, " ") , (16641, 0, "T") , (16642, 0, ",") , (16643, 0, "\n ") , (16648, 0, "_") , (16649, 0, "m") , (16650, 0, "a") , (16651, 0, "r") , (16652, 0, "k") , (16653, 0, "e") , (16654, 0, "r") , (16655, 0, ":") , (16656, 0, " ") , (16657, 0, "m") , (16657, 1, "") , (16657, 0, "p") , (16658, 0, "h") , (16659, 0, "a") , (16660, 0, "n") , (16657, 4, "PhantomData") , (16668, 0, "<") , (16669, 0, "*") , (16669, 1, "") , (16669, 0, "&") , (16670, 0, "'") , (16671, 0, "a") , (16672, 0, " ") , (16673, 0, "T") , (16674, 0, ">") , (16648, 0, "// ") , (782, 0, "\n") , (783, 0, "u") , (784, 0, "s") , (785, 0, "e") , (786, 0, " ") , (787, 0, "s") , (788, 0, "t") , (789, 0, "d") , (790, 0, ":") , (791, 0, ":") , (792, 0, "p") , (793, 0, "t") , (794, 0, "r") , (795, 0, ":") , (796, 0, ":") , (797, 0, "N") , (798, 0, "o") , (799, 0, "n") , (797, 3, "NonNull") , (804, 0, ";") , (16671, 3, "") , (16696, 1, "") , (16696, 0, "S") , (16697, 0, "k") , (16698, 0, "i") , (16699, 0, "p") , (16696, 4, "SkipList") , (16704, 0, "<") , (16705, 0, "T") , (16706, 0, ">") , (16706, 1, "") , (16705, 1, "") , (16704, 1, "") , (16617, 7, ", C: ListConfig>") , (16617, 16, " T: 'a>") , (16614, 4, "") , (16615, 4, "") , (16663, 0, "// ") , (16658, 0, "\n ") , (16663, 0, "/") , (16664, 0, "/") , (16665, 0, " ") , (16666, 0, "T") , (16667, 0, "O") , (16668, 0, "D") , (16669, 0, "O") , (16670, 0, ":") , (16671, 0, " ") , (16672, 0, "A") , (16673, 0, "d") , (16674, 0, "d") , (16675, 0, " ") , (16676, 0, "a") , (16677, 0, " ") , (16678, 0, "p") , (16679, 0, "h") , (16680, 0, "a") , (16681, 0, "n") , (16682, 0, "t") , (16683, 0, "o") , (16684, 0, "m") , (16685, 0, "d") , (16686, 0, "a") , (16687, 0, "t") , (16688, 0, "a") , (16689, 0, " ") , (16690, 0, "t") , (16691, 0, "o") , (16692, 0, " ") , (16693, 0, "t") , (16694, 0, "h") , (16695, 0, "i") , (16696, 0, "s") , (16697, 0, ".") , (16590, 0, "\n") , (16591, 0, "/") , (16592, 0, "/") , (16593, 0, " ") , (16594, 0, "T") , (16595, 0, "h") , (16596, 0, "i") , (16596, 1, "") , (16595, 1, "") , (16594, 1, "") , (16594, 0, "N") , (16595, 0, "o") , (16596, 0, "n") , (16597, 0, "e") , (16598, 0, " ") , (16599, 0, "o") , (16600, 0, "f") , (16601, 0, " ") , (16602, 0, "t") , (16603, 0, "h") , (16604, 0, "e") , (16605, 0, " ") , (16606, 0, "b") , (16607, 0, "u") , (16608, 0, "i") , (16609, 0, "l") , (16610, 0, "t") , (16611, 0, "i") , (16612, 0, "n") , (16613, 0, "s") , (16606, 0, "r") , (16607, 0, "u") , (16608, 0, "s") , (16609, 0, "t") , (16610, 0, " ") , (16619, 0, " ") , (16620, 0, "g") , (16621, 0, "i") , (16622, 0, "v") , (16623, 0, "e") , (16624, 0, " ") , (16625, 0, "m") , (16626, 0, "e") , (16627, 0, " ") , (16628, 0, "w") , (16629, 0, "h") , (16630, 0, "a") , (16631, 0, "t") , (16632, 0, " ") , (16633, 0, "I") , (16634, 0, " ") , (16635, 0, "w") , (16636, 0, "a") , (16637, 0, "n") , (16638, 0, "t") , (16639, 0, ":") , (16640, 0, "\n") , (16641, 0, "-") , (16642, 0, " ") , (16642, 1, "") , (16641, 1, "") , (16641, 0, "/") , (16642, 0, "/") , (16643, 0, " ") , (16644, 0, "-") , (16645, 0, " ") , (16646, 0, "W") , (16647, 0, "O") , (16647, 1, "") , (16646, 1, "") , (16646, 0, "O") , (16647, 0, "w") , (16648, 0, "n") , (16649, 0, "e") , (16650, 0, "d") , (16646, 5, "I") , (16647, 0, "t") , (16648, 0, "e") , (16649, 0, "r") , (16650, 0, " ") , (16651, 0, "t") , (16652, 0, "o") , (16653, 0, " ") , (16654, 0, "o") , (16655, 0, "w") , (16656, 0, "n") , (16657, 0, "e") , (16658, 0, "d") , (16659, 0, " ") , (16660, 0, "i") , (16661, 0, "t") , (16662, 0, "e") , (16663, 0, "m") , (16664, 0, "s") , (16665, 0, "\n") , (16666, 0, "/") , (16667, 0, "/") , (16668, 0, " ") , (16669, 0, "-") , (16670, 0, " ") , (16671, 0, "W") , (16672, 0, "h") , (16673, 0, "e") , (16674, 0, "r") , (16675, 0, "e") , (16676, 0, " ") , (16677, 0, "i") , (16678, 0, "t") , (16679, 0, " ") , (16680, 0, "d") , (16681, 0, "o") , (16682, 0, "e") , (16683, 0, "s") , (16684, 0, "n") , (16685, 0, "'") , (16686, 0, "t") , (16666, 21, "") , (16665, 1, "") , (16639, 1, "") , (16639, 0, ",") , (16640, 0, " ") , (16641, 0, "w") , (16642, 0, "h") , (16643, 0, "i") , (16644, 0, "c") , (16645, 0, "h") , (16646, 0, " ") , (16647, 0, "i") , (16648, 0, "s") , (16649, 0, " ") , (16650, 0, "a") , (16651, 0, " ") , (16652, 0, "z") , (16653, 0, "e") , (16654, 0, "r") , (16655, 0, "o") , (16656, 0, "-") , (16657, 0, "c") , (16658, 0, "o") , (16659, 0, "p") , (16660, 0, "y") , (16661, 0, " ") , (16662, 0, "i") , (16663, 0, "t") , (16664, 0, "e") , (16665, 0, "r") , (16666, 0, "a") , (16667, 0, "t") , (16668, 0, "o") , (16669, 0, "r") , (16670, 0, " ") , (16671, 0, "t") , (16672, 0, "o") , (16673, 0, " ") , (16674, 0, "o") , (16675, 0, "w") , (16676, 0, "n") , (16677, 0, "e") , (16678, 0, "d") , (16652, 5, "") , (16656, 0, "-") , (16657, 0, "f") , (16658, 0, "r") , (16659, 0, "e") , (16660, 0, "e") , (16679, 0, " ") , (16680, 0, "i") , (16681, 0, "t") , (16682, 0, "e") , (16683, 0, "m") , (16684, 0, "s") , (16685, 0, " ") , (16686, 0, "t") , (16687, 0, "h") , (16688, 0, "a") , (16689, 0, "t") , (16690, 0, " ") , (16691, 0, "d") , (16692, 0, "o") , (16693, 0, "e") , (16694, 0, "s") , (16695, 0, "n") , (16696, 0, "'") , (16697, 0, "t") , (16698, 0, " ") , (16686, 13, "i") , (16687, 0, "n") , (16688, 0, " ") , (16689, 0, "a") , (16690, 0, "n") , (16691, 0, " ") , (16691, 1, "") , (16690, 1, "") , (16690, 0, " ") , (16691, 0, "M") , (16692, 0, "a") , (16693, 0, "y") , (16694, 0, "b") , (16695, 0, "e") , (16696, 0, "U") , (16697, 0, "n") , (16698, 0, "i") , (16699, 0, "n") , (16700, 0, "i") , (16701, 0, "t") , (16702, 0, " ") , (16703, 0, "a") , (16704, 0, "r") , (16705, 0, "r") , (16706, 0, "a") , (16707, 0, "y") , (16708, 0, ".") , (16709, 25, "") , ( 16591 , 118 , "// None of the rust builtins give me what I want, which is a copy-free iterator\n// to owned items in a MaybeUninit array." ) , (16712, 0, " ") , (16713, 0, "E") , (16714, 0, "h") , (16715, 0, ".") , (16715, 1, "") , (16715, 0, ";") , (16716, 0, " ") , (16717, 0, "i") , (16718, 0, "t") , (16719, 0, "s") , (16720, 0, " ") , (16721, 0, "e") , (16722, 0, "a") , (16723, 0, "s") , (16724, 0, "y") , (16725, 0, " ") , (16726, 0, "e") , (16727, 0, "n") , (16728, 0, "o") , (16729, 0, "u") , (16730, 0, "g") , (16731, 0, "h") , (16732, 0, " ") , (16733, 0, "t") , (16734, 0, "o") , (16735, 0, " ") , (16736, 0, "m") , (16737, 0, "k") , (16737, 1, "") , (16737, 0, "a") , (16738, 0, "k") , (16739, 0, "e") , (16740, 0, " ") , (16741, 0, "m") , (16742, 0, "y") , (16743, 0, " ") , (16744, 0, "o") , (16745, 0, "w") , (16746, 0, "n") , (16747, 0, ".") , (16900, 0, "\n") , (16901, 0, "\n") , (16902, 0, "i") , (16903, 0, "m") , (16904, 0, "p") , (16905, 0, "l") , (16906, 0, " ") , (16907, 0, "I") , (16908, 0, "t") , (16909, 0, "e") , (16910, 0, "r") , (16911, 0, "a") , (16907, 5, "Iterator") , (16902, 0, "// ") , (32733, 0, "\n ") , (32738, 0, "\n ") , (32734, 4, "") , (32739, 0, "u") , (32740, 0, "n") , (32741, 0, "s") , (32742, 0, "a") , (32743, 0, "f") , (32744, 0, "e") , (32745, 0, " ") , (32746, 0, "f") , (32747, 0, "n") , (32748, 0, " ") , (32749, 0, "O") , (32749, 1, "") , (32749, 0, "o") , (32750, 0, "w") , (32751, 0, "n") , (32752, 0, "e") , (32753, 0, "d") , (32754, 0, "_") , (32755, 0, "i") , (32756, 0, "t") , (32757, 0, "e") , (32758, 0, "r") , (32759, 0, "_") , (32760, 0, "f") , (32761, 0, "r") , (32762, 0, "o") , (32763, 0, "m") , (32764, 0, "_") , (32765, 0, "s") , (32766, 0, "l") , (32767, 0, "i") , (32768, 0, "c") , (32769, 0, "e") , (32770, 0, "(") , (32770, 1, "") , (32770, 0, "<") , (32771, 0, "T") , (32772, 0, ">") , (32735, 38, "") , (32734, 1, "") , (32733, 1, "") , (16901, 0, "\n") , (16902, 0, " unsafe fn owned_iter_from_slice") , (16902, 4, "") , (16901, 0, "\n") , (16913, 11, "") , (16902, 0, "i") , (16903, 0, "m") , (16904, 0, "p") , (16905, 0, "l") , (16906, 0, " ") , (16907, 0, "U") , (16907, 1, "UninitOwnedIter") , (16906, 0, "<") , (16907, 0, "T") , (16908, 0, ">") , (16925, 0, " ") , (16926, 0, "{") , (16928, 0, " ") , (16956, 16, "") , (16955, 1, "") , (16955, 0, " ") , (16956, 0, "-") , (16957, 0, ">") , (16958, 0, " ") , (16958, 1, "") , (16957, 1, "") , (16956, 1, "") , (16955, 1, "") , (16954, 1, "") , (16953, 1, "") , (16952, 1, "") , (16952, 0, "(") , (16953, 0, "&") , (16954, 0, "[") , (16955, 0, "M") , (16956, 0, "a") , (16957, 0, "y") , (16958, 0, "b") , (16955, 4, "MaybeUninit") , (16966, 0, "<") , (16967, 0, "T") , (16968, 0, ">") , (16969, 0, "]") , (16970, 0, ")") , (16971, 0, " ") , (16972, 0, "-") , (16973, 0, ".") , (16973, 1, "") , (16973, 0, " ") , (16973, 1, "") , (16973, 0, ">") , (16974, 0, " ") , (16975, 0, "U") , (16976, 0, "n") , (16977, 0, "i") , (16978, 0, "n") , (16979, 0, "i") , (16975, 5, "UninitOwnedIter") , (16990, 0, " ") , (16991, 0, "{") , (16992, 0, "\n ") , (17001, 0, "\n ") , (16993, 8, "") , (16994, 8, " }") , (16953, 0, "s") , (16954, 0, "l") , (16955, 0, "i") , (16956, 0, "c") , (16957, 0, "e") , (16958, 0, ":") , (16959, 0, " ") , ( 16999 , 0 , "\n unsafe fn from_slice(slice: &[MaybeUninit]) -> UninitOwnedIter {" ) , (16932, 0, "// ") , (17037, 12, "") , (17038, 1, "") , ( 17062 , 0 , " unsafe {\n let ptr = self.as_ptr();\n assume(!ptr.is_null());\n\n let end = if mem::size_of::() == 0 {\n (ptr as *const u8).wrapping_add(self.len()) as *const T\n } else {\n ptr.add(self.len())\n };\n\n Iter { ptr: NonNull::new_unchecked(ptr as *mut T), end, _marker: marker::PhantomData }\n }" ) , (17062, 6, " ") , (17101, 4, "s") , (17102, 0, "l") , (17103, 0, "i") , (17104, 0, "c") , (17105, 0, "e") , (17117, 35, "") , (17116, 1, "") , (17116, 0, "\n") , (17117, 0, " assume(!ptr.is_null());") , (17117, 35, "") , (17116, 1, "") , (16908, 0, ":") , (16909, 0, " ") , (16910, 0, "S") , (16911, 0, "i") , (16912, 0, "z") , (16913, 0, "e") , (16914, 0, "d") , (17125, 145, "") , (17125, 16, " ") , (17125, 12, " ") , ( 17125 , 0 , " let end = if mem::size_of::() == 0 {\n (ptr as *const u8).wrapping_add(self.len()) as *const T\n } else {\n" ) , (17147, 139, "") , (17167, 14, "") , (17166, 1, "") , (17166, 0, ";") , (17155, 4, "s") , (17156, 0, "l") , (17157, 0, "i") , (17158, 0, "c") , (17159, 0, "e") , (17123, 1, "") , (17181, 4, "U") , (17181, 1, "UninitOwnedIter") , (17246, 30, "") , (17198, 1, "") , (17198, 0, "\n ") , (17258, 1, "") , (17258, 0, "\n ") , (17278, 1, "") , (17278, 0, "\n ") , (17066, 0, "<") , (17067, 0, "T") , (17068, 0, ">") , (17311, 0, "\n ") , (17312, 4, "}") , (16932, 0, "<") , (16933, 0, "T") , (16934, 0, ">") , (17054, 15, "S") , (17055, 0, "e") , (17056, 0, "l") , (17057, 0, "f") , (17058, 3, "") , ( 17013 , 0 , " unsafe fn from_slice(slice: &[T]) -> Self {\n unsafe {\n let ptr = slice.as_ptr();\n let end = ptr.add(slice.len());\n\n UninitOwnedIter {\n ptr: NonNull::new_unchecked(ptr as *mut T),\n end\n }\n }\n }\n" ) , (17587, 0, "// ") , (17577, 0, "// ") , (17563, 0, "// ") , (17543, 0, "// ") , (17483, 0, "// ") , (17453, 0, "// ") , (17408, 0, "// ") , (17370, 0, "// ") , (17353, 0, "// ") , (17305, 0, "// ") , (782, 0, "\n") , (783, 0, "s") , (784, 0, "e") , (784, 1, "") , (783, 1, "") , (783, 0, "u") , (784, 0, "s") , (785, 0, "e") , (786, 0, " ") , (787, 0, "s") , (788, 0, "t") , (789, 0, "d") , (790, 0, ":") , (791, 0, ":") , (792, 0, "m") , (793, 0, "e") , (794, 0, "m") , (795, 0, ":") , (796, 0, ":") , (797, 0, "M") , (798, 0, "a") , (799, 0, "y") , (797, 3, "MaybeUninit") , (808, 0, ";") , (797, 12, "") , (797, 0, "m") , (798, 0, "a") , (799, 0, "t") , (799, 1, "") , (799, 0, "t") , (797, 3, "") , (797, 0, "MaybeUninit;") , (17074, 0, "M") , (17075, 0, "a") , (17076, 0, "y") , (17077, 0, "b") , (17078, 0, "e") , (17079, 0, "U") , (17080, 0, "n") , (17081, 0, "i") , (17082, 0, "n") , (17083, 0, "i") , (17084, 0, "t") , (17085, 0, "<") , (17087, 0, ">") , (17154, 0, ".") , (17155, 0, "a") , (17156, 0, "s") , (17157, 0, "_") , (17158, 0, "p") , (17159, 0, "t") , (17160, 0, "r") , (17161, 0, "(") , (17162, 0, ")") , (17040, 310, "") , (16965, 75, "") , (17278, 3, "") , (17265, 3, "") , (17248, 3, "") , (17225, 3, "") , (17162, 3, "") , (17129, 3, "") , (17081, 3, "") , (17040, 3, "") , (17020, 3, "") , (16969, 3, "") , (17255, 0, "\n") , (17255, 0, "\n") , (17256, 0, "i") , (17257, 0, "m") , (17258, 0, "p") , (17259, 0, "l") , (17260, 0, " ") , (17261, 0, "I") , (17262, 0, "t") , (17263, 0, "e") , (17264, 0, "r") , (17265, 0, "a") , (17266, 0, "t") , (17267, 0, "o") , (17268, 0, "r") , (17269, 0, " ") , (17270, 0, "f") , (17271, 0, "o") , (17272, 0, "r") , (17273, 0, " ") , (17274, 0, "U") , (17275, 0, "n") , (17276, 0, "i") , (17277, 0, "n") , (17274, 4, "UninitOwnedIter") , (17289, 0, " ") , (17290, 0, "{") , (17291, 0, "\n ") , (17296, 0, "\n ") , (17292, 4, "") , (17293, 4, "}") , (17260, 0, "<") , (17261, 0, "T") , (17262, 0, ">") , (17292, 0, "<") , (17293, 0, "T") , (17294, 0, ">") , (17298, 0, " ") , (17302, 0, "t") , (17303, 0, "y") , (17304, 0, "p") , (17305, 0, "e") , (17306, 0, " ") , (17307, 0, "I") , (17308, 0, "t") , (17309, 0, "e") , (17310, 0, "m") , (17311, 0, " ") , (17312, 0, "=") , (17313, 0, " ") , (17314, 0, "T") , (17315, 0, ";") , (17316, 0, "\n ") , (17321, 0, "\n ") , (17317, 4, "") , (17322, 0, "f") , (17323, 0, "n") , (17324, 0, " ") , (17325, 0, "n") , (17326, 0, "e") , (17327, 0, "x") , (17328, 0, "t") , (17329, 0, "(") , (17330, 0, "&") , (17331, 0, "m") , (17332, 0, "u") , (17333, 0, "t") , (17334, 0, " ") , (17335, 0, "s") , (17336, 0, "e") , (17337, 0, "l") , (17338, 0, "f") , (17339, 0, ")") , (17340, 0, " ") , (17341, 0, "-") , (17342, 0, ">") , (17343, 0, " ") , (17344, 0, "O") , (17345, 0, "p") , (17346, 0, "t") , (17347, 0, "i") , (17348, 0, "o") , (17349, 0, "n") , (17350, 0, "<") , (17351, 0, "S") , (17352, 0, "e") , (17353, 0, "l") , (17354, 0, "f") , (17355, 0, ":") , (17356, 0, ":") , (17357, 0, "I") , (17358, 0, "t") , (17359, 0, "e") , (17360, 0, "m") , (17361, 0, ">") , (17362, 0, " ") , (17363, 0, "{") , (17364, 0, "\n ") , (17373, 0, "\n ") , (17365, 8, "") , (17366, 8, " }") , (17365, 0, " ") , (17373, 0, "N") , (17374, 0, "o") , (17375, 0, "n") , (17376, 0, "e") , (16835, 5, "m") , (16836, 0, "n") , (16837, 0, "u") , (16838, 0, "t") , (16838, 1, "") , (16837, 1, "") , (16836, 1, "") , (16836, 0, "u") , (16837, 0, "t") , (16803, 0, "\n ") , (16808, 0, "/") , (16809, 0, "/") , (16810, 0, " ") , (16811, 0, "B") , (16812, 0, "a") , (16813, 0, "s") , (16814, 0, "e") , (16815, 0, "d") , (16816, 0, " ") , (16817, 0, "o") , (16818, 0, "n") , (16819, 0, " ") , (16820, 0, "s") , (16821, 0, "l") , (16822, 0, "i") , (16823, 0, "c") , (16824, 0, "e") , (16825, 0, ".") , (16825, 1, "") , (16820, 0, "c") , (16821, 0, "o") , (16822, 0, "r") , (16823, 0, "e") , (16824, 0, " ") , (16830, 0, " ") , (16831, 0, "i") , (16832, 0, "t") , (16833, 0, "e") , (16834, 0, "r") , (16831, 4, "I") , (16832, 0, "t") , (16833, 0, "e") , (16834, 0, "R") , (16835, 0, "M") , (16836, 0, "u") , (16837, 0, "t") , (16820, 0, "t") , (16821, 0, "h") , (16822, 0, "e") , (16823, 0, " ") , (16835, 7, "I") , (16836, 0, "t") , (16837, 0, "e") , (16838, 0, "r") , (16839, 0, "M") , (16840, 0, "u") , (16841, 0, "t") , (16842, 0, " ") , (16843, 0, "i") , (16844, 0, "m") , (16845, 0, "e") , (16846, 0, "p") , (16847, 0, "l") , (16848, 0, "m") , (16849, 0, "e") , (16843, 7, "i") , (16844, 0, "m") , (16845, 0, "p") , (16846, 0, "l") , (16847, 0, "e") , (16848, 0, "m") , (16849, 0, "e") , (16850, 0, "n") , (16851, 0, "t") , (16852, 0, "a") , (16853, 0, "t") , (16854, 0, "i") , (16855, 0, "o") , (16856, 0, "n") , (16857, 0, ".") , (17163, 0, " ") , (17164, 0, "a") , (17165, 0, "s") , (17166, 0, " ") , (17167, 0, "*") , (17168, 0, "m") , (17169, 0, "u") , (17170, 0, "t") , (17171, 0, " ") , (17172, 0, "_") , (17163, 10, "") , (17114, 0, "m") , (17115, 0, "u") , (17116, 0, "t") , (17117, 0, ")") , (17117, 1, "") , (17117, 0, ")") , (17117, 1, "") , (17117, 0, "_") , (17247, 10, "") , (17420, 4, "") , (17420, 0, "i") , (17421, 0, "f") , (17422, 0, " ") , (17423, 0, "s") , (17424, 0, "e") , (17425, 0, "l") , (17426, 0, "f") , (17427, 0, ".") , (17428, 0, "p") , (17429, 0, "t") , (17430, 0, "r") , (17431, 0, " ") , (17432, 0, "=") , (17433, 0, "=") , (17434, 0, " ") , (17435, 0, "e") , (17436, 0, "n") , (17437, 0, "d") , (17438, 0, " ") , (17439, 0, "{") , (17440, 0, " ") , (17441, 0, "N") , (17442, 0, "o") , (17443, 0, "n") , (17444, 0, "e") , (17445, 0, " ") , (17446, 0, "}") , (17447, 0, " ") , (17440, 1, "") , (17440, 0, "\n ") , (17458, 1, "") , (17457, 1, "") , (17457, 0, "\n ") , (17458, 12, " }") , (17467, 0, " ") , (17468, 0, "e") , (17469, 0, "l") , (17470, 0, "s") , (17471, 0, "e") , (17472, 0, " ") , (17473, 0, "{") , (17474, 0, "\n ") , (17487, 1, "\n ") , (17488, 12, " }") , (17487, 0, " ") , (17487, 4, "") , (17487, 0, "S") , (17488, 0, "o") , (17489, 0, "m") , (17490, 0, "e") , (17491, 0, "(") , (17492, 0, "p") , (17493, 0, "t") , (17494, 0, "r") , (17495, 0, ".") , (17435, 0, "s") , (17436, 0, "e") , (17437, 0, "l") , (17438, 0, "f") , (17439, 0, ".") , (17492, 0, "// ") , (17504, 0, "\n ") , (17505, 16, " ") , (17517, 0, "N") , (17518, 0, "o") , (17519, 0, "n") , (17520, 0, "e") , (17431, 0, ".") , (17432, 0, "a") , (17433, 0, "s") , (17434, 0, "_") , (17432, 3, "as_ptr()") , (17514, 16, "") , (17513, 1, "") , (17501, 3, "") , (17506, 0, "s") , (17507, 0, "e") , (17508, 0, "l") , (17509, 0, "f") , (17510, 0, ".") , (17515, 0, "r") , (17516, 0, "e") , (17517, 0, "a") , (17518, 0, "d") , (17519, 0, "(") , (17520, 0, ")") , (17521, 0, ")") , (17515, 0, "a") , (17516, 0, "s") , (17517, 0, "_") , (17518, 0, "p") , (17519, 0, "r") , (17519, 1, "") , (17519, 0, "t") , (17520, 0, "r") , (17521, 0, "(") , (17522, 0, ")") , (17523, 0, ",") , (17524, 0, ".") , (17524, 1, "") , (17523, 1, "") , (17523, 0, ".") , (17369, 0, "u") , (17370, 0, "n") , (17371, 0, "s") , (17372, 0, "a") , (17373, 0, "f") , (17374, 0, "e") , (17375, 0, " ") , (17375, 1, "") , (17369, 6, "") , (17369, 0, "unsafe") , (17375, 0, " ") , (17375, 1, "") , (17369, 6, "") , (16799, 0, "'") , (16800, 0, "a") , (16801, 0, ",") , (16802, 0, " ") , (16803, 1, "") , (16803, 0, "C") , (16804, 0, ":") , (16805, 0, ":") , (16805, 1, "") , (16805, 0, " ") , (16806, 0, "C") , (16807, 0, "o") , (16808, 0, "n") , (16808, 1, "") , (16807, 1, "") , (16806, 1, "") , (16806, 0, "L") , (16807, 0, "i") , (16808, 0, "s") , (16809, 0, "t") , (16810, 0, "C") , (16806, 5, "ListConfig") , (16892, 1, "") , (16892, 0, "C") , (16893, 0, ":") , (16894, 0, ":") , (16895, 0, "I") , (16896, 0, "t") , (16897, 0, "e") , (16898, 0, "m") , (16916, 1, "") , (16916, 0, "C::Item") , (16969, 3, "") , (17002, 0, "<") , (17003, 0, "C") , (17004, 0, ">") , (17297, 0, ",") , (17298, 0, "\n ") , (17315, 0, "_") , (17316, 0, "m") , (17317, 0, "a") , (17318, 0, "r") , (17319, 0, "k") , (17315, 5, "_marker") , (17322, 0, ":") , (17323, 0, " ") , (17324, 0, "P") , (17325, 0, "h") , (17326, 0, "a") , (17324, 3, "PhantomData") , (17015, 0, "'") , (17016, 0, "a") , (17017, 0, ",") , (17018, 0, " ") , (17019, 8, "C: ListConfig") , (17050, 1, "") , (17050, 0, "C") , (17089, 1, "") , (17089, 0, "C") , (17090, 0, ":") , (17091, 0, ":") , (17092, 0, "I") , (17093, 0, "t") , (17094, 0, "e") , (17095, 0, "m") , (17050, 0, "'") , (17051, 0, "a") , (17052, 0, ",") , (17053, 0, " ") , (17388, 8, "impl<'a, C: ListConfig> ") , (17441, 0, "'") , (17442, 0, "a") , (17443, 0, ",") , (17444, 0, " ") , (17445, 0, "C") , (17446, 1, "") , (17466, 1, "") , (17466, 0, "C") , (17467, 0, ":") , (17468, 0, ":") , (17469, 0, "I") , (17470, 0, "t") , (17471, 0, "e") , (17472, 0, "m") , (16929, 35, "") , (16925, 4, "") , (16924, 1, "") , (40352, 6, "") , (40351, 1, "") , (40350, 1, "") , (40350, 0, "s") , (40341, 0, " ") , (40342, 0, "U") , (40343, 0, "n") , (40344, 0, "i") , (40345, 0, "n") , (40346, 0, "i") , (40342, 5, "UninitOwnedIter") , (40357, 0, "<") , (40358, 0, "C") , (40359, 0, ">") , (40359, 1, "") , (40358, 1, "") , (40357, 1, "") , (40356, 1, "") , (40356, 0, ".") , (40357, 0, "f") , (40358, 0, "r") , (40359, 0, "o") , (40360, 0, "m") , (40361, 0, "_") , (40362, 0, "s") , (40363, 0, "l") , (40364, 0, "i") , (40365, 0, "c") , (40366, 0, "e") , (40367, 0, "(") , (40368, 1, "") , (40377, 0, ")") , (40342, 14, "UninitOwnedIter") , (40357, 1, "") , (40357, 0, ":") , (40358, 0, ":") , (30288, 1, "") , (30288, 0, "(") , (30293, 0, " ") , (30294, 0, "a") , (30295, 0, "s") , (30296, 0, " ") , (30297, 0, "*") , (30298, 0, "m") , (30299, 0, "u") , (30300, 0, "t") , (30301, 0, " ") , (30302, 0, "_") , (30303, 0, "(") , (30303, 1, "") , (30303, 0, ")") , (30304, 0, ".") , (30305, 0, "w") , (30306, 0, "r") , (30307, 0, "i") , (30308, 0, "t") , (30309, 0, "e") , (30310, 0, "(") , (30311, 1, "") , (30311, 1, "") , (30311, 1, "") , (30315, 0, ")") , (30317, 0, " ") , (30318, 0, "/") , (30319, 0, "/") , (30320, 0, " ") , (30321, 0, "N") , (30321, 1, "") , (30321, 0, "D") , (30322, 0, "o") , (30323, 0, " ") , (30324, 0, "n") , (30325, 0, "o") , (30326, 0, "t") , (30327, 0, " ") , (30328, 0, "c") , (30329, 0, "a") , (30330, 0, "l") , (30331, 0, "l") , (30332, 0, " ") , (30333, 0, "d") , (30334, 0, "r") , (30335, 0, "a") , (30335, 1, "") , (30335, 0, "o") , (30336, 0, "p") , (30337, 0, "(") , (30338, 0, ")") , (30339, 0, " ") , (30340, 0, "o") , (30341, 0, "n") , (30342, 0, " ") , (30343, 0, "c") , (30344, 0, "o") , (30345, 0, "n") , (30346, 0, "t") , (30343, 4, "j") , (30344, 0, "u") , (30345, 0, "n") , (30346, 0, "k") , (30347, 0, ".") , (30302, 1, "") , (30302, 0, "C") , (30303, 0, ":") , (30304, 0, ":") , (30305, 0, "I") , (30306, 0, "t") , (30307, 0, "e") , (30308, 0, "m") , (30293, 17, "") , (30288, 1, "") , (30288, 0, "(") , (30293, 0, " as *mut C::Item)") , ( 30276 , 0 , " (slot as *mut C::Item).write(item); // Do not call drop() on junk.\n" ) , (30367, 0, "// ") , (30288, 22, "") , (30288, 0, "*") , (30289, 13, "") , (30289, 0, "s") , (30290, 0, "l") , (30291, 0, "o") , (30292, 0, "t") , (30293, 0, " ") , (30294, 0, "=") , (30295, 0, " ") , (30296, 0, "i") , (30297, 0, "t") , (30298, 0, "e") , (30299, 0, "m") , (30300, 0, ";") , (30301, 31, "") , (30215, 60, "") , (30214, 1, "") , (30321, 1, "") , (30321, 0, "?") , (40363, 0, "&") , (40364, 0, "m") , (40365, 0, "u") , (40366, 0, "t") , (40367, 0, " ") , (40383, 0, "<") , (40384, 0, "C") , (40385, 0, ">") , (40383, 0, ":") , (40384, 0, ":") , (42652, 0, "// ") , (42631, 0, "\n ") , ( 42652 , 0 , " ptr::copy(\n &c[item_idx],\n &mut c[item_idx + num_inserted_items],\n (*e).num_items as usize - item_idx);" ) , (42772, 20, " ") , (42713, 20, " ") , (42679, 20, " ") , (42632, 36, " ") , ( 42632 , 192 , " ptr::copy(\n &c[leading_bytes + removed_bytes],\n &mut c[leading_bytes],\n trailing_bytes);" ) , (42690, 29, "item_idx + removed_here") , (42690, 23, "leading_bytes + removed_bytes") , (42690, 29, "item_idx + removed_here") , (42747, 13, "i") , (42748, 0, "t") , (42749, 0, "e") , (42750, 0, "m") , (42751, 0, "_") , (42752, 0, "i") , (42747, 6, "item_idx") , (42661, 0, "_") , (42661, 1, "") , (42782, 14, "t") , (42783, 0, "r") , (42784, 0, "a") , (42785, 0, "i") , (42786, 0, "l") , (42787, 0, "i") , (42788, 0, "n") , (42782, 7, "trailing_items") , (46554, 34, ", I: ExactSizeIterator") , (46554, 36, ", mut inserted_content: &[C::Item]") , (46668, 0, ",") , (46669, 0, " ") , (46670, 0, ", I: ExactSizeIterator") , (46670, 36, "") , (46669, 1, "") , (46668, 1, "") , (46668, 0, ", I: ExactSizeIterator") , (46493, 0, ",") , (46494, 0, " ") , (46495, 0, "I") , (46581, 10, "") , (46581, 0, "&") , (46582, 0, "M") , (46582, 1, "") , (46582, 0, "m") , (46583, 0, "u") , (46584, 0, "t") , (46585, 0, " ") , (46586, 0, "I") , (47895, 0, "// ") , (47882, 0, "\n ") , ( 47895 , 0 , " for (slot, item) in new_node.items[..num_items].iter_mut().zip(contents) {\n *slot = item;\n // (slot as *mut C::Item).write(item); // Do not call drop() on junk?\n }\n" ) , (48096, 0, " ") , (48086, 8, " ") , (48004, 12, " ") , (47978, 12, " ") , (47883, 20, " ") , (47958, 8, "i") , (47959, 0, "n") , (47960, 0, "s") , (47961, 0, "e") , (47962, 0, "r") , (47963, 0, "t") , (47964, 0, "e") , (47965, 0, "d") , (47966, 0, "_") , (47967, 0, "c") , (47968, 0, "o") , (47969, 0, "n") , (47970, 0, "t") , (47971, 0, "e") , (47972, 0, "n") , (47973, 0, "t") , (47915, 27, "") , (47915, 0, "o") , (47916, 0, "l") , (47917, 0, "d") , (47918, 0, "_") , (47919, 0, "i") , (47920, 0, "t") , (47921, 0, "e") , (47922, 0, "m") , (47923, 0, "s") , (47990, 85, "") , (47989, 1, "") , (47989, 0, "/") , (47990, 0, " ") , (47990, 1, "") , (47989, 1, "") , (47989, 0, " ") , (47990, 0, "/") , (47991, 0, "/") , (47992, 0, " ") , (47993, 0, "I") , (47994, 0, "n") , (47994, 1, "") , (47993, 1, "") , (47992, 1, "") , (47991, 1, "") , (47991, 0, "/") , (47992, 0, " ") , (47993, 0, "T") , (47994, 0, "i") , (47995, 0, "s") , (47995, 1, "") , (47994, 1, "") , (47994, 0, "h") , (47995, 0, "i") , (47996, 0, "s") , (47997, 0, " ") , (47998, 0, "d") , (47999, 0, "r") , (48000, 0, "o") , (48001, 0, "p") , (48002, 0, "s") , (48003, 0, " ") , (48004, 0, "t") , (48005, 0, "h") , (48006, 0, "e") , (48007, 0, " ") , (48008, 0, "o") , (48009, 0, "l") , (48010, 0, "d") , (48011, 0, " ") , (48008, 4, "r") , (48009, 0, "e") , (48010, 0, "m") , (48011, 0, "o") , (48012, 0, "v") , (48013, 0, "e") , (48014, 0, "d") , (48015, 0, " ") , (48016, 0, "c") , (48017, 0, "o") , (48018, 0, "n") , (48019, 0, "t") , (48020, 0, "e") , (48021, 0, "n") , (48022, 0, "t") , (48023, 0, ".") , (47645, 162, "") , (47877, 4, "\n ") , ( 47890 , 0 , " let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n\n" ) , (47878, 24, " ") , (47573, 71, "") , ( 47807 , 0 , " let new_items = &inserted_content[0..replaced_items_here];\n" ) , (47836, 16, "") , (47836, 0, "inserted_content") , (47836, 16, "") , (47836, 0, "(") , (47837, 0, "*") , (47837, 1, "") , (47836, 1, "") , (47836, 0, "(") , (47837, 0, "*") , (47838, 0, "e") , (47839, 0, ")") , (47840, 0, ".") , (47841, 0, "i") , (47842, 0, "t") , (47843, 0, "e") , (47844, 0, "m") , (47845, 0, "s") , (47835, 36, "o") , (47836, 0, "d") , (47835, 2, "old_items") , (47844, 0, ";") , (47844, 1, "") , (47835, 9, "od") , (47835, 2, "&(*e).items[0..replaced_items_here];") , (47836, 10, "") , (47836, 0, "(*") , (47836, 2, "") , (47836, 0, "inserted_content") , (47807, 71, "") , ( 47573 , 0 , " let new_items = &inserted_content[0..replaced_items_here];\n" ) , (47878, 12, " ") , (47890, 162, "") , (47877, 13, " ") , ( 47645 , 0 , " let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n\n" ) , (47645, 162, "") , (47877, 4, "\n ") , ( 47890 , 0 , " let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n\n" ) , (47878, 24, " ") , (47573, 71, "") , ( 47807 , 0 , " let new_items = &inserted_content[0..replaced_items_here];\n" ) , (47836, 16, "") , (47836, 0, "(*") , (47836, 2, "") , (47836, 0, "(*e).items") , (47835, 36, "od") , (47835, 2, "old_items") , (47844, 0, ";") , (47572, 0, "\n ") , (47585, 0, "l") , (47586, 0, "e") , (47587, 0, "t") , (47588, 0, " ") , (47589, 0, "o") , (47590, 0, "l") , (47591, 0, "d") , (47592, 0, "_") , (47593, 0, "s") , (47594, 0, "i") , (47594, 1, "") , (47593, 1, "") , (47592, 1, "") , (47592, 0, "_") , (47593, 0, "u") , (47594, 0, "s") , (47595, 0, "e") , (47596, 0, "r") , (47597, 0, "s") , (47598, 0, "i") , (47599, 0, "z") , (47600, 0, "e") , (47601, 0, " ") , (47602, 0, "=") , (47603, 0, " ") , (47604, 0, "C::userlen_of_slice(old_items)") , (47634, 0, ";") , (48029, 30, "o") , (48030, 0, "l") , (48031, 0, "d") , (48032, 0, "_") , (48033, 0, "u") , (48029, 5, "old_usersize") , (48051, 1, "") , (47907, 0, "t") , (47905, 1, "") , (47901, 3, "") , (47898, 2, "") , (47754, 0, "t") , (47752, 1, "") , (47748, 3, "") , (47745, 2, "") , (47633, 0, "t") , (47631, 1, "") , (47627, 3, "") , (47624, 2, "") , (47517, 0, "t") , (47515, 1, "") , (47511, 3, "") , (47508, 2, "") , (48828, 3, "") , (48824, 3, "s") , (48822, 1, "d") , (47946, 3, "") , (47942, 3, "s") , (47940, 1, "d") , (47877, 3, "") , (47873, 3, "s") , (47871, 1, "d") , (47855, 28, "") , (47854, 1, "") , (48312, 0, "// ") , (47018, 0, "\n ") , (47031, 0, "d") , (47032, 0, "e") , (47033, 0, "b") , (47034, 0, "u") , (47031, 4, "debug_assert!") , (47044, 0, "(") , (47045, 0, "i") , (47046, 0, "n") , (47047, 0, "s") , (47048, 0, "e") , (47049, 0, "r") , (47050, 0, "t") , (47051, 0, "e") , (47052, 0, "d") , (47053, 0, "_") , (47054, 0, "c") , (47055, 0, "o") , (47056, 0, "n") , (47045, 12, "inserted_content") , (47061, 0, ".") , (47062, 0, "l") , (47063, 0, "e") , (47064, 0, "n") , (47065, 0, "(") , (47066, 0, ")") , (47067, 0, " ") , (47068, 0, ">") , (47069, 0, "=") , (47070, 0, " ") , (47071, 0, "r") , (47072, 0, "e") , (47073, 0, "p") , (47074, 0, "l") , (47075, 0, "a") , (47076, 0, "c") , (47071, 6, "replaced_items") , (47085, 0, ")") , (47086, 0, ";") , (49937, 0, " ") , (49938, 0, "w") , (49939, 0, "h") , (49940, 0, "e") , (49941, 0, "r") , (49942, 0, "e") , (49943, 0, " ") , (49944, 0, "C") , (49945, 0, ":") , (49946, 0, ":") , (49947, 0, "I") , (49948, 0, "t") , (49949, 0, "e") , (49950, 0, "m") , (49951, 0, ":") , (49952, 0, " ") , (49953, 0, "C") , (49954, 0, "l") , (49955, 0, "o") , (49956, 0, "n") , (49957, 0, "e") , (49953, 5, "C") , (49954, 0, "o") , (49955, 0, "p") , (49956, 0, "y") , (50248, 0, ".") , (50249, 0, "i") , (50250, 0, "n") , (50251, 0, "t") , (50252, 0, "o") , (50249, 4, "") , (50248, 1, "") , (50248, 0, ".") , (50249, 0, "i") , (50250, 0, "t") , (50251, 0, "e") , (50252, 0, "r") , (50253, 0, "(") , (50254, 0, ")") , (50255, 0, ".") , (50256, 0, "c") , (50257, 0, "l") , (50258, 0, "o") , (50259, 0, "n") , (50260, 0, "e") , (50261, 0, "d") , (50262, 0, "(") , (50263, 0, ")") , (50256, 6, "c") , (50257, 0, "o") , (50258, 0, "p") , (50259, 0, "i") , (50260, 0, "e") , (50261, 0, "d") , (50232, 0, "&") , (50233, 0, "m") , (50234, 0, "u") , (50235, 0, "t") , (50236, 0, " ") , (50634, 0, " ") , (50635, 0, "w") , (50636, 0, "h") , (50637, 0, "e") , (50638, 0, "r") , (50639, 0, "e") , (50640, 0, " ") , (50641, 0, "C") , (50642, 0, ":") , (50643, 0, ":") , (50644, 0, " ") , (50644, 1, "") , (50644, 0, "I") , (50645, 0, "t") , (50646, 0, "e") , (50647, 0, "m") , (50648, 0, ":") , (50649, 0, " ") , (50650, 0, "C") , (50651, 0, "o") , (50652, 0, "p") , (50653, 0, "y") , (50923, 8, "&mut inserted_content.iter().copied()") , (50928, 16, "c") , (50929, 0, "o") , (50930, 0, "n") , (50931, 0, "t") , (50932, 0, "e") , (50933, 0, "n") , (50934, 0, "t") , (50935, 0, "s") , (51502, 1, "") , (51501, 1, "") , (51501, 0, "o") , (51502, 0, "n") , (51503, 0, "c") , (51504, 0, "e") , (51505, 0, "(") , (51511, 1, "") , (51511, 0, ")") , (51501, 0, "s") , (51502, 0, "t") , (51503, 0, "d") , (51504, 0, ":") , (51505, 0, ":") , (51506, 0, "i") , (51507, 0, "t") , (51508, 0, "e") , (51509, 0, "r") , (51510, 0, ":") , (51511, 0, ":") , (51501, 0, "&") , (51502, 0, "m") , (51503, 0, "u") , (51504, 0, "t") , (51505, 0, " ") , (51506, 11, "") , (51506, 0, "i") , (51507, 0, "t") , (51508, 0, "e") , (51509, 0, "r") , (51510, 0, ":") , (51511, 0, ":") , (923, 0, "\n") , (924, 0, "u") , (925, 0, "s") , (926, 0, "e") , (927, 0, " ") , (928, 0, "s") , (929, 0, "t") , (930, 0, "d") , (931, 0, ":") , (932, 0, ":") , (933, 0, "i") , (934, 0, "t") , (935, 0, "e") , (936, 0, "r") , (937, 0, ";") , (18755, 0, " ") , (18756, 0, "w") , (18757, 0, "h") , (18758, 0, "e") , (18759, 0, "r") , (18760, 0, "e") , (18761, 0, " ") , (18762, 0, "C") , (18763, 0, ":") , (18764, 0, ":") , (18765, 0, "I") , (18766, 0, "t") , (18767, 0, "e") , (18768, 0, "m") , (18769, 0, ":") , (18770, 0, " ") , (18771, 0, "C") , (18772, 0, "o") , (18773, 0, "p") , (18774, 0, "y") , (51632, 8, "&mut contents.iter().copied()") , (52022, 6, "&mut iter::once(start)") , (52038, 5, "e") , (52039, 0, "n") , (52040, 0, "d") , (53652, 0, " ") , (53653, 0, "w") , (53654, 0, "h") , (53655, 0, "e") , (53656, 0, "r") , (53657, 0, "e") , (53658, 0, " ") , (53659, 0, "C") , (53660, 0, ":") , (53661, 0, ":") , (53662, 0, "I") , (53663, 0, "t") , (53664, 0, "e") , (53665, 0, "m") , (53666, 0, ":") , (53667, 0, " ") , (53668, 0, "C") , (53669, 0, "o") , (53670, 0, "p") , (53671, 0, "y") , (53818, 0, " where C::Item: Copy") , (53763, 0, "\n") , (53764, 0, "/") , (53765, 0, "/") , (53766, 0, " ") , (53767, 0, "T") , (53768, 0, "O") , (53769, 0, "D") , (53770, 0, "O") , (53771, 0, ":") , (53772, 0, " ") , (53773, 0, "R") , (53774, 0, "e") , (53775, 0, "m") , (53776, 0, "o") , (53777, 0, "v") , (53778, 0, "e") , (53779, 0, " ") , (53780, 0, "I") , (53781, 0, "t") , (53782, 0, "e") , (53783, 0, "m") , (53784, 0, ":") , (53785, 0, " ") , (53786, 0, "C") , (53787, 0, "o") , (53788, 0, "p") , (53789, 0, "y") , (53790, 0, " ") , (53791, 0, "c") , (53792, 0, "o") , (53793, 0, "n") , (53794, 0, "s") , (53795, 0, "t") , (53796, 0, "r") , (53797, 0, "a") , (53798, 0, "i") , (53799, 0, "n") , (53800, 0, "t") , (53801, 0, " ") , (53802, 0, "h") , (53803, 0, "e") , (53804, 0, "r") , (53805, 0, "e") , (53806, 0, ".") , (54104, 0, ":") , (54105, 0, " ") , (54106, 0, "V") , (54107, 0, "e") , (54108, 0, "c") , (54109, 0, "<") , (54110, 0, "<") , (54110, 1, "") , (54110, 0, "C") , (54111, 0, ":") , (54112, 0, ":") , (54113, 0, "I") , (54114, 0, "t") , (54115, 0, "e") , (54116, 0, "m") , (54117, 0, ">") , (54110, 8, "") , (54110, 0, "<") , (54105, 6, "") , (54104, 1, "") , (54042, 0, " ") , (54043, 0, "w") , (54044, 0, "h") , (54045, 0, "e") , (54046, 0, "r") , (54047, 0, "e") , (54048, 0, " ") , (54049, 0, "C") , (54050, 0, ":") , (54051, 0, ":") , (54052, 0, "I") , (54053, 0, "t") , (54054, 0, "e") , (54055, 0, "m") , (54056, 0, ":") , (54057, 0, " ") , (54058, 0, "C") , (54059, 0, "o") , (54060, 0, "p") , (54061, 0, "y") , (54124, 0, ":") , (54125, 0, " ") , (54126, 0, "V") , (54127, 0, "e") , (54128, 0, "c") , (54129, 0, "<") , (54130, 0, "<") , (54130, 1, "") , (54130, 0, "C") , (54131, 0, ":") , (54132, 0, ":") , (54133, 0, "I") , (54134, 0, "t") , (54135, 0, "e") , (54136, 0, "m") , (54137, 0, ">") , (5385, 0, "M") , (5386, 0, "a") , (5387, 0, "y") , (5388, 0, "b") , (5389, 0, "e") , (5390, 0, "U") , (5391, 0, "n") , (5392, 0, "i") , (5393, 0, "n") , (5394, 0, "i") , (5395, 0, "t") , (5396, 0, "<") , (5404, 0, ">") , (9791, 18, "") , (9791, 0, "M") , (9792, 0, "a") , (9793, 0, "y") , (9794, 0, "b") , (9795, 0, "e") , (9791, 5, "MaybeUninit") , (9802, 0, ":") , (9803, 0, ":") , (9804, 0, "u") , (9805, 0, "n") , (9806, 0, "i") , (9806, 1, "") , (9806, 0, "i") , (9807, 0, "n") , (9808, 0, "i") , (9809, 0, "t") , (9810, 0, "(") , (9811, 0, ")") , (10392, 0, "\n ") , (10401, 0, "\n ") , (10393, 8, "") , (10394, 8, "") , (10393, 1, "") , (10393, 0, " ") , (10401, 0, "/") , (10402, 0, "/") , (10403, 0, " ") , (10404, 0, "T") , (10405, 0, "O") , (10406, 0, "D") , (10407, 0, "O") , (10408, 0, ":") , (10409, 0, " ") , (10410, 0, "U") , (10411, 0, "s") , (10412, 0, "e") , (10413, 0, " ") , (10414, 0, "U") , (10415, 0, "n") , (10416, 0, "i") , (10417, 0, "n") , (10418, 0, "i") , (10419, 0, "t") , (10414, 6, "M") , (10415, 0, "a") , (10416, 0, "y") , (10417, 0, "b") , (10418, 0, "e") , (10419, 0, "U") , (10420, 0, "n") , (10421, 0, "i") , (10422, 0, "n") , (10423, 0, "i") , (10424, 0, "t") , (10425, 0, ":") , (10426, 0, ":") , (10427, 0, "slice_get_ref") , (10440, 0, " ") , (10441, 0, "w") , (10442, 0, "h") , (10443, 0, "e") , (10444, 0, "n") , (10445, 0, " ") , (10446, 0, "i") , (10447, 0, "t") , (10448, 0, "s") , (10449, 0, " ") , (10449, 1, "") , (10448, 1, "") , (10448, 0, " ") , (10449, 0, "l") , (10450, 0, "a") , (10451, 0, "n") , (10452, 0, "d") , (10453, 0, "s") , (10454, 0, ".") , (10455, 0, "\n ") , (10464, 0, "\n ") , (10456, 8, "") , ( 10465 , 0 , " // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n unsafe { &*(slice as *const [Self] as *const [T]) }" ) , (10457, 16, " ") , (10457, 12, " ") , (10455, 0, " ") , (10456, 0, "T") , (10457, 0, "h") , (10458, 0, "i") , (10459, 0, "s") , (10460, 0, " ") , (10461, 0, "c") , (10462, 0, "o") , (10463, 0, "d") , (10464, 0, "e") , (10465, 0, " ") , (10466, 0, "i") , (10467, 0, "s") , (10468, 0, " ") , (10469, 0, "s") , (10470, 0, "t") , (10471, 0, "i") , (10472, 0, "l") , (10472, 1, "") , (10471, 1, "") , (10471, 0, "o") , (10472, 0, "l") , (10473, 0, "e") , (10474, 0, "d") , (10475, 0, " ") , (10475, 1, "") , (10474, 1, "") , (10474, 0, "n") , (10475, 0, " ") , (10476, 0, "f") , (10477, 0, "r") , (10478, 0, "o") , (10479, 0, "m") , (10480, 0, " ") , (10481, 0, "t") , (10482, 0, "h") , (10483, 0, "a") , (10484, 0, "t") , (10485, 0, " ") , (10486, 0, "i") , (10487, 0, "m") , (10488, 0, "p") , (10489, 0, "l") , (10490, 0, "e") , (10491, 0, "m") , (10492, 0, "e") , (10493, 0, "n") , (10494, 0, "t") , (10495, 0, "a") , (10496, 0, "t") , (10497, 0, "i") , (10498, 0, "o") , (10499, 0, "n") , (10500, 0, ".") , (10920, 38, "") , (10860, 0, "\n ") , (10860, 0, "l") , (10861, 0, "e") , (10862, 0, "t") , (10863, 0, " ") , (10864, 0, "s") , (10865, 0, "l") , (10866, 0, "i") , (10867, 0, "c") , (10868, 0, "e") , (10869, 0, " ") , (10870, 0, "=") , (10871, 0, " ") , (10872, 0, "&self.items[..self.num_items as usize]") , (10910, 0, ";") , (10976, 4, "") , (10972, 4, "") , (10971, 1, "") , (10949, 4, "C::Item") , (10949, 7, "Self") , (10966, 1, "C::Item") , (10949, 4, "") , (10949, 0, "M") , (10950, 0, "a") , (10951, 0, "y") , (10949, 3, "MaybeUninit") , (10960, 0, "<") , (10961, 0, "C::Item") , (10968, 0, ">") , (16021, 0, "*") , (16022, 0, "(") , (16065, 0, ".") , (16066, 0, "a") , (16067, 0, "s") , (16068, 0, "_") , (16069, 0, "m") , (16070, 0, "u") , (16071, 0, "t") , (16072, 0, "_") , (16072, 1, "") , (16071, 1, "") , (16070, 1, "") , (16069, 1, "") , (16068, 1, "") , (16068, 0, "_") , (16069, 0, "p") , (16070, 0, "t") , (16071, 0, "r") , (16072, 0, "(") , (16073, 0, ")") , (16074, 0, ")") , (16011, 0, "\n ") , (16020, 0, "/") , (16021, 0, "/") , (16022, 0, " ") , (16023, 0, "T") , (16024, 0, "h") , (16025, 0, "i") , (16026, 0, "s") , (16027, 0, " ") , (16028, 0, "i") , (16029, 0, "s") , (16030, 0, " ") , (16031, 0, "s") , (16032, 0, "o") , (16033, 0, " ") , (16034, 0, "g") , (16035, 0, "r") , (16036, 0, "o") , (16037, 0, "s") , (16038, 0, "s") , (16039, 0, ".") , (16023, 17, "S") , (16024, 0, "o") , (16025, 0, " ") , (16026, 0, "g") , (16027, 0, "o") , (16028, 0, "r") , (16028, 1, "") , (16027, 1, "") , (16027, 0, "r") , (16028, 0, "o") , (16029, 0, "s") , (16030, 0, "s") , (16031, 0, ".") , (16044, 18, "") , (16044, 0, "n") , (16045, 0, "o") , (16046, 0, "d") , (16047, 0, "e") , (16032, 0, "\n ") , (16041, 0, "l") , (16042, 0, "e") , (16043, 0, "t") , (16044, 0, " ") , (16045, 0, "n") , (16046, 0, "o") , (16047, 0, "d") , (16048, 0, "e") , (16049, 0, " ") , (16050, 0, "=") , (16051, 0, " ") , (16052, 0, "(*self.here_ptr())") , (16070, 0, ";") , (16052, 0, "&") , (16053, 1, "") , (16069, 1, "") , (16070, 0, "\n ") , (16079, 0, "d") , (16080, 0, "e") , (16081, 0, "b") , (16082, 0, "u") , (16083, 0, "g") , (16079, 5, "debug_assert!") , (16092, 0, "(") , (16093, 0, "n") , (16094, 0, "o") , (16095, 0, "d") , (16096, 0, "e") , (16097, 0, ".") , (16098, 0, "n") , (16099, 0, "u") , (16100, 0, "m") , (16101, 0, "_") , (16102, 0, "i") , (16103, 0, "t") , (16098, 6, "num_items") , (16107, 0, " ") , (16108, 0, ">") , (16109, 0, "=") , (16110, 0, " ") , (16111, 0, "s") , (16112, 0, "e") , (16113, 0, "l") , (16114, 0, "f") , (16115, 0, ".") , (16116, 0, "l") , (16117, 0, "o") , (16118, 0, "c") , (16119, 0, "a") , (16120, 0, "l") , (16116, 5, "local_index") , (16127, 0, ")") , (16128, 0, ";") , (16127, 0, " ") , (16128, 0, "a") , (16129, 0, "s") , (16130, 0, " ") , (16131, 0, "u") , (16132, 0, "s") , (16133, 0, "i") , (16134, 0, "z") , (16135, 0, "e") , (16127, 9, "") , (16107, 0, " as usize") , (16070, 0, "\n ") , (16071, 8, "") , (16070, 1, "") , (16012, 20, "") , (16011, 1, "") , (16049, 0, "\n ") , (16058, 0, "/") , (16059, 0, "/") , (16060, 0, " ") , (16061, 0, "T") , (16062, 0, "O") , (16063, 0, "D") , (16064, 0, "O") , (16065, 0, ":") , (16066, 0, " ") , (16067, 0, "I") , (16068, 0, "t") , (16069, 0, " ") , (16070, 0, "m") , (16071, 0, "i") , (16072, 0, "g") , (16073, 0, "h") , (16074, 0, "t") , (16075, 0, " ") , (16076, 0, "b") , (16077, 0, "e") , (16078, 0, " ") , (16079, 0, "m") , (16080, 0, "o") , (16081, 0, "r") , (16082, 0, "e") , (16083, 0, " ") , (16084, 0, "r") , (16085, 0, "u") , (16086, 0, "s") , (16087, 0, "t") , (16088, 0, "y") , (16089, 0, " ") , (16090, 0, "t") , (16091, 0, "o") , (16092, 0, " ") , (16050, 43, "") , (16049, 1, "") , (18524, 36, "[MaybeUninit::uninit(); NODE_NUM_ITEMS]") , (18310, 0, "\n") , (18311, 0, "f") , (18312, 0, "n") , (18313, 0, " ") , (18314, 0, "f") , (18315, 0, "o") , (18316, 0, "o") , ( 18317 , 0 , "pub fn uninit_array() -> [Self; LEN] {\n unsafe { MaybeUninit::<[MaybeUninit; LEN]>::uninit().assume_init() }\n }" ) , (18454, 4, "") , (18374, 8, " ") , (18311, 10, "") , (18326, 18, "") , (18390, 3, "M") , (18339, 3, "M") , (18389, 0, "A") , (18340, 0, "A") , (18391, 0, "X") , (18341, 0, "X") , (18390, 3, "N") , (18339, 3, "N") , (18389, 0, "U") , (18340, 0, "U") , (18391, 0, "M") , (18341, 0, "M") , (18390, 3, "NODE_NUM_ITEMS") , (18339, 3, "NODE_NUM_ITEMS") , (18326, 0, "<") , (18327, 0, "T") , (18328, 0, ">") , (18336, 4, "M") , (18337, 0, "a") , (18338, 0, "y") , (18339, 0, "b") , (18340, 0, "e") , (18336, 5, "MaybeUninit") , (18347, 0, "<") , (18348, 0, "T") , (18349, 0, ">") , (18321, 0, "i") , (18322, 0, "t") , (18323, 0, "e") , (18324, 0, "m") , (18325, 0, "s") , (18326, 0, "_") , (18678, 39, "") , (18678, 0, "u") , (18679, 0, "n") , (18680, 0, "i") , (18681, 0, "n") , (18678, 4, "uninit_items_array") , (18696, 0, "(") , (18697, 0, ")") , (18310, 0, "\n") , (18311, 0, "/") , (18312, 0, "/") , (18313, 0, " ") , (18314, 0, "T") , (18315, 0, "O") , (18316, 0, "D") , (18317, 0, "O") , (18318, 0, ":") , (18319, 0, " ") , (18320, 0, "S") , (18321, 0, "t") , (18322, 0, "o") , (18323, 0, "l") , (18324, 0, "e") , (18325, 0, "n") , (18326, 0, " ") , (18327, 0, "f") , (18328, 0, "r") , (18329, 0, "o") , (18330, 0, "m") , (18331, 0, " ") , (18332, 0, "uninit_array") , (18331, 0, " ") , (18332, 0, "M") , (18333, 0, "a") , (18334, 0, "y") , (18335, 0, "b") , (18336, 0, "e") , (18337, 0, "U") , (18338, 0, "n") , (18339, 0, "i") , (18340, 0, "n") , (18341, 0, "i") , (18342, 0, "t") , (18343, 0, ":") , (18344, 0, ":") , (18345, 1, "") , (18357, 0, ".") , (18358, 0, " ") , (18359, 0, "R") , (18359, 1, "") , (18359, 0, "C") , (18360, 0, "a") , (18361, 0, "l") , (18362, 0, "l") , (18363, 0, " ") , (18364, 0, "t") , (18365, 0, "h") , (18366, 0, "a") , (18367, 0, "t") , (18368, 0, " ") , (18369, 0, "w") , (18370, 0, "h") , (18371, 0, "e") , (18372, 0, "n") , (18373, 0, " ") , (18374, 0, "t") , (18375, 0, "h") , (18376, 0, "i") , (18377, 0, "s") , (18359, 19, "R") , (18360, 0, "e") , (18361, 0, "p") , (18362, 0, "l") , (18363, 0, "a") , (18364, 0, "c") , (18365, 0, "e") , (18366, 0, " ") , (18367, 0, "w") , (18368, 0, "i") , (18369, 0, "t") , (18370, 0, "h") , (18371, 0, " ") , (18372, 0, "MaybeUninit::uninit_array") , (18397, 0, " ") , (18398, 0, "w") , (18399, 0, "h") , (18400, 0, "e") , (18401, 0, "n") , (18402, 0, " ") , (18372, 13, "") , (18372, 0, "t") , (18373, 0, "h") , (18374, 0, "e") , (18375, 0, " ") , (18376, 0, "r") , (18377, 0, "e") , (18378, 0, "a") , (18379, 0, "l") , (18380, 0, " ") , (18399, 0, "s") , (18400, 0, "t") , (18401, 0, "a") , (18402, 0, "b") , (18403, 0, "l") , (18404, 0, "e") , (18405, 0, ".") , (9790, 39, "uninit_items_array") , (9808, 0, "(") , (9809, 0, ")") , (21795, 1, "") , (21797, 30, "") , (21796, 1, "") , (21796, 0, ".") , (21797, 0, "c") , (21798, 0, "o") , (21799, 0, "n") , (21800, 0, "t") , (21801, 0, "e") , (21802, 0, "n") , (21803, 0, "t") , (21797, 7, "content_slice") , (21810, 0, "(") , (21811, 0, ")") , (27339, 0, ".") , (27339, 1, "") , (27324, 0, "*") , (27323, 0, "u") , (27324, 0, "n") , (27325, 0, "s") , (27326, 0, "a") , (27327, 0, "f") , (27328, 0, "e") , (27329, 0, " ") , (27330, 0, "{") , (27331, 0, " ") , (27349, 0, ".") , (27350, 0, "a") , (27350, 1, "") , (27350, 0, "a") , (27351, 0, "s") , (27352, 0, "_") , (27350, 3, "as_ptr") , (27356, 0, "(") , (27357, 0, ")") , (27358, 0, " ") , (27359, 0, "}") , (31156, 1, "") , (31160, 0, ".") , (31161, 0, "w") , (31162, 0, "r") , (31163, 0, "i") , (31164, 0, "t") , (31165, 0, "e") , (31166, 0, "(") , (31167, 1, "") , (31167, 1, "") , (31167, 1, "") , (31171, 0, ")") , (31160, 0, ".") , (31161, 0, "a") , (31162, 0, "s") , (31163, 0, "_") , (31164, 0, "m") , (31165, 0, "u") , (31166, 0, "t") , (31167, 0, "_") , (31161, 7, "as_mut_ptr") , (31171, 0, "(") , (31172, 0, ")") , (31179, 0, "<") , (31180, 0, "C") , (31181, 0, ":") , (31182, 0, ":") , (31183, 0, "I") , (31184, 0, "t") , (31185, 0, "e") , (31186, 0, "m") , (31187, 0, ">") , (31179, 0, ":") , (31180, 0, ":") , (31179, 11, "") , (31084, 0, ":") , (31085, 0, " ") , (31086, 0, "C") , (31087, 0, ":") , (31088, 0, ":") , (31089, 0, "I") , (31090, 0, "t") , (31091, 0, "e") , (31092, 0, "m") , (31084, 9, "") , (31085, 0, ":") , (31086, 0, " ") , (31087, 0, "_") , (31087, 1, "") , (31087, 0, "(") , (31088, 0, "_") , (31089, 0, ",") , (31090, 0, " ") , (31091, 0, "T") , (31092, 0, ":") , (31093, 0, ":") , (31093, 1, "") , (31092, 1, "") , (31091, 1, "") , (31091, 0, "C") , (31092, 0, ":") , (31093, 0, ":") , (31094, 0, "I") , (31095, 0, "t") , (31096, 0, "e") , (31097, 0, "m") , (31098, 0, ">") , (31098, 1, "") , (31098, 0, ")") , (31085, 14, "") , (31156, 0, "(") , (31174, 0, " ") , (31175, 0, "a") , (31176, 0, "s") , (31177, 0, " ") , (31178, 0, "*") , (31179, 0, "m") , (31180, 0, "u") , (31181, 0, "t") , (31182, 0, " ") , (31183, 0, "C") , (31184, 0, ":") , (31185, 0, ":") , (31186, 0, "I") , (31187, 0, "t") , (31188, 0, "e") , (31189, 0, "m") , (31190, 0, ")") , (31205, 82, "") , (31204, 0, " ") , (31205, 0, "/") , (31206, 0, "/") , (31207, 0, " ") , (31208, 0, "M") , (31209, 0, "a") , (31210, 0, "k") , (31211, 0, "e") , (31212, 0, " ") , (31213, 0, "s") , (31214, 0, "u") , (31215, 0, "r") , (31216, 0, "e") , (31217, 0, " ") , (31218, 0, "w") , (31219, 0, "e") , (31220, 0, " ") , (31221, 0, "d") , (31222, 0, "o") , (31223, 0, "n") , (31224, 0, "'") , (31225, 0, "t") , (31226, 0, " ") , (31208, 19, "W") , (31209, 0, "r") , (31210, 0, "i") , (31211, 0, "t") , (31212, 0, "e") , (31213, 0, " ") , (31214, 0, "m") , (31215, 0, "a") , (31216, 0, "k") , (31217, 0, "e") , (31218, 0, "s") , (31219, 0, " ") , (31220, 0, "s") , (31221, 0, "u") , (31222, 0, "e") , (31223, 0, " ") , (31224, 0, "w") , (31224, 1, "") , (31223, 1, "") , (31222, 1, "") , (31222, 0, "r") , (31223, 0, "e") , (31224, 0, " ") , (31225, 0, "w") , (31226, 0, "e") , (31227, 0, "o") , (31228, 0, "n") , (31229, 0, "'") , (31230, 0, "t") , (31231, 0, " ") , (31225, 7, "w") , (31226, 0, "e") , (31227, 0, " ") , (31228, 0, "d") , (31229, 0, "o") , (31230, 0, "n") , (31231, 0, "'") , (31232, 0, "t") , (31233, 0, " ") , (31234, 0, "d") , (31235, 0, "r") , (31236, 0, "o") , (31237, 0, "p") , (31238, 0, " ") , (31239, 0, "t") , (31240, 0, "h") , (31241, 0, "e") , (31242, 0, " ") , (31243, 0, "o") , (31244, 0, "l") , (31245, 0, "d") , (31246, 0, " ") , (31247, 0, "v") , (31248, 0, "a") , (31249, 0, "l") , (31250, 0, "u") , (31251, 0, "e") , (31252, 0, ".") , (1987, 9, "") , (31147, 0, "// ") , (31134, 0, "\n ") , (31147, 0, "s") , (31148, 0, "l") , (31149, 0, "o") , (31150, 0, "t") , (31151, 0, ".") , (31152, 0, "v") , (31153, 0, "a") , (31154, 0, "l") , (31155, 0, "u") , (31156, 0, "e") , (31157, 0, " ") , (31158, 0, "=") , (31159, 0, " ") , (31160, 0, "M") , (31161, 0, "a") , (31162, 0, "n") , (31163, 0, "u") , (31164, 0, "a") , (31165, 0, "l") , (31166, 0, "l") , (31160, 0, "s") , (31161, 0, "t") , (31162, 0, "d") , (31163, 0, ":") , (31164, 0, ":") , (31165, 0, "m") , (31166, 0, "e") , (31167, 0, "m") , (31168, 0, "o") , (31168, 1, "") , (31168, 0, ":") , (31169, 0, ":") , (31170, 7, "ManuallyDrop") , (31182, 0, ":") , (31183, 0, ":") , (31184, 0, "n") , (31185, 0, "e") , (31186, 0, "w") , (31187, 0, "(") , (31188, 0, "i") , (31189, 0, "t") , (31190, 0, "e") , (31191, 0, "m") , (31192, 0, ")") , (31193, 0, ";") , (31135, 59, "") , (31134, 1, "") , (31147, 3, "") , (37172, 0, "\n ") , (37189, 0, "/") , (37190, 0, "/") , (37191, 0, " ") , (37192, 0, "W") , (37193, 0, "e") , (37194, 0, " ") , (37195, 0, "d") , (37196, 0, "o") , (37197, 0, " ") , (37198, 0, "w") , (37199, 0, "a") , (37200, 0, "n") , (37201, 0, "t") , (37202, 0, " ") , (37203, 0, "t") , (37204, 0, "o") , (37205, 0, " ") , (37206, 0, "d") , (37207, 0, "r") , (37208, 0, "o") , (37209, 0, "p") , (37210, 0, " ") , (37211, 0, "t") , (37212, 0, "h") , (37213, 0, "e") , (37214, 0, " ") , (37215, 0, "o") , (37216, 0, "l") , (37217, 0, "d") , (37218, 0, " ") , (37219, 0, "i") , (37220, 0, "t") , (37221, 0, "e") , (37222, 0, "m") , (37223, 0, ".") , (37192, 32, "D") , (37193, 0, "o") , (37194, 0, " ") , (37195, 0, "n") , (37196, 0, "o") , (37197, 0, "t") , (37198, 0, " ") , (37199, 0, "d") , (37200, 0, "r") , (37201, 0, "o") , (37202, 0, "p") , (37203, 0, " ") , (37204, 0, "t") , (37205, 0, "h") , (37206, 0, "e") , (37207, 0, " ") , (37208, 0, "o") , (37209, 0, "l") , (37210, 0, "d") , (37211, 0, " ") , (37212, 0, "i") , (37213, 0, "t") , (37214, 0, "e") , (37215, 0, "m") , (37216, 0, "s") , (37217, 0, ".") , (37235, 13, "(slot.as_mut_ptr() as *mut C::Item).write(item);") , (37112, 4, "s") , (37113, 0, "l") , (37114, 0, "o") , (37115, 0, "t") , (37217, 1, "") , (37217, 0, " ") , (37218, 0, "-") , (37219, 0, " ") , (37220, 0, "t") , (37221, 0, "h") , (37222, 0, "e") , (37223, 0, "y") , (37224, 0, " ") , (37225, 0, "w") , (37226, 0, "e") , (37227, 0, "r") , (37228, 0, "e") , (37229, 0, " ") , (37230, 0, "o") , (37231, 0, "n") , (37232, 0, "l") , (37233, 0, "y") , (37234, 0, " ") , (37235, 0, "m") , (37236, 0, "o") , (37237, 0, "v") , (37238, 0, "e") , (37239, 0, "d") , (37240, 0, ".") , ( 37242 , 0 , " (slot.as_mut_ptr() as *mut C::Item).write(item);\n" ) , (37323, 0, "// ") , (37276, 17, "") , (37258, 1, "") , (37289, 68, "") , (37302, 0, "\n ") , (37315, 0, "l") , (37316, 0, "e") , (37317, 0, "t") , (37318, 0, " ") , (37319, 0, "d") , (37320, 0, "e") , (37321, 0, "s") , (37322, 0, "t") , (37319, 4, "dest_content_slice") , (37337, 0, " ") , (37338, 0, "=") , (37339, 0, " ") , (8805, 0, "\n") , (8806, 0, "\n") , (8807, 0, "f") , (8808, 0, "n") , (8809, 0, " ") , (8810, 0, "s") , (8811, 0, "l") , (8812, 0, "i") , (8813, 0, "c") , (8814, 0, "e") , (8815, 0, "_") , (8810, 0, "u") , (8811, 0, "n") , (8812, 0, "i") , (8813, 0, "n") , (8814, 0, "i") , (8815, 0, "t") , (8816, 0, "_") , (8810, 0, "m") , (8811, 0, "a") , (8812, 0, "y") , (8813, 0, "b") , (8814, 0, "e") , (8815, 13, "m") , (8815, 1, "") , (8815, 0, "i") , (8816, 0, "n") , (8817, 0, "i") , (8818, 0, "t") , (8819, 0, "_") , (8820, 0, "s") , (8821, 0, "l") , (8822, 0, "i") , (8823, 0, "c") , (8824, 0, "e") , (8825, 0, "_") , (8826, 0, "g") , (8827, 0, "e") , (8828, 0, "t") , (8829, 0, "_") , (8830, 0, "r") , (8831, 0, "e") , (8832, 0, "f") , (8833, 0, "(") , (8834, 0, "\n ") , (8839, 0, "\n ") , (8835, 4, "") , ( 8840 , 0 , " pub unsafe fn slice_get_ref(slice: &[Self]) -> &[T] {\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n unsafe { &*(slice as *const [Self] as *const [T]) }\n }" ) , (8836, 8, " ") , (8806, 0, "\n") , (8807, 0, "/") , (8808, 0, "/") , (8809, 0, " ") , (8810, 0, "S") , (8811, 0, "t") , (8812, 0, "o") , (8813, 0, "l") , (8814, 0, "e") , (8815, 0, "d") , (8816, 0, " ") , (8816, 1, "") , (8815, 1, "") , (8815, 0, "n") , (8816, 0, " ") , (8817, 0, "f") , (8818, 0, "r") , (8819, 0, "o") , (8820, 0, "m") , (8821, 0, " ") , (8822, 0, "s") , (8823, 0, "t") , (8823, 1, "") , (8822, 1, "") , (8822, 0, "s") , (8823, 0, "t") , (8824, 0, "d") , (8825, 0, ":") , (8826, 0, ":") , (8822, 5, "c") , (8823, 0, "o") , (8824, 0, "r") , (8825, 0, "e") , (8826, 0, ":") , (8827, 0, ":") , (8828, 0, "m") , (8829, 0, "e") , (8830, 0, "m") , (8831, 0, ":") , (8832, 0, ":") , (8833, 0, "m") , (8834, 0, "a") , (8835, 0, "y") , (8836, 0, "b") , (8837, 0, "e") , (8838, 0, "u") , (8833, 6, "MaybeUninit") , (8844, 0, ".") , (8845, 0, " ") , (8846, 0, "I") , (8847, 0, "t") , (8848, 0, "s") , (8849, 0, " ") , (8850, 0, "j") , (8851, 0, "u") , (8852, 0, "s") , (8853, 0, "t") , (8854, 0, " ") , (8855, 0, "n") , (8856, 0, "o") , (8857, 0, "t") , (8858, 0, " ") , (8859, 0, "s") , (8860, 0, "t") , (8861, 0, "a") , (8862, 0, "n") , (8863, 0, "d") , (8864, 0, "a") , (8865, 0, "r") , (8866, 0, "d") , (8867, 0, "l") , (8868, 0, "i") , (8868, 1, "") , (8867, 1, "") , (8866, 1, "") , (8865, 1, "") , (8865, 0, "r") , (8866, 0, "d") , (8867, 0, "i") , (8868, 0, "z") , (8869, 0, "e") , (8870, 0, "d") , (8871, 0, " ") , (8872, 0, "y") , (8873, 0, "e") , (8874, 0, "t") , (8875, 0, ".") , (8904, 34, "") , (8903, 0, "<") , (8904, 0, "T") , (8905, 0, ">") , (8916, 4, "M") , (8917, 0, "a") , (8918, 0, "y") , (8919, 0, "b") , (8920, 0, "e") , (8916, 5, "MaybeUninit") , (8927, 0, "<") , (8928, 0, "T") , (8929, 0, ">") , (8877, 0, "u") , (8878, 0, "n") , (8879, 0, "s") , (8880, 0, "a") , (8881, 0, "f") , (8882, 0, "e") , (8883, 0, " ") , (9359, 4, "") , (9299, 8, " ") , (9235, 8, " ") , (9140, 8, " ") , (9042, 8, " ") , (8950, 8, " ") , (9316, 4, "") , (9316, 0, "M") , (9317, 0, "a") , (9318, 0, "y") , (9319, 0, "b") , (9320, 0, "e") , (9316, 5, "MaybeUninit") , (9327, 0, "<") , (9328, 0, "T") , (9329, 0, ">") , (8806, 545, "") , (8805, 1, "") , (8804, 1, "") , (18530, 0, "\n") , (18531, 0, "\n") , ( 18532 , 0 , "\n// Stolen from core::mem::MaybeUninit. Its just not standardized yet.\nunsafe fn maybeinit_slice_get_ref(slice: &[MaybeUninit]) -> &[T] {\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n unsafe { &*(slice as *const [MaybeUninit] as *const [T]) }\n}\n" ) , (18531, 1, "") , (8804, 0, "\n") , (10882, 0, "\n ") , (10891, 0, "m") , (10892, 0, "a") , (10893, 0, "y") , (10891, 3, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (10915, 24, "s") , (10916, 0, "l") , (10917, 0, "i") , (10918, 0, "c") , (10919, 0, "e") , (10930, 0, "// ") , (10922, 84, "") , (10921, 1, "") , (18334, 0, "\n") , (18335, 0, "#[inline(always)]") , (18335, 17, "") , (18334, 1, "") , (18559, 0, "\n") , (18560, 0, "#[inline(always)]") , (18334, 0, "\n") , (18335, 0, "#[inline(always)]") , (37878, 0, "m") , (37879, 0, "a") , (37880, 0, "y") , (37881, 0, "b") , (37882, 0, "e") , (37878, 5, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (37902, 24, "d") , (37903, 0, "e") , (37904, 0, "s") , (37905, 0, "t") , (37906, 0, "_") , (37907, 0, "c") , (37908, 0, "o") , (37909, 0, "n") , (37910, 0, "t") , (37911, 0, "e") , (37912, 0, "n") , (37913, 0, "t") , (37914, 0, "_") , (37915, 0, "s") , (37916, 0, "l") , (37917, 0, "i") , (37918, 0, "c") , (37919, 0, "e") , (37921, 0, ";") , ( 17636 , 0 , " unsafe fn from_slice(slice: &[C::Item]) -> Self {\n unsafe {\n let ptr = slice.as_mut_ptr();\n let end = ptr.add(slice.len());\n\n UninitOwnedIter {\n ptr: NonNull::new_unchecked(ptr),\n end,\n _marker: PhantomData\n }\n }\n }\n" ) , (18286, 0, "// ") , (18276, 0, "// ") , (18262, 0, "// ") , (18225, 0, "// ") , (18204, 0, "// ") , (18154, 0, "// ") , (18124, 0, "// ") , (18079, 0, "// ") , (18037, 0, "// ") , (18020, 0, "// ") , (17966, 0, "// ") , (17655, 0, "m") , (17656, 0, "a") , (17657, 0, "y") , (17658, 0, "b") , (17659, 0, "e") , (17655, 5, "") , (17670, 0, "M") , (17671, 0, "a") , (17672, 0, "y") , (17673, 0, "b") , (17674, 0, "e") , (17675, 0, "I") , (17676, 0, "n") , (17677, 0, "i") , (17678, 0, "n") , (17679, 0, "t") , (17679, 1, "") , (17678, 1, "") , (17677, 1, "") , (17677, 0, "i") , (17678, 0, "t") , (17679, 0, "<") , (17680, 0, "<") , (17680, 1, "") , (17687, 0, ">") , (17675, 0, "U") , (17676, 0, "n") , (17677, 1, "") , (17677, 0, "i") , (17747, 0, "[") , (17748, 0, "0") , (17749, 0, "]") , (17749, 1, "") , (17748, 1, "") , (17747, 1, "") , (17747, 0, "[0]") , (17747, 3, "") , (17760, 0, " ") , (17761, 0, "a") , (17762, 0, "s") , (17763, 0, " ") , (17764, 0, "*") , (17765, 0, "m") , (17766, 0, "u") , (17767, 0, "t") , (17768, 0, " ") , (17769, 0, "C") , (17770, 0, ":") , (17771, 0, ":") , (17772, 0, "I") , (17773, 0, "t") , (17774, 0, "e") , (17775, 0, "m") , (17777, 0, " ") , (17778, 0, "/") , (17779, 0, "/") , (17780, 0, " ") , (17781, 0, "s") , (17781, 1, "") , (17781, 0, "S") , (17782, 0, "a") , (17783, 0, "f") , (17784, 0, "e") , (17785, 0, ".") , (17635, 0, "\n ") , (17640, 0, "/") , (17641, 0, "/") , (17642, 0, "/") , (17643, 0, " ") , (17643, 1, "") , (17642, 1, "") , (17642, 0, " ") , (17643, 0, "M") , (17644, 0, "a") , (17645, 0, "k") , (17646, 0, "e") , (17647, 0, " ") , (17648, 0, "a") , (17649, 0, " ") , (17650, 0, "l") , (17651, 0, "c") , (17652, 0, "i") , (17652, 1, "") , (17651, 1, "") , (17650, 1, "") , (17640, 0, "/") , (17651, 0, "s") , (17652, 0, "l") , (17653, 0, "i") , (17654, 0, "c") , (17655, 0, "e") , (17656, 0, " ") , (17657, 0, "w") , (17658, 0, "e") , (17659, 0, " ") , (17660, 0, "c") , (17661, 0, "a") , (17662, 0, "n") , (17663, 0, " ") , (17664, 0, "i") , (17665, 0, "t") , (17666, 0, "e") , (17667, 0, "r") , (17668, 0, "a") , (17669, 0, "t") , (17670, 0, "e") , (17671, 0, " ") , (17672, 0, "f") , (17673, 0, "r") , (17674, 0, "o") , (17675, 0, "m") , (17676, 0, " ") , (17677, 0, "a") , (17678, 0, "n") , (17679, 0, "d") , (17680, 0, " ") , (17681, 0, "s") , (17682, 0, "t") , (17683, 0, "e") , (17684, 0, "a") , (17685, 0, "l") , (17686, 0, " ") , (17687, 0, "f") , (17688, 0, "r") , (17689, 0, "o") , (17690, 0, "m") , (17691, 0, ".") , (17692, 0, " ") , (17693, 0, "A") , (17694, 0, "f") , (17695, 0, "t") , (17696, 0, "e") , (17697, 0, "r") , (17698, 0, " ") , (17699, 0, "t") , (17700, 0, "h") , (17701, 0, "e") , (17702, 0, " ") , (17703, 0, "i") , (17704, 0, "t") , (17705, 0, "e") , (17706, 0, "r") , (17707, 0, "a") , (17708, 0, "t") , (17709, 0, "o") , (17710, 0, "r") , (17711, 0, " ") , (17712, 0, "h") , (17713, 0, "a") , (17714, 0, "s") , (17715, 0, " ") , (17716, 0, "r") , (17717, 0, "u") , (17718, 0, "n") , (17719, 0, ",") , (17720, 0, " ") , (17721, 0, "t") , (17722, 0, "h") , (17723, 0, "e") , (17724, 0, " ") , (17725, 0, "i") , (17726, 0, "t") , (17727, 0, "e") , (17728, 0, "m") , (17729, 0, "s") , (17692, 0, " ") , (17693, 0, "T") , (17694, 0, "h") , (17695, 0, "i") , (17696, 0, "s") , (17697, 0, " ") , (17698, 0, "s") , (17699, 0, "i") , (17699, 1, "") , (17698, 1, "") , (17698, 0, "i") , (17699, 0, "s") , (17700, 0, " ") , (17701, 0, "a") , (17693, 9, "") , (17692, 1, "") , (17730, 0, " ") , (17731, 0, "i") , (17732, 0, "n") , (17733, 0, "s") , (17734, 0, "i") , (17735, 0, "d") , (17736, 0, "e") , (17737, 0, " ") , (17738, 0, "*") , (17739, 0, "m") , (17740, 0, "u") , (17741, 0, "s") , (17742, 0, "t") , (17743, 0, "*") , (17744, 0, " ") , (17745, 0, "b") , (17746, 0, "e") , (17747, 0, " ") , (17693, 55, "T") , (17694, 0, "h") , (17695, 0, "e") , (17696, 0, " ") , (17697, 0, "i") , (17698, 0, "t") , (17699, 0, "e") , (17700, 0, "r") , (17701, 0, "a") , (17702, 0, "t") , (17703, 0, "o") , (17704, 0, "r") , (17705, 0, " ") , (17693, 13, "I") , (17694, 0, "t") , (17695, 0, "s") , (17696, 0, " ") , (17697, 0, "u") , (17698, 0, "n") , (17699, 0, "s") , (17700, 0, "a") , (17701, 0, "f") , (17702, 0, "e") , (17703, 0, " ") , (17704, 0, "t") , (17704, 1, "") , (17704, 0, "i") , (17705, 0, "f") , (17706, 0, " ") , (17707, 0, "t") , (17708, 0, "h") , (17709, 0, "e") , (17710, 0, " ") , (17711, 0, "i") , (17712, 0, "t") , (17713, 0, "e") , (17714, 0, "r") , (17715, 0, "a") , (17716, 0, "t") , (17717, 0, "o") , (17718, 0, "r") , (17719, 0, " ") , (17720, 0, "i") , (17721, 0, "s") , (17722, 0, "n") , (17723, 0, "'") , (17724, 0, "t") , (17725, 0, " ") , (17726, 0, "d") , (17727, 0, "r") , (17728, 0, "a") , (17729, 0, "i") , (17730, 0, "n") , (17731, 0, "e") , (17732, 0, "d") , (17706, 1, "") , (17706, 0, "\n /// ") , (17706, 0, ":") , (17716, 0, "\n /// ") , (17725, 0, "-") , (17726, 0, " ") , (17727, 1, "") , (17727, 0, "T") , (17753, 0, "\n /// ") , (17762, 0, "-") , (17763, 0, " ") , (17746, 0, "f") , (17747, 0, "u") , (17748, 0, "l") , (17749, 0, "l") , (17750, 0, "y") , (17751, 0, " ") , (17759, 0, " ") , (17760, 0, "(") , (17761, 0, "t") , (17762, 0, "h") , (17763, 0, "e") , (17764, 0, "n") , (17765, 0, " ") , (17766, 0, "w") , (17767, 0, "e") , (17768, 0, " ") , (17769, 0, "m") , (17770, 0, "i") , (17771, 0, "g") , (17772, 0, "h") , (17773, 0, "t") , (17774, 0, " ") , (17775, 0, "n") , (17776, 0, "t") , (17777, 0, "o") , (17777, 1, "") , (17776, 1, "") , (17776, 0, "o") , (17777, 0, "t") , (17778, 0, " ") , (17779, 0, "d") , (17780, 0, "r") , (17781, 0, "o") , (17782, 0, "p") , (17783, 0, " ") , (17784, 0, "c") , (17785, 0, "o") , (17786, 0, "n") , (17787, 0, "t") , (17788, 0, "e") , (17789, 0, "n") , (17790, 0, "t") , (17791, 0, "s") , (17792, 0, ")") , (17804, 0, "T") , (17805, 0, "h") , (17806, 0, "e") , (17807, 0, " ") , (17808, 0, "c") , (17809, 0, "o") , (17810, 0, "n") , (17811, 0, "t") , (17812, 0, "e") , (17813, 0, "n") , (17814, 0, "t") , (17815, 0, "s") , (17816, 0, " ") , (17817, 0, "w") , (17818, 0, "e") , (17819, 0, " ") , (17820, 0, "i") , (17821, 0, "t") , (17822, 0, "e") , (17823, 0, "r") , (17824, 0, "a") , (17825, 0, "t") , (17826, 0, " ") , (17827, 0, "o") , (17827, 1, "") , (17827, 0, "e") , (17828, 0, " ") , (17828, 1, "") , (17827, 1, "") , (17827, 0, " ") , (17827, 1, "") , (17826, 1, "") , (17826, 0, "e") , (17827, 0, " ") , (17828, 0, "o") , (17829, 0, "v") , (17830, 0, "e") , (17831, 0, "r") , (17832, 0, " ") , (17833, 0, "a") , (17834, 0, "r") , (17835, 0, "e") , (17836, 0, "n") , (17837, 0, "'") , (17838, 0, "t") , (17839, 0, " ") , (17840, 0, "i") , (17841, 0, "n") , (17842, 0, "i") , (17843, 0, "t") , (17844, 0, "i") , (17845, 0, "a") , (17846, 0, "l") , (17847, 0, "i") , (17848, 0, "e") , (17848, 1, "") , (17848, 0, "z") , (17849, 0, "e") , (17850, 0, "d") , (17851, 0, ".") , (17851, 1, "") , (17851, 0, "\n /// ") , (17860, 0, "\n /// ") , (17869, 0, "A") , (17870, 0, "f") , (17871, 0, "t") , (17872, 0, "e") , (17873, 0, "r") , (17874, 0, " ") , (17875, 0, "i") , (17876, 0, "t") , (17877, 0, "e") , (17878, 0, "r") , (17879, 0, "a") , (17880, 0, "t") , (17881, 0, "i") , (17882, 0, "n") , (17883, 0, "g") , (17884, 0, ",") , (17885, 0, " ") , (17886, 0, "t") , (17887, 0, "h") , (17888, 0, "e") , (17889, 0, " ") , (17890, 0, "c") , (17891, 0, "o") , (17892, 0, "n") , (17893, 0, "t") , (17894, 0, "e") , (17895, 0, "n") , (17896, 0, "t") , (17897, 0, "s") , (17898, 0, " ") , (17899, 0, "a") , (17900, 0, "r") , (17901, 0, "e") , (17902, 0, " ") , (17902, 1, "") , (17902, 0, "n") , (17903, 0, "'") , (17904, 0, "t") , (17905, 0, " ") , (17906, 0, "m") , (17907, 0, "o") , (17908, 0, "d") , (17899, 10, "a") , (17900, 0, "r") , (17901, 0, "e") , (17902, 0, " ") , (17903, 0, "u") , (17904, 0, "n") , (17905, 0, "i") , (17906, 0, "n") , (17907, 0, "i") , (17908, 0, "t") , (17909, 0, " ") , (17910, 0, "m") , (17911, 0, "e") , (17912, 0, "m") , (17913, 0, "o") , (17914, 0, "r") , (17915, 0, "y") , (17916, 0, ".") , (44859, 0, " ") , (44859, 0, "m") , (44860, 0, "a") , (44861, 0, "y") , (44859, 3, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (44883, 24, "") , (44883, 1, "") , (44883, 1, "") , (44921, 0, ")") , (50020, 0, " ") , (50020, 0, "m") , (50021, 0, "a") , (50022, 0, "y") , (50023, 0, "b") , (50020, 4, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (50044, 24, "") , (50044, 1, "") , (50044, 1, "") , (50048, 0, ")") , (50332, 0, "m") , (50333, 0, "a") , (50334, 0, "y") , (50335, 0, "b") , (50336, 0, " ") , (50332, 4, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (50356, 24, "") , (50356, 1, "") , (50356, 1, "") , (50360, 0, ")") , (50217, 1, "") , (50221, 0, ".") , (50222, 0, "g") , (50223, 0, "e") , (50224, 0, "t") , (50225, 0, "_") , (50226, 0, "m") , (50227, 0, "u") , (50228, 0, "t") , (50229, 0, "(") , (50230, 0, ")") , (50217, 0, "*") , (50223, 7, "a") , (50224, 0, "s") , (50225, 0, "_") , (50226, 0, "m") , (50227, 0, "u") , (50228, 0, "t") , (50229, 0, "_") , (50230, 0, "p") , (50223, 8, "as_mut_ptr") , (50218, 0, "(") , (50218, 1, "") , (50262, 7, "r") , (50263, 0, "e") , (50264, 0, "p") , (50265, 0, "l") , (50266, 0, "a") , (50267, 0, "c") , (50268, 0, "e") , (50269, 0, "d") , (50247, 5, "") , (50247, 1, "") , (50247, 0, "D") , (50251, 1, "") , (51245, 4, "maybeinit_slice_get_ref(dest)") , (50340, 29, "") , (50340, 0, "maybeinit_slice_get_ref(dest)") , (51245, 29, "d") , (50340, 29, "d") , (51218, 0, "e") , (50341, 0, "e") , (51220, 0, "s") , (50342, 0, "s") , (51222, 0, "t") , (50343, 0, "t") , (51200, 0, "\n ") , (50288, 0, "\n ") , (51214, 12, "") , (50301, 0, "l") , (50302, 0, "e") , (50303, 0, "t") , (50304, 0, " ") , (50305, 0, "d") , (50306, 0, "e") , (50307, 0, "s") , (50308, 0, "t") , (50309, 0, " ") , (50310, 0, "=") , (50311, 0, " ") , (50312, 0, "maybeinit_slice_get_ref(dest)") , (50341, 0, ";") , (51254, 1, "") , (10891, 0, "u") , (10892, 0, "n") , (10893, 0, "s") , (10894, 0, "a") , (10895, 0, "f") , (10896, 0, "e") , (10897, 0, " ") , (10898, 0, "{") , (10899, 0, " ") , (10930, 0, " ") , (10931, 0, "}") , (18044, 4, "") , (17996, 16, "") , (17995, 1, "") , (18242, 12, " ") , (18205, 16, " ") , (18184, 16, " ") , (18134, 16, " ") , (18104, 12, " ") , (18059, 12, " ") , (17996, 12, " ") , (18228, 9, "") , (18227, 1, "") , (18825, 0, "u") , (18826, 0, "n") , (18827, 0, "s") , (18828, 0, "a") , (18829, 0, "f") , (18830, 0, "e") , (18831, 0, " ") , (18832, 0, "{") , (18833, 0, " ") , (18858, 0, " ") , (18859, 0, "}") , (50144, 0, "&") , (50144, 1, "") , (50249, 0, "// ") , (50176, 0, "// ") , (50104, 0, "// ") , (50091, 0, "\n ") , (50104, 0, "/") , (50105, 0, "/") , (50106, 0, " ") , (50107, 0, "W") , (50108, 0, "o") , (50109, 0, "u") , (50110, 0, "l") , (50111, 0, "d") , (50112, 0, " ") , (50113, 0, "p") , (50114, 0, "r") , (50115, 0, "e") , (50116, 0, "f") , (50117, 0, "e") , (50118, 0, "r") , (50119, 0, " ") , (50120, 0, "t") , (50121, 0, "o") , (50122, 0, " ") , (50123, 0, "u") , (50124, 0, "s") , (50125, 0, "e") , (50126, 0, " ") , (50127, 0, "z") , (50128, 0, "i") , (50129, 0, "p") , (50130, 0, "(") , (50131, 0, ")") , (50132, 0, " ") , (50133, 0, "b") , (50134, 0, "u") , (50135, 0, "t") , (50136, 0, " ") , (50137, 0, "i") , (50138, 0, "t") , (50139, 0, " ") , (50140, 0, "g") , (50141, 0, "i") , (50142, 0, "v") , (50143, 0, "e") , (50144, 0, "s") , (50140, 5, "t") , (50141, 0, "a") , (50142, 0, "k") , (50143, 0, "e") , (50144, 0, "s") , (50145, 0, " ") , (50146, 0, "o") , (50147, 0, "w") , (50148, 0, "n") , (50149, 0, "e") , (50150, 0, "r") , (50151, 0, "s") , (50152, 0, "h") , (50153, 0, "i") , (50154, 0, "p") , (50155, 0, " ") , (50156, 0, "o") , (50157, 0, "f") , (50158, 0, " ") , (50159, 0, "i") , (50160, 0, "n") , (50161, 0, "s") , (50162, 0, "e") , (50163, 0, "r") , (50164, 0, "t") , (50165, 0, "e") , (50166, 0, "d") , (50167, 0, "_") , (50168, 0, "c") , (50169, 0, "o") , (50170, 0, "n") , (50171, 0, "t") , (50172, 0, "e") , (50173, 0, "n") , (50174, 0, "t") , (50175, 0, " ") , (50176, 0, ":") , (50177, 0, "/") , (50178, 0, "\n ") , (50191, 0, "index..index + replaced_items_here") , (50139, 6, " ") , (50140, 0, "w") , (50141, 0, "a") , (50142, 0, "n") , (50143, 0, "t") , (50144, 0, "s") , (50191, 0, "f") , (50192, 0, "o") , (50193, 0, "r") , (50194, 0, " ") , (50195, 0, "i") , (50196, 0, " ") , (50197, 0, "i") , (50198, 0, "n") , (50199, 0, " ") , (50234, 0, " ") , (50235, 0, "{") , (50236, 0, "\n ") , (50253, 0, "\n ") , (50237, 16, "") , (50238, 16, " }") , (50237, 0, " ") , (50237, 16, "") , (50195, 39, "") , (50195, 0, "&") , (50196, 0, "m") , (50197, 0, "u") , (50198, 0, "t") , (50199, 0, " ") , (50200, 0, "s") , (50201, 0, "l") , (50202, 0, "o") , (50203, 0, "t") , (50204, 0, " ") , (50205, 0, "=") , (50206, 0, " ") , (50206, 1, "") , (50205, 1, "") , (50205, 0, "i") , (50206, 0, "n") , (50207, 0, " ") , (50208, 0, "d") , (50209, 0, "e") , (50210, 0, "s") , (50211, 0, "t") , (50215, 0, " ") , (50215, 16, "") , (50194, 10, "") , (50194, 0, " ") , (50195, 0, "s") , (50196, 0, "l") , (50197, 0, "o") , (50198, 0, "t") , (50210, 0, " ") , (50226, 0, "*slot.as_mut_ptr() = item;") , (50247, 5, "") , (50247, 0, "i") , (50248, 0, "n") , (50249, 0, "s") , (50250, 0, "e") , (50251, 0, "r") , (50252, 0, "t") , (50247, 6, "inserted_content") , (50263, 0, ".") , (50264, 0, "n") , (50265, 0, "e") , (50266, 0, "x") , (50264, 3, "next()") , (50270, 0, "(") , (50270, 1, "") , (50270, 0, ".") , (50271, 0, "u") , (50272, 0, "n") , (50273, 0, "w") , (50274, 0, "r") , (50275, 0, "a") , (50276, 0, "p") , (50277, 0, "(") , (50278, 0, ")") , (50279, 0, "/") , (50280, 0, ";") , (50280, 1, "") , (50279, 1, "") , (50279, 0, ";") , (50293, 0, "// ") , (50222, 0, "// ") , (50191, 0, "// ") , (50299, 3, "") , (50225, 3, "") , (50191, 3, "") , (50207, 0, ".") , (50208, 0, "i") , (50209, 0, "t") , (50210, 0, "e") , (50211, 0, "r") , (50212, 0, "(") , (50213, 0, ")") , (50212, 0, "_") , (50213, 0, "m") , (50214, 0, "u") , (50215, 0, "t") , (38227, 3, "") , (38227, 1, "") , (38227, 0, "mut ") , (38200, 4, "") , (19648, 9, "") , (19699, 1, "") , (19698, 1, "") , (19698, 0, " }") , (19698, 2, "") , (48839, 3, "") , (48839, 1, "") , ( 783 , 55945 , "use std::alloc::{alloc, dealloc, Layout};\nuse std::cmp::min;\nuse std::marker::PhantomData;\n\nuse std::fmt;\n\nuse rand::{RngCore, Rng, SeedableRng};\nuse rand::rngs::SmallRng;\n\n/// The likelyhood a node will have height (n+1) instead of n\nconst BIAS: u8 = 100; // out of 256.\n\n/// The number of items in each node. Must fit in a u8 thanks to Node.\n#[cfg(debug_assertions)]\nconst NODE_NUM_ITEMS: usize = 10;\n\n#[cfg(not(debug_assertions))]\nconst NODE_NUM_ITEMS: usize = 100;\n\n/// Rope operations will move to linear time after NODE_STR_SIZE * 2 ^\n/// MAX_HEIGHT length. (With a smaller constant the higher this is). On the flip\n/// side, cursors grow linearly with this number; so smaller is marginally\n/// better when the contents are smaller.\n#[cfg(debug_assertions)]\nconst MAX_HEIGHT: usize = 5;\n\n#[cfg(not(debug_assertions))]\nconst MAX_HEIGHT: usize = 10;\n\n\nconst MAX_HEIGHT_U8: u8 = MAX_HEIGHT as u8; // convenience.\n\npub struct ItemMarker<'a, C: ListConfig> {\n ptr: *mut Node,\n _phantom: PhantomData<&'a SkipList>\n}\n\n/// The whole list is configured through a single generic trait parameter\npub trait ListConfig {\n type Item: Default + Copy; //+ std::fmt::Debug;\n\n /// Applications which have custom sizes (or do their own\n /// run-length-encoding) can define their own size function for items. When\n /// items are inserted or replaced, the position is specified using the\n /// custom size defined here.\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n\n fn userlen_of_slice(items: &[Self::Item]) -> usize {\n items.iter().fold(0, |acc, item| {\n acc + Self::get_usersize(item)\n })\n }\n\n fn split_item(_item: &Self::Item, _at: usize) -> (Self::Item, Self::Item) {\n unimplemented!(\"Cannot insert in the middle of an item - split_item is not defined in trait\");\n }\n\n // fn notify(&mut self, _items: &[Self::Item], _at_marker: ItemMarker) where Self: Sized {\n // }\n \n}\n\npub trait Queryable {\n type Query;\n\n // Returns Some(offset) into the item if its contained. Otherwise None.\n fn contains_item(&self, query: &Self::Query) -> Option;\n}\n\n/// This represents a single entry in either the nexts pointers list or in an\n/// iterator.\n#[derive(Debug, PartialEq, Eq)]\nstruct SkipEntry {\n /// The node being pointed to.\n node: *mut Node,\n\n /// The number of *items* between the start of the current node and the\n /// start of the next node. That means nexts entry 0 contains the length of\n /// the current node.\n skip_usersize: usize,\n}\n\n// We can't use #[derive()] here for Copy and Clone due to a bug in the rust\n// compiler: https://github.com/rust-lang/rust/issues/26925\nimpl Copy for SkipEntry {}\nimpl Clone for SkipEntry {\n fn clone(&self) -> Self { *self }\n}\n\nimpl SkipEntry {\n fn new_null() -> Self {\n SkipEntry { node: ptr::null_mut(), skip_usersize: 0 }\n }\n}\n\n\n\n/// The node structure is designed in a very fancy way which would be more at\n/// home in C or something like that. The basic idea is that the node structure\n/// is fixed size in memory, but the proportion of that space taken up by\n/// characters and by the height differ depending on a node's height. This\n/// results in a lot of `unsafe` blocks. I think the tradeoff is worth it but I\n/// could be wrong here. You probably wouldn't lose much performance in practice\n/// by replacing the inline structure with a smallvec - but that would waste\n/// memory in small nodes, and require extra pointer indirection on large nodes.\n/// It also wouldn't remove all the unsafe here.\n///\n/// A different representation (which might be better or worse - I can't tell)\n/// would be to have the nodes all be the same size in memory and change the\n/// *proportion* of the node's memory that is used by the string field vs the\n/// next pointers. That might be lighter weight for the allocator because the\n/// struct itself would be a fixed size; but I'm not sure if it would be better.\n#[repr(C)] // Prevent parameter reordering.\nstruct Node {\n /// We start with the items themselves. Only the first `num_items` of this\n /// list is in use. The user specified length of the items in the node is\n /// stored in nexts[0].skip_items. This is initialized with\n /// Default::default() for the type, but when MaybeUninit completely lands,\n /// it will be possible to make this a tiny bit faster by leaving the list\n /// initially uninitialized.\n items: [C::Item; NODE_NUM_ITEMS],\n\n /// Number of items in `items` in use / filled.\n num_items: u8,\n\n /// Height of nexts array.\n height: u8,\n\n /// With the heads array as is, we have no way to go from a marker back to a\n /// cursor (which is required to insert at that location in the list). For\n /// that we need to be able to figure out at each level of the nexts\n /// pointers which object points to us, and the offset from that element to\n /// the current element. Anyway, for markers to work we need this.\n parent: *mut Node,\n\n // #[repr(align(std::align_of::()))]\n \n /// In reality this array has the size of height, allocated using more or\n /// less direct calls to malloc() at runtime based on the randomly generated\n /// size. The size is always at least 1.\n nexts: [SkipEntry; 0],\n}\n\n// Make sure nexts uses correct alignment. This should be guaranteed by repr(C)\n// This test will fail if this ever stops being true.\n#[test]\nfn test_align() {\n struct TestConfig;\n impl ListConfig for TestConfig {\n type Item = u8;\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n }\n #[repr(C)] struct Check([SkipEntry; 0]);\n assert!(mem::align_of::() >= mem::align_of::>());\n // TODO: It'd be good to also check the alignment of the nexts field in Node.\n}\n\nfn random_height(rng: &mut R) -> u8 {\n let mut h: u8 = 1;\n // Should I use a csrng here? Does it matter?\n while h < MAX_HEIGHT_U8 && rng.gen::() < BIAS { h+=1; }\n h\n}\n\n#[repr(C)]\npub struct SkipList {\n // TODO: Consider putting the head item on the heap. For the use case here\n // its almost certainly fine either way. The code feels a bit cleaner if its\n // on the heap (and then iterators will be able to outlast a move of the\n // skiplist parent). But its also very nice having the code run fast for\n // small lists. Most lists are small, and it makes sense to optimize for\n // that.\n\n // TODO: For safety, pointers in to this structure should be Pin<> if we\n // ever want to hold on to iterators.\n\n /// The total number of items in the skip list. This is not used internally -\n /// just here for bookkeeping.\n num_items: usize,\n /// Size of the list in user specified units.\n num_usercount: usize,\n\n /// The RNG we use to generate node heights. Specifying it explicitly allows\n /// unit tests and randomizer runs to be predictable, which is very helpful\n /// during debugging. I'm still not sure how the type of this should be\n /// specified. Should it be a generic parameter? Box?\n /// ??\n rng: Option,\n\n /// The first node is inline. The height is 1 more than the max height we've\n /// ever used. The highest next entry points to {null, total usersize}.\n head: Node,\n\n /// This is so dirty. The first node is embedded in SkipList; but we need to\n /// allocate enough room for height to get arbitrarily large. I could insist\n /// on SkipList always getting allocated on the heap, but for small lists its\n /// much better to be on the stack.\n ///\n /// So this struct is repr(C) and I'm just padding out the struct directly.\n /// All accesses should go through head because otherwise I think we violate\n /// aliasing rules.\n _nexts_padding: [SkipEntry; MAX_HEIGHT],\n}\n\n\n\nimpl Node {\n // Do I need to be explicit about the lifetime of the references being tied\n // to the lifetime of the node?\n fn nexts(&self) -> &[SkipEntry] {\n unsafe {\n std::slice::from_raw_parts(self.nexts.as_ptr(), self.height as usize)\n }\n }\n\n fn nexts_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.nexts.as_mut_ptr(), self.height as usize)\n }\n }\n\n fn layout_with_height(height: u8) -> Layout {\n Layout::from_size_align(\n mem::size_of::>() + mem::size_of::>() * (height as usize),\n mem::align_of::>()).unwrap()\n }\n\n fn alloc_with_height(height: u8) -> *mut Node {\n assert!(height >= 1 && height <= MAX_HEIGHT_U8);\n\n unsafe {\n let node = alloc(Self::layout_with_height(height)) as *mut Node;\n (*node) = Node {\n items: [C::Item::default(); NODE_NUM_ITEMS],\n num_items: 0,\n height: height,\n parent: ptr::null_mut(),\n nexts: [],\n };\n\n for next in (*node).nexts_mut() {\n *next = SkipEntry::new_null();\n }\n\n node\n }\n }\n\n fn alloc(rng: &mut R) -> *mut Node {\n Self::alloc_with_height(random_height(rng))\n }\n\n unsafe fn free(p: *mut Node) {\n dealloc(p as *mut u8, Self::layout_with_height((*p).height));\n }\n\n fn content_slice(&self) -> &[C::Item] {\n &self.items[..self.num_items as usize]\n }\n\n // The height is at least 1, so this is always valid.\n fn first_skip_entry<'a>(&self) -> &'a SkipEntry {\n unsafe { &*self.nexts.as_ptr() }\n }\n\n fn first_skip_entry_mut<'a>(&mut self) -> &'a mut SkipEntry {\n unsafe { &mut *self.nexts.as_mut_ptr() }\n }\n\n // TODO: Rename to len() ?\n fn get_userlen(&self) -> usize {\n self.first_skip_entry().skip_usersize\n }\n \n fn get_next_ptr(&self) -> *mut Node {\n self.first_skip_entry().node\n }\n}\n\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone)]\npub struct Cursor {\n // TODO: Add a phantom lifetime reference to the skip list root for safety.\n\n\n /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///\n /// This field isn't strictly necessary - earlier versions tacked this on to\n /// the last item in entries... I'm still not sure the cleanest way to do\n /// this.\n userpos: usize,\n\n /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used to resolve that ambiguity.\n local_index: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n}\n\nimpl Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n self.local_index = 0;\n\n next\n }\n }\n\n fn is_at_node_end(&self) -> bool {\n self.local_index == unsafe { (*self.here_ptr()).num_items } as usize\n }\n\n fn advance_item(&mut self, height: u8) {\n if self.is_at_node_end() { self.advance_node(); }\n let usersize = C::get_usersize(unsafe { self.current_item() });\n\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }\n self.userpos += usersize;\n self.local_index += 1;\n }\n\n fn advance_by_items(&mut self, num: usize, height: u8) {\n for _ in 0..num { self.advance_item(height); }\n }\n\n fn move_to_item_start(&mut self, height: u8, offset: usize) {\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize -= offset;\n }\n self.userpos -= offset;\n }\n\n unsafe fn current_item(&mut self) -> &C::Item {\n &(*self.here_ptr()).items[self.local_index]\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice.\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos\n || self.local_index != other.local_index {return false; }\n\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl fmt::Debug for Cursor {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"Cursor\")\n .field(\"userpos\", &self.userpos)\n .field(\"local_index\", &self.local_index)\n .finish()\n }\n}\n\nimpl SkipList {\n pub fn new() -> Self {\n SkipList:: {\n num_items: 0,\n num_usercount: 0,\n rng: None,\n head: Node {\n items: [C::Item::default(); NODE_NUM_ITEMS],\n num_items: 0,\n height: 1, // Stores max height of list nodes\n parent: ptr::null_mut(),\n nexts: [],\n },\n _nexts_padding: [SkipEntry::new_null(); MAX_HEIGHT],\n }\n }\n\n pub fn init_rng_from_seed(&mut self, seed: u64) {\n self.rng = Some(SmallRng::seed_from_u64(seed));\n }\n\n fn get_rng(&mut self) -> &mut SmallRng {\n // I'm sure there's a nicer way to implement this.\n if self.rng.is_none() {\n // We'll use a stable RNG in debug mode so the tests are stable.\n if cfg!(debug_assertions) {\n self.init_rng_from_seed(123);\n } else {\n self.rng = Some(SmallRng::from_entropy());\n }\n }\n self.rng.as_mut().unwrap()\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, s);\n rope\n }\n\n pub fn get_userlen(&self) -> usize {\n self.num_usercount\n }\n\n fn iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn len_items(&self) -> usize {\n self.num_items as usize\n }\n\n fn heads_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.head.nexts.as_mut_ptr(), self._nexts_padding.len())\n }\n }\n\n fn is_head(&self, node: *const Node) -> bool {\n node as *const _ == &self.head as *const _\n }\n\n /// Walk the list and validate internal constraints. This is used for\n /// testing the structure itself, and should generally not be called by\n /// users.\n pub fn check(&self) {\n // #[cfg(test)]\n {\n // self.print();\n assert!(self.head.height >= 1);\n assert!(self.head.height <= MAX_HEIGHT_U8);\n\n let head_ptr = &self.head as *const _ as *mut _;\n // let skip_over = self.get_top_entry();\n // println!(\"Skip over skip chars {}, num bytes {}\", skip_over.skip_items, self.num_bytes);\n\n let mut prev: [*const Node; MAX_HEIGHT] = [ptr::null(); MAX_HEIGHT];\n\n let mut iter = [SkipEntry {\n // Bleh.\n node: head_ptr,\n // The skips will store the total distance travelled since the\n // start of this traversal at each height. All the entries above\n // head.height are ignored though.\n skip_usersize: 0\n }; MAX_HEIGHT];\n\n let mut num_items = 0;\n let mut num_usercount = 0;\n\n for (_i, n) in self.iter().enumerate() {\n // println!(\"visiting {:?}\", n.as_str());\n if !self.is_head(n) { assert!(n.num_items > 0); }\n assert!(n.height <= MAX_HEIGHT_U8);\n assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n\n // Make sure the number of items matches the count\n let local_count = C::userlen_of_slice(&n.items[0..n.num_items as usize]);\n assert_eq!(local_count, n.get_userlen());\n\n let expect_parent = if self.is_head(n) {\n ptr::null() // The head's parent is null\n } else if n.height == self.head.height {\n &self.head as *const _ // Max height nodes point back to head\n } else {\n prev[n.height as usize]\n };\n\n // println!(\"visiting {} {:?}\", i, n as *const _);\n // dbg!(n as *const _);\n // dbg!((n as *const _, (*n).height));\n // dbg!(n.parent);\n // dbg!(&self.head as *const _);\n\n assert_eq!(n.parent as *const _, expect_parent, \"invalid parent\");\n \n for (i, entry) in iter[0..n.height as usize].iter_mut().enumerate() {\n assert_eq!(entry.node as *const _, n as *const _);\n assert_eq!(entry.skip_usersize, num_usercount);\n\n // println!(\"replacing entry {:?} with {:?}\", entry, n.nexts()[i].node);\n prev[i] = n;\n entry.node = n.nexts()[i].node;\n entry.skip_usersize += n.nexts()[i].skip_usersize;\n }\n\n num_items += n.num_items as usize;\n num_usercount += n.get_userlen();\n\n // Check the value returned by the iterator functions matches.\n let (mut normal_iter, local_offset) = self.iter_at_userpos(num_usercount);\n assert_eq!(local_offset, 0);\n\n // Dirty hack. If n has 0-sized elements at the end, the normal\n // cursor won't be at the end...\n while normal_iter.here_ptr() != n as *const _ as *mut _ {\n normal_iter.advance_node();\n }\n normal_iter.local_index = n.num_items as usize;\n let node_iter = unsafe { self.iter_at_node(n, n.get_userlen(), n.num_items as usize) };\n assert_eq!(normal_iter, node_iter);\n }\n\n for entry in iter[0..self.head.height as usize].iter() {\n // println!(\"{:?}\", entry);\n assert!(entry.node.is_null());\n assert_eq!(entry.skip_usersize, num_usercount);\n }\n \n // println!(\"self bytes: {}, count bytes {}\", self.num_bytes, num_bytes);\n assert_eq!(self.num_items, num_items);\n assert_eq!(self.get_userlen(), num_usercount);\n }\n }\n \n \n /// Internal function for creating a cursor at a particular location in the\n /// skiplist. The returned cursor contains list of nodes which point past\n /// the specified position, as well as offsets of how far into their\n /// character lists the specified characters are.\n ///\n /// Sometimes a call to iter_at_userpos is ambiguous:\n ///\n /// - The item can contain items with zero usersize. The cursor could point\n /// to any of them.\n /// - If the location is at the end of a node, it is equally valid to return\n /// a position at the start of the next node.\n ///\n /// Because its impossible to move backwards in the list, iter_at_userpos\n /// returns the first admissible location with the specified userpos.\n /// \n /// Returns (cursor, offset into the specified item).\n ///\n /// TODO: This should be Pin<&self>.\n fn iter_at_userpos(&self, target_userpos: usize) -> (Cursor, usize) {\n assert!(target_userpos <= self.get_userlen());\n\n let mut e: *const Node = &self.head;\n let mut height = self.head.height as usize - 1;\n \n let mut offset = target_userpos; // How many more items to skip\n\n // We're populating the head node pointer to simplify the case when the\n // iterator grows. We could put offset into the skip_usersize but it\n // would only be *mostly* correct, not always correct. (Since cursor\n // entries above height are not updated by insert.)\n let mut cursor = Cursor {\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n local_index: 0,\n userpos: target_userpos,\n };\n\n loop { // while height >= 0\n let en = unsafe { &*e };\n let next = en.nexts()[height];\n let skip = next.skip_usersize;\n if offset > skip {\n // Go right.\n debug_assert!(e == &self.head || en.num_items > 0);\n offset -= skip;\n e = next.node;\n assert!(!e.is_null(), \"Internal constraint violation: Reached rope end prematurely\");\n } else {\n // Record this and go down.\n cursor.entries[height] = SkipEntry {\n skip_usersize: offset,\n node: e as *mut Node, // This is pretty gross\n };\n\n if height == 0 { break; } else { height -= 1; }\n }\n };\n\n // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n\n // We've found the node. Now look for the index within the node.\n let en = unsafe { &*e };\n let mut index = 0;\n\n while offset > 0 {\n assert!(index < en.num_items as usize);\n \n let usersize = C::get_usersize(&en.items[index]);\n if usersize > offset { break; } // We're in the middle of an item.\n offset -= usersize;\n index += 1;\n }\n cursor.local_index = index;\n\n (cursor, offset)\n }\n\n unsafe fn iter_at_node(&self, n: *const Node, mut offset: usize, local_index: usize) -> Cursor {\n let mut n = n as *mut Node; // We don't mutate, but we need a mut ptr.\n\n let mut cursor = Cursor {\n userpos: 0, // We'll set this later.\n local_index: local_index,\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };\n\n let mut h = 0;\n loop {\n while h < (*n).height as usize {\n cursor.entries[h] = SkipEntry {\n node: n,\n skip_usersize: offset\n };\n\n h += 1;\n }\n\n let parent = (*n).parent;\n // Reached the head.\n if parent.is_null() { break; }\n\n // If we're the same height as the parent its fine.\n debug_assert!((*parent).height as usize > h\n || (self.is_head(parent) && (*parent).height as usize == h));\n\n // Walk from parent back to n, figuring out the offset.\n let mut c = parent;\n // let walk_height = (*parent).height as usize - 2;\n let walk_height = (*n).height as usize - 1;\n while c != n {\n let elem = (*c).nexts()[walk_height];\n offset += elem.skip_usersize;\n c = elem.node;\n }\n\n n = parent;\n }\n\n cursor.userpos = offset;\n cursor\n }\n\n pub fn iter_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n // The marker gives us a pointer into a node. Find the item.\n unsafe {\n let n = marker.ptr;\n\n let mut offset: usize = 0;\n let mut local_index = None;\n for (i, item) in (*n).content_slice().iter().enumerate() {\n if let Some(item_offset) = item.contains_item(query) {\n offset += item_offset;\n local_index = Some(i);\n break;\n } else {\n offset += C::get_usersize(item);\n }\n }\n\n let local_index = local_index.expect(\"Invalid marker - item not found in node\");\n self.iter_at_node(n, offset, local_index)\n }\n }\n\n // Internal fn to create a new node at the specified iterator filled with\n // the specified content. The passed cursor should point at the end of the\n // previous node. It will be updated to point to the end of the newly\n // inserted content.\n // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {\n\n // println!(\"Insert_node_at {} len {}\", contents.len(), self.num_bytes);\n debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n assert!(contents.len() <= NODE_NUM_ITEMS);\n\n let new_node_ptr = Node::alloc(self.get_rng());\n let new_node = &mut *new_node_ptr;\n new_node.num_items = contents.len() as u8;\n new_node.items[..contents.len()].copy_from_slice(contents);\n\n let new_height = new_node.height;\n let new_height_usize = new_height as usize;\n\n let mut head_height = self.head.height as usize;\n while head_height < new_height_usize {\n // This seems weird given we're about to overwrite these values\n // below. What we're doing is retroactively setting up the cursor\n // and head pointers *as if* the height had been this high all\n // along. This way we only have to populate the higher head values\n // lazily.\n let total_userlen = self.num_usercount;\n let nexts = self.heads_mut();\n nexts[head_height].skip_usersize = total_userlen;\n cursor.entries[head_height].skip_usersize = cursor.userpos;\n\n head_height += 1; // This is ugly.\n self.head.height += 1;\n }\n\n new_node.parent = if new_height_usize == MAX_HEIGHT {\n &self.head as *const _ as *mut _\n } else { cursor.entries[new_height_usize].node };\n\n for i in 0..new_height_usize {\n let prev_skip = &mut (*cursor.entries[i].node).nexts_mut()[i];\n let new_nexts = new_node.nexts_mut();\n\n // The new node points to the successor (or null)\n new_nexts[i] = SkipEntry {\n node: prev_skip.node,\n skip_usersize: new_userlen + prev_skip.skip_usersize - cursor.entries[i].skip_usersize\n };\n\n // The previous node points to the new node\n *prev_skip = SkipEntry {\n node: new_node_ptr,\n skip_usersize: cursor.entries[i].skip_usersize\n };\n\n // Move the iterator to the end of the newly inserted node.\n if move_cursor {\n cursor.entries[i] = SkipEntry {\n node: new_node_ptr,\n skip_usersize: new_userlen\n };\n }\n }\n\n for i in new_height_usize..head_height {\n (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n if move_cursor {\n cursor.entries[i].skip_usersize += new_userlen;\n }\n }\n\n // Update parents.\n if new_height_usize > 1 {\n\n let mut n = new_node_ptr;\n let mut skip_height = 0;\n\n loop {\n n = (*n).nexts_mut()[skip_height].node;\n if n.is_null() || (*n).height >= new_height { break; }\n \n (*n).parent = new_node_ptr;\n skip_height = usize::max(skip_height, (*n).height as usize - 1);\n }\n }\n \n self.num_items += contents.len();\n self.num_usercount += new_userlen;\n if move_cursor {\n cursor.userpos += new_userlen;\n cursor.local_index = contents.len();\n }\n\n notify(contents, ItemMarker {\n ptr: new_node_ptr,\n _phantom: PhantomData\n });\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item], notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {\n // iter specifies where to insert.\n\n let mut e = cursor.here_ptr();\n\n // The insertion offset into the destination node.\n assert!(cursor.userpos <= self.num_usercount);\n assert!(cursor.local_index <= (*e).num_items as usize);\n\n // We might be able to insert the new data into the current node, depending on\n // how big it is.\n let num_inserted_items = contents.len();\n let num_inserted_usercount = C::userlen_of_slice(contents);\n\n // Can we insert into the current node?\n let mut insert_here = (*e).num_items as usize + num_inserted_items <= NODE_NUM_ITEMS;\n\n // Can we insert into the start of the successor node?\n if !insert_here && cursor.local_index == (*e).num_items as usize && num_inserted_items <= NODE_NUM_ITEMS {\n // We can insert into the subsequent node if:\n // - We can't insert into the current node\n // - There _is_ a next node to insert into\n // - The insert would be at the start of the next node\n // - There's room in the next node\n if let Some(next) = (*e).first_skip_entry_mut().node.as_mut() {\n if next.num_items as usize + num_inserted_items <= NODE_NUM_ITEMS {\n cursor.advance_node();\n e = next;\n\n insert_here = true;\n }\n }\n }\n\n let item_idx = cursor.local_index;\n let e_num_items = (*e).num_items as usize; // convenience.\n\n if insert_here {\n // println!(\"insert_here {}\", contents);\n // First push the current items later in the array\n let c = &mut (*e).items;\n if item_idx < e_num_items {\n c[..].copy_within(item_idx..e_num_items,\n item_idx + num_inserted_items);\n }\n\n // Then copy in the new items\n c[item_idx..item_idx + num_inserted_items].copy_from_slice(contents);\n\n (*e).num_items += num_inserted_items as u8;\n self.num_items += num_inserted_items;\n self.num_usercount += num_inserted_usercount;\n\n // .... aaaand update all the offset amounts.\n cursor.update_offsets(self.head.height as usize, num_inserted_usercount as isize);\n\n // Usually the cursor will be discarded after one change, but for\n // consistency of compound edits we'll update the cursor to point to\n // the end of the new content.\n for entry in cursor.entries[0..self.head.height as usize].iter_mut() {\n entry.skip_usersize += num_inserted_usercount;\n }\n cursor.userpos += num_inserted_usercount;\n cursor.local_index += num_inserted_items;\n\n notify(contents, ItemMarker {\n ptr: e,\n _phantom: PhantomData\n });\n } else {\n // There isn't room. We'll need to add at least one new node to the\n // list. We could be a bit more careful here and copy as much as\n // possible into the current node - that would decrease the number\n // of new nodes in some cases, but I don't think the performance\n // difference will be large enough to justify the complexity.\n\n // If we're not at the end of the current node, we'll need to remove\n // the end of the current node's data and reinsert it later.\n let num_end_items = e_num_items - item_idx;\n\n let (end_items, end_usercount) = if num_end_items > 0 {\n // We'll mark the items as deleted from the node, while leaving\n // the data itself there for now to avoid a copy.\n\n // Note that if we wanted to, it would also be correct (and\n // slightly more space efficient) to pack some of the new\n // string's characters into this node after trimming it.\n let end_items = &(*e).items[item_idx..e_num_items];\n (*e).num_items = item_idx as u8;\n let end_usercount = (*e).get_userlen() - cursor.entries[0].skip_usersize;\n\n cursor.update_offsets(self.head.height as usize, -(end_usercount as isize));\n\n // We need to trim the size off because we'll add the characters\n // back with insert_node_at.\n self.num_usercount -= end_usercount;\n self.num_items -= num_end_items;\n\n (Some(end_items), end_usercount)\n } else {\n (None, 0)\n };\n\n // Now we insert new nodes containing the new character data. The\n // data is broken into pieces with a maximum size of NODE_NUM_ITEMS.\n // As further optimization, we could try and fit the last piece into\n // the start of the subsequent node. That optimization hasn't been\n // added.\n \n for chunk in contents.chunks(NODE_NUM_ITEMS) {\n let userlen = C::userlen_of_slice(chunk);\n self.insert_node_at(cursor, chunk, userlen, true, notify);\n }\n\n // TODO: Consider recursively calling insert_at_iter() here instead\n // of making a whole new node for the remaining content.\n if let Some(end_items) = end_items {\n // Passing false to indicate we don't want the cursor updated\n // after this - it should remain at the end of the newly\n // inserted content, which is *before* this end bit.\n self.insert_node_at(cursor, end_items, end_usercount, false, notify);\n }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n // self.insert_at_iter_and_notify(cursor, contents, Self::no_notify);\n // }\n\n /// Interestingly unlike the original, here we only care about specifying\n /// the number of removed items by counting them. We do not use usersize in\n /// the deleted item count.\n ///\n /// If the deleted content occurs at the start of a node, the cursor passed\n /// here must point to the end of the previous node, not the start of the\n /// current node.\n unsafe fn del_at_iter(&mut self, cursor: &mut Cursor, mut num_deleted_items: usize) {\n if num_deleted_items == 0 { return; }\n\n let mut item_idx = cursor.local_index;\n let mut e = cursor.here_ptr();\n while num_deleted_items > 0 {\n // self.print();\n // if cfg!(debug_assertions) { self.check(); }\n if item_idx == (*e).num_items as usize {\n let entry = (*e).first_skip_entry();\n // End of current node. Skip to the start of the next one. We're\n // intentionally not updating the iterator because if we delete\n // a whole node we need the iterator to point to the previous\n // element. And if we only delete here, the iterator doesn't\n // need to be moved.\n e = entry.node;\n if e.is_null() { panic!(\"Cannot delete past the end of the list\"); }\n item_idx = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let removed_here = min(num_deleted_items, e_num_items - item_idx);\n \n let height = (*e).height as usize;\n let removed_userlen;\n\n if removed_here < e_num_items || e as *const _ == &self.head as *const _ {\n // Just trim the node down.\n let trailing_items = e_num_items - item_idx - removed_here;\n \n let c = &mut (*e).items;\n removed_userlen = C::userlen_of_slice(&c[item_idx..item_idx + removed_here]);\n if trailing_items > 0 {\n c[..].copy_within(item_idx + removed_here..e_num_items, item_idx);\n }\n\n (*e).num_items -= removed_here as u8;\n self.num_items -= removed_here;\n self.num_usercount -= removed_userlen;\n\n for s in (*e).nexts_mut() {\n s.skip_usersize -= removed_userlen;\n }\n } else {\n // Remove the node from the skip list entirely. e should be the\n // next node after the position of the iterator.\n assert_ne!(cursor.here_ptr(), e);\n\n removed_userlen = (*e).get_userlen();\n let next = (*e).first_skip_entry().node;\n\n // println!(\"removing {:?} contents {:?} height {}\", e, (*e).content_slice(), height);\n\n for i in 0..height {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.node = (*e).nexts_mut()[i].node;\n s.skip_usersize += (*e).nexts()[i].skip_usersize - removed_userlen;\n }\n\n self.num_items -= (*e).num_items as usize;\n self.num_usercount -= removed_userlen;\n\n // Update parents.\n if height > 1 {\n let mut n = e;\n // let new_parent = cursor.entries[height - 1].node;\n\n // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents.\n let mut parent_height = 1;\n let cursor_node = cursor.here_ptr();\n let cursor_node_height = (*cursor_node).height as usize;\n let mut new_parent = if height >= cursor_node_height {\n cursor.entries[parent_height].node\n } else {\n cursor_node\n };\n\n loop {\n // dbg!(skip_height);\n // dbg!((*n).height as usize);\n\n n = (*n).nexts_mut()[parent_height - 1].node;\n if n.is_null() || (*n).height >= height as u8 { break; }\n let n_height = (*n).height as usize;\n\n // dbg!((*n).content_slice());\n // dbg!((*n).height);\n \n assert_eq!((*n).parent, e);\n assert!(n_height >= parent_height - 1);\n\n if n_height > parent_height {\n parent_height = n_height;\n if n_height >= cursor_node_height {\n new_parent = cursor.entries[parent_height].node\n }\n }\n \n (*n).parent = new_parent;\n }\n }\n\n Node::free(e);\n e = next;\n }\n\n for i in height..self.head.height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.skip_usersize -= removed_userlen;\n }\n\n num_deleted_items -= removed_here;\n\n // if cfg!(debug_assertions) { self.check(); }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)\n // where Notify: FnMut(&[C::Item], ItemMarker) {\n\n unsafe fn replace_at_iter(&mut self, cursor: &mut Cursor, mut removed_items: usize, mut inserted_content: &[C::Item], mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {\n if removed_items == 0 && inserted_content.len() == 0 { return; }\n\n // Replace as many items from removed_items as we can with inserted_content.\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n let mut e = cursor.here_ptr();\n if cursor.local_index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n }\n\n let index = cursor.local_index;\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let old_items = &mut (*e).items[index..index + replaced_items_here];\n let new_items = &inserted_content[0..replaced_items_here];\n\n let new_usersize = C::userlen_of_slice(new_items);\n let usersize_delta = new_usersize as isize - C::userlen_of_slice(old_items) as isize;\n\n // Replace the items themselves. Everything else is commentary.\n old_items.copy_from_slice(new_items);\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n\n inserted_content = &inserted_content[replaced_items_here..];\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n cursor.local_index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n\n notify(new_items, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(cursor, inserted_content, &mut notify);\n } else if removed_items > 0 {\n self.del_at_iter(cursor, removed_items);\n }\n }\n\n fn dbg_check_cursor_at(&self, cursor: &Cursor, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n // let (mut c2, _) = self.iter_at_userpos(userpos);\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n }\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}\n\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.replace_at_iter(&mut cursor, removed_items, inserted_content, Self::no_notify); }\n\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(start_userpos);\n c2.advance_by_items(inserted_content.len(), self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after replace\"); }\n }\n }\n\n pub fn insert_at(&mut self, mut userpos: usize, contents: &[C::Item]) {\n if contents.len() == 0 { return; }\n \n userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n unsafe {\n if offset == 0 {\n self.insert_at_iter(&mut cursor, contents, &mut Self::no_notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n } else {\n let current_item = cursor.current_item();\n let (start, end) = C::split_item(current_item, offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n cursor.move_to_item_start(self.head.height, offset);\n // This feels pretty inefficient; but its probably fine.\n self.replace_at_iter(&mut cursor, 1, &[start], &mut Self::no_notify);\n self.insert_at_iter(&mut cursor, contents, &mut Self::no_notify);\n\n // There's no clean way to keep the cursor steady for the final\n // insert. We'll just make sure the cursor is in the right\n // position before that call for now.\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n\n self.insert_at_iter(&mut cursor, &[end], &mut Self::no_notify);\n }\n }\n\n }\n\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.iter_at_userpos(userpos);\n if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n}\n\n\nimpl SkipList where C::Item: PartialEq {\n pub fn eq_list(&self, other: &[C::Item]) -> bool {\n let mut pos = 0;\n let other_len = other.len();\n\n for node in self.iter() {\n let my_data = node.content_slice();\n let my_len = my_data.len();\n\n if pos + my_len > other_len || my_data != &other[pos..pos + my_data.len()] {\n return false\n }\n pos += my_data.len();\n }\n\n return pos == other_len;\n }\n}\n\nimpl Drop for SkipList {\n fn drop(&mut self) {\n let mut node = self.head.first_skip_entry().node;\n unsafe {\n while !node.is_null() {\n let next = (*node).first_skip_entry().node;\n Node::free(node);\n node = next;\n }\n }\n }\n}\n\n\nimpl From<&[C::Item]> for SkipList {\n fn from(s: &[C::Item]) -> SkipList {\n SkipList::new_from_slice(s)\n }\n}\n\nimpl From> for SkipList {\n fn from(s: Vec) -> SkipList {\n SkipList::new_from_slice(s.as_slice())\n }\n}\n\nimpl Into> for &SkipList {\n fn into(self) -> Vec {\n let mut content = Vec::with_capacity(self.num_items);\n" ) , ( 783 , 50216 , "use std::mem::MaybeUninit;\nuse std::ptr::NonNull;\nuse std::alloc::{alloc, dealloc, Layout};\nuse std::cmp::min;\nuse std::marker::PhantomData;\nuse std::iter;\n\nuse std::fmt;\n\nuse rand::{RngCore, Rng, SeedableRng};\nuse rand::rngs::SmallRng;\n\n/// The likelyhood a node will have height (n+1) instead of n\nconst BIAS: u8 = 100; // out of 256.\n\n/// The number of items in each node. Must fit in a u8 thanks to Node.\n#[cfg(debug_assertions)]\nconst NODE_NUM_ITEMS: usize = 10;\n\n#[cfg(not(debug_assertions))]\nconst NODE_NUM_ITEMS: usize = 100;\n\n/// Rope operations will move to linear time after NODE_STR_SIZE * 2 ^\n/// MAX_HEIGHT length. (With a smaller constant the higher this is). On the flip\n/// side, cursors grow linearly with this number; so smaller is marginally\n/// better when the contents are smaller.\n#[cfg(debug_assertions)]\nconst MAX_HEIGHT: usize = 5;\n\n#[cfg(not(debug_assertions))]\nconst MAX_HEIGHT: usize = 10;\n\n\nconst MAX_HEIGHT_U8: u8 = MAX_HEIGHT as u8; // convenience.\n\npub struct ItemMarker<'a, C: ListConfig> {\n ptr: *mut Node,\n _phantom: PhantomData<&'a SkipList>\n}\n\n/// The whole list is configured through a single generic trait parameter\npub trait ListConfig {\n type Item; //+ std::fmt::Debug;\n\n /// Applications which have custom sizes (or do their own\n /// run-length-encoding) can define their own size function for items. When\n /// items are inserted or replaced, the position is specified using the\n /// custom size defined here.\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n\n fn userlen_of_slice(items: &[Self::Item]) -> usize {\n items.iter().fold(0, |acc, item| {\n acc + Self::get_usersize(item)\n })\n }\n\n fn split_item(_item: &Self::Item, _at: usize) -> (Self::Item, Self::Item) {\n unimplemented!(\"Cannot insert in the middle of an item - split_item is not defined in trait\");\n }\n\n // fn notify(&mut self, _items: &[Self::Item], _at_marker: ItemMarker) where Self: Sized {\n // }\n \n}\n\npub trait Queryable {\n type Query;\n\n // Returns Some(offset) into the item if its contained. Otherwise None.\n fn contains_item(&self, query: &Self::Query) -> Option;\n}\n\n/// This represents a single entry in either the nexts pointers list or in an\n/// iterator.\n#[derive(Debug, PartialEq, Eq)]\nstruct SkipEntry {\n /// The node being pointed to.\n node: *mut Node,\n\n /// The number of *items* between the start of the current node and the\n /// start of the next node. That means nexts entry 0 contains the length of\n /// the current node.\n skip_usersize: usize,\n}\n\n// We can't use #[derive()] here for Copy and Clone due to a bug in the rust\n// compiler: https://github.com/rust-lang/rust/issues/26925\nimpl Copy for SkipEntry {}\nimpl Clone for SkipEntry {\n fn clone(&self) -> Self { *self }\n}\n\nimpl SkipEntry {\n fn new_null() -> Self {\n SkipEntry { node: ptr::null_mut(), skip_usersize: 0 }\n }\n}\n\n\n\n/// The node structure is designed in a very fancy way which would be more at\n/// home in C or something like that. The basic idea is that the node structure\n/// is fixed size in memory, but the proportion of that space taken up by\n/// characters and by the height differ depending on a node's height. This\n/// results in a lot of `unsafe` blocks. I think the tradeoff is worth it but I\n/// could be wrong here. You probably wouldn't lose much performance in practice\n/// by replacing the inline structure with a smallvec - but that would waste\n/// memory in small nodes, and require extra pointer indirection on large nodes.\n/// It also wouldn't remove all the unsafe here.\n///\n/// A different representation (which might be better or worse - I can't tell)\n/// would be to have the nodes all be the same size in memory and change the\n/// *proportion* of the node's memory that is used by the string field vs the\n/// next pointers. That might be lighter weight for the allocator because the\n/// struct itself would be a fixed size; but I'm not sure if it would be better.\n#[repr(C)] // Prevent parameter reordering.\nstruct Node {\n /// We start with the items themselves. Only the first `num_items` of this\n /// list is in use. The user specified length of the items in the node is\n /// stored in nexts[0].skip_items. This is initialized with\n /// Default::default() for the type, but when MaybeUninit completely lands,\n /// it will be possible to make this a tiny bit faster by leaving the list\n /// initially uninitialized.\n items: [MaybeUninit; NODE_NUM_ITEMS],\n\n /// Number of items in `items` in use / filled.\n num_items: u8,\n\n /// Height of nexts array.\n height: u8,\n\n /// With the heads array as is, we have no way to go from a marker back to a\n /// cursor (which is required to insert at that location in the list). For\n /// that we need to be able to figure out at each level of the nexts\n /// pointers which object points to us, and the offset from that element to\n /// the current element. Anyway, for markers to work we need this.\n parent: *mut Node,\n\n // #[repr(align(std::align_of::()))]\n \n /// In reality this array has the size of height, allocated using more or\n /// less direct calls to malloc() at runtime based on the randomly generated\n /// size. The size is always at least 1.\n nexts: [SkipEntry; 0],\n}\n\n// Make sure nexts uses correct alignment. This should be guaranteed by repr(C)\n// This test will fail if this ever stops being true.\n#[test]\nfn test_align() {\n struct TestConfig;\n impl ListConfig for TestConfig {\n type Item = u8;\n fn get_usersize(_item: &Self::Item) -> usize { 1 }\n }\n #[repr(C)] struct Check([SkipEntry; 0]);\n assert!(mem::align_of::() >= mem::align_of::>());\n // TODO: It'd be good to also check the alignment of the nexts field in Node.\n}\n\nfn random_height(rng: &mut R) -> u8 {\n let mut h: u8 = 1;\n // Should I use a csrng here? Does it matter?\n while h < MAX_HEIGHT_U8 && rng.gen::() < BIAS { h+=1; }\n h\n}\n\n#[repr(C)]\npub struct SkipList {\n // TODO: Consider putting the head item on the heap. For the use case here\n // its almost certainly fine either way. The code feels a bit cleaner if its\n // on the heap (and then iterators will be able to outlast a move of the\n // skiplist parent). But its also very nice having the code run fast for\n // small lists. Most lists are small, and it makes sense to optimize for\n // that.\n\n // TODO: For safety, pointers in to this structure should be Pin<> if we\n // ever want to hold on to iterators.\n\n /// The total number of items in the skip list. This is not used internally -\n /// just here for bookkeeping.\n num_items: usize,\n /// Size of the list in user specified units.\n num_usercount: usize,\n\n /// The RNG we use to generate node heights. Specifying it explicitly allows\n /// unit tests and randomizer runs to be predictable, which is very helpful\n /// during debugging. I'm still not sure how the type of this should be\n /// specified. Should it be a generic parameter? Box?\n /// ??\n rng: Option,\n\n /// The first node is inline. The height is 1 more than the max height we've\n /// ever used. The highest next entry points to {null, total usersize}.\n head: Node,\n\n /// This is so dirty. The first node is embedded in SkipList; but we need to\n /// allocate enough room for height to get arbitrarily large. I could insist\n /// on SkipList always getting allocated on the heap, but for small lists its\n /// much better to be on the stack.\n ///\n /// So this struct is repr(C) and I'm just padding out the struct directly.\n /// All accesses should go through head because otherwise I think we violate\n /// aliasing rules.\n _nexts_padding: [SkipEntry; MAX_HEIGHT],\n}\n\n\nimpl Node {\n // Do I need to be explicit about the lifetime of the references being tied\n // to the lifetime of the node?\n fn nexts(&self) -> &[SkipEntry] {\n unsafe {\n std::slice::from_raw_parts(self.nexts.as_ptr(), self.height as usize)\n }\n }\n\n fn nexts_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.nexts.as_mut_ptr(), self.height as usize)\n }\n }\n\n fn layout_with_height(height: u8) -> Layout {\n Layout::from_size_align(\n mem::size_of::>() + mem::size_of::>() * (height as usize),\n mem::align_of::>()).unwrap()\n }\n\n fn alloc_with_height(height: u8) -> *mut Node {\n assert!(height >= 1 && height <= MAX_HEIGHT_U8);\n\n unsafe {\n let node = alloc(Self::layout_with_height(height)) as *mut Node;\n (*node) = Node {\n items: uninit_items_array(),\n num_items: 0,\n height: height,\n parent: ptr::null_mut(),\n nexts: [],\n };\n\n for next in (*node).nexts_mut() {\n *next = SkipEntry::new_null();\n }\n\n node\n }\n }\n\n fn alloc(rng: &mut R) -> *mut Node {\n Self::alloc_with_height(random_height(rng))\n }\n\n unsafe fn free(p: *mut Node) {\n dealloc(p as *mut u8, Self::layout_with_height((*p).height));\n }\n\n fn content_slice(&self) -> &[C::Item] {\n // TODO: Use MaybeUninit::slice_get_ref when it lands. This code is stolen from that implementation.\n\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n let slice = &self.items[..self.num_items as usize];\n unsafe { maybeinit_slice_get_ref(slice) }\n }\n\n // The height is at least 1, so this is always valid.\n fn first_skip_entry<'a>(&self) -> &'a SkipEntry {\n unsafe { &*self.nexts.as_ptr() }\n }\n\n fn first_skip_entry_mut<'a>(&mut self) -> &'a mut SkipEntry {\n unsafe { &mut *self.nexts.as_mut_ptr() }\n }\n\n // TODO: Rename to len() ?\n fn get_userlen(&self) -> usize {\n self.first_skip_entry().skip_usersize\n }\n \n fn get_next_ptr(&self) -> *mut Node {\n self.first_skip_entry().node\n }\n}\n\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone)]\npub struct Cursor {\n // TODO: Add a phantom lifetime reference to the skip list root for safety.\n\n\n /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///\n /// This field isn't strictly necessary - earlier versions tacked this on to\n /// the last item in entries... I'm still not sure the cleanest way to do\n /// this.\n userpos: usize,\n\n /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used to resolve that ambiguity.\n local_index: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n}\n\nimpl Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n self.local_index = 0;\n\n next\n }\n }\n\n fn is_at_node_end(&self) -> bool {\n self.local_index == unsafe { (*self.here_ptr()).num_items } as usize\n }\n\n fn advance_item(&mut self, height: u8) {\n if self.is_at_node_end() { self.advance_node(); }\n let usersize = C::get_usersize(unsafe { self.current_item() });\n\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }\n self.userpos += usersize;\n self.local_index += 1;\n }\n\n fn advance_by_items(&mut self, num: usize, height: u8) {\n for _ in 0..num { self.advance_item(height); }\n }\n\n fn move_to_item_start(&mut self, height: u8, offset: usize) {\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize -= offset;\n }\n self.userpos -= offset;\n }\n\n unsafe fn current_item(&mut self) -> &C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &*(node.items[self.local_index].as_ptr())\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice.\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos\n || self.local_index != other.local_index {return false; }\n\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl fmt::Debug for Cursor {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"Cursor\")\n .field(\"userpos\", &self.userpos)\n .field(\"local_index\", &self.local_index)\n .finish()\n }\n}\n\n// None of the rust builtins give me what I want, which is a copy-free iterator\n// to owned items in a MaybeUninit array. Eh; its easy enough to make my own.\nstruct UninitOwnedIter<'a, C: ListConfig> {\n // Based on the core slice IterMut implementation.\n ptr: NonNull,\n end: *mut C::Item,\n _marker: PhantomData<&'a SkipList>\n}\n\nimpl<'a, C: ListConfig> UninitOwnedIter<'a, C> {\n /// Make a slice we can iterate from and steal from. Its unsafe if:\n /// \n /// - The iterator isn't fully drained (then we might not drop contents)\n /// - The contents we iterate over aren't initialized\n /// \n /// After iterating, the contents are uninit memory.\n unsafe fn from_slice(slice: &[MaybeUninit]) -> Self {\n let ptr = slice.as_ptr() as *mut C::Item; // Safe.\n let end = ptr.add(slice.len());\n\n UninitOwnedIter {\n ptr: NonNull::new_unchecked(ptr),\n end,\n _marker: PhantomData\n }\n }\n // unsafe fn from_slice(slice: &[C::Item]) -> Self {\n // unsafe {\n // let ptr = slice.as_mut_ptr();\n // let end = ptr.add(slice.len());\n\n // UninitOwnedIter {\n // ptr: NonNull::new_unchecked(ptr),\n // end,\n // _marker: PhantomData\n // }\n // }\n // }\n}\n\nimpl<'a, C: ListConfig> Iterator for UninitOwnedIter<'a, C> {\n type Item = C::Item;\n\n fn next(&mut self) -> Option {\n if self.ptr.as_ptr() == self.end {\n None\n } else {\n Some(unsafe { self.ptr.as_ptr().read() })\n }\n }\n}\n\n// TODO: Stolen from MaybeUninit::uninit_array. Replace with the real uninit_array when stable.\n#[inline(always)]\nfn uninit_items_array() -> [MaybeUninit; NODE_NUM_ITEMS] {\n unsafe { MaybeUninit::<[MaybeUninit; NODE_NUM_ITEMS]>::uninit().assume_init() }\n}\n\n// Stolen from core::mem::MaybeUninit. Its just not standardized yet.\n#[inline(always)]\nunsafe fn maybeinit_slice_get_ref(slice: &[MaybeUninit]) -> &[T] {\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n &*(slice as *const [MaybeUninit] as *const [T])\n}\n\n\nimpl SkipList {\n pub fn new() -> Self {\n SkipList:: {\n num_items: 0,\n num_usercount: 0,\n rng: None,\n head: Node {\n items: uninit_items_array(),\n num_items: 0,\n height: 1, // Stores max height of list nodes\n parent: ptr::null_mut(),\n nexts: [],\n },\n _nexts_padding: [SkipEntry::new_null(); MAX_HEIGHT],\n }\n }\n\n pub fn init_rng_from_seed(&mut self, seed: u64) {\n self.rng = Some(SmallRng::seed_from_u64(seed));\n }\n\n fn get_rng(&mut self) -> &mut SmallRng {\n // I'm sure there's a nicer way to implement this.\n if self.rng.is_none() {\n // We'll use a stable RNG in debug mode so the tests are stable.\n if cfg!(debug_assertions) {\n self.init_rng_from_seed(123);\n } else {\n self.rng = Some(SmallRng::from_entropy());\n }\n }\n self.rng.as_mut().unwrap()\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n let mut rope = Self::new();\n rope.insert_at(0, s);\n rope\n }\n\n pub fn get_userlen(&self) -> usize {\n self.num_usercount\n }\n\n fn iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn len_items(&self) -> usize {\n self.num_items as usize\n }\n\n fn heads_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.head.nexts.as_mut_ptr(), self._nexts_padding.len())\n }\n }\n\n fn is_head(&self, node: *const Node) -> bool {\n node as *const _ == &self.head as *const _\n }\n\n /// Walk the list and validate internal constraints. This is used for\n /// testing the structure itself, and should generally not be called by\n /// users.\n pub fn check(&self) {\n // #[cfg(test)]\n {\n // self.print();\n assert!(self.head.height >= 1);\n assert!(self.head.height <= MAX_HEIGHT_U8);\n\n let head_ptr = &self.head as *const _ as *mut _;\n // let skip_over = self.get_top_entry();\n // println!(\"Skip over skip chars {}, num bytes {}\", skip_over.skip_items, self.num_bytes);\n\n let mut prev: [*const Node; MAX_HEIGHT] = [ptr::null(); MAX_HEIGHT];\n\n let mut iter = [SkipEntry {\n // Bleh.\n node: head_ptr,\n // The skips will store the total distance travelled since the\n // start of this traversal at each height. All the entries above\n // head.height are ignored though.\n skip_usersize: 0\n }; MAX_HEIGHT];\n\n let mut num_items = 0;\n let mut num_usercount = 0;\n\n for (_i, n) in self.iter().enumerate() {\n // println!(\"visiting {:?}\", n.as_str());\n if !self.is_head(n) { assert!(n.num_items > 0); }\n assert!(n.height <= MAX_HEIGHT_U8);\n assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n\n // Make sure the number of items matches the count\n let local_count = C::userlen_of_slice(n.content_slice());\n assert_eq!(local_count, n.get_userlen());\n\n let expect_parent = if self.is_head(n) {\n ptr::null() // The head's parent is null\n } else if n.height == self.head.height {\n &self.head as *const _ // Max height nodes point back to head\n } else {\n prev[n.height as usize]\n };\n\n // println!(\"visiting {} {:?}\", i, n as *const _);\n // dbg!(n as *const _);\n // dbg!((n as *const _, (*n).height));\n // dbg!(n.parent);\n // dbg!(&self.head as *const _);\n\n assert_eq!(n.parent as *const _, expect_parent, \"invalid parent\");\n \n for (i, entry) in iter[0..n.height as usize].iter_mut().enumerate() {\n assert_eq!(entry.node as *const _, n as *const _);\n assert_eq!(entry.skip_usersize, num_usercount);\n\n // println!(\"replacing entry {:?} with {:?}\", entry, n.nexts()[i].node);\n prev[i] = n;\n entry.node = n.nexts()[i].node;\n entry.skip_usersize += n.nexts()[i].skip_usersize;\n }\n\n num_items += n.num_items as usize;\n num_usercount += n.get_userlen();\n\n // Check the value returned by the iterator functions matches.\n let (mut normal_iter, local_offset) = self.iter_at_userpos(num_usercount);\n assert_eq!(local_offset, 0);\n\n // Dirty hack. If n has 0-sized elements at the end, the normal\n // cursor won't be at the end...\n while normal_iter.here_ptr() != n as *const _ as *mut _ {\n normal_iter.advance_node();\n }\n normal_iter.local_index = n.num_items as usize;\n let node_iter = unsafe { self.iter_at_node(n, n.get_userlen(), n.num_items as usize) };\n assert_eq!(normal_iter, node_iter);\n }\n\n for entry in iter[0..self.head.height as usize].iter() {\n // println!(\"{:?}\", entry);\n assert!(entry.node.is_null());\n assert_eq!(entry.skip_usersize, num_usercount);\n }\n \n // println!(\"self bytes: {}, count bytes {}\", self.num_bytes, num_bytes);\n assert_eq!(self.num_items, num_items);\n assert_eq!(self.get_userlen(), num_usercount);\n }\n }\n \n \n /// Internal function for creating a cursor at a particular location in the\n /// skiplist. The returned cursor contains list of nodes which point past\n /// the specified position, as well as offsets of how far into their\n /// character lists the specified characters are.\n ///\n /// Sometimes a call to iter_at_userpos is ambiguous:\n ///\n /// - The item can contain items with zero usersize. The cursor could point\n /// to any of them.\n /// - If the location is at the end of a node, it is equally valid to return\n /// a position at the start of the next node.\n ///\n /// Because its impossible to move backwards in the list, iter_at_userpos\n /// returns the first admissible location with the specified userpos.\n /// \n /// Returns (cursor, offset into the specified item).\n ///\n /// TODO: This should be Pin<&self>.\n fn iter_at_userpos(&self, target_userpos: usize) -> (Cursor, usize) {\n assert!(target_userpos <= self.get_userlen());\n\n let mut e: *const Node = &self.head;\n let mut height = self.head.height as usize - 1;\n \n let mut offset = target_userpos; // How many more items to skip\n\n // We're populating the head node pointer to simplify the case when the\n // iterator grows. We could put offset into the skip_usersize but it\n // would only be *mostly* correct, not always correct. (Since cursor\n // entries above height are not updated by insert.)\n let mut cursor = Cursor {\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n local_index: 0,\n userpos: target_userpos,\n };\n\n loop { // while height >= 0\n let en = unsafe { &*e };\n let next = en.nexts()[height];\n let skip = next.skip_usersize;\n if offset > skip {\n // Go right.\n debug_assert!(e == &self.head || en.num_items > 0);\n offset -= skip;\n e = next.node;\n assert!(!e.is_null(), \"Internal constraint violation: Reached rope end prematurely\");\n } else {\n // Record this and go down.\n cursor.entries[height] = SkipEntry {\n skip_usersize: offset,\n node: e as *mut Node, // This is pretty gross\n };\n\n if height == 0 { break; } else { height -= 1; }\n }\n };\n\n // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n\n // We've found the node. Now look for the index within the node.\n let en = unsafe { &*e };\n let mut index = 0;\n\n while offset > 0 {\n assert!(index < en.num_items as usize);\n \n let usersize = C::get_usersize(unsafe { &*en.items[index].as_ptr() });\n if usersize > offset { break; } // We're in the middle of an item.\n offset -= usersize;\n index += 1;\n }\n cursor.local_index = index;\n\n (cursor, offset)\n }\n\n unsafe fn iter_at_node(&self, n: *const Node, mut offset: usize, local_index: usize) -> Cursor {\n let mut n = n as *mut Node; // We don't mutate, but we need a mut ptr.\n\n let mut cursor = Cursor {\n userpos: 0, // We'll set this later.\n local_index: local_index,\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };\n\n let mut h = 0;\n loop {\n while h < (*n).height as usize {\n cursor.entries[h] = SkipEntry {\n node: n,\n skip_usersize: offset\n };\n\n h += 1;\n }\n\n let parent = (*n).parent;\n // Reached the head.\n if parent.is_null() { break; }\n\n // If we're the same height as the parent its fine.\n debug_assert!((*parent).height as usize > h\n || (self.is_head(parent) && (*parent).height as usize == h));\n\n // Walk from parent back to n, figuring out the offset.\n let mut c = parent;\n // let walk_height = (*parent).height as usize - 2;\n let walk_height = (*n).height as usize - 1;\n while c != n {\n let elem = (*c).nexts()[walk_height];\n offset += elem.skip_usersize;\n c = elem.node;\n }\n\n n = parent;\n }\n\n cursor.userpos = offset;\n cursor\n }\n\n pub fn iter_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n // The marker gives us a pointer into a node. Find the item.\n unsafe {\n let n = marker.ptr;\n\n let mut offset: usize = 0;\n let mut local_index = None;\n for (i, item) in (*n).content_slice().iter().enumerate() {\n if let Some(item_offset) = item.contains_item(query) {\n offset += item_offset;\n local_index = Some(i);\n break;\n } else {\n offset += C::get_usersize(item);\n }\n }\n\n let local_index = local_index.expect(\"Invalid marker - item not found in node\");\n self.iter_at_node(n, offset, local_index)\n }\n }\n\n // Internal fn to create a new node at the specified iterator filled with\n // the specified content. The passed cursor should point at the end of the\n // previous node. It will be updated to point to the end of the newly\n // inserted content.\n // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &mut I, num_items: usize, move_cursor: bool, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: Iterator {\n\n // println!(\"Insert_node_at {} len {}\", contents.len(), self.num_bytes);\n // debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n assert!(num_items <= NODE_NUM_ITEMS);\n debug_assert!(contents.size_hint().0 >= num_items);\n\n let new_node_ptr = Node::alloc(self.get_rng());\n let new_node = &mut *new_node_ptr;\n // let num_items = contents.len();\n new_node.num_items = num_items as u8;\n\n for (slot, item) in new_node.items[..num_items].iter_mut().zip(contents) {\n (slot.as_mut_ptr() as *mut C::Item).write(item); // Write makes sure we don't drop the old value.\n }\n // new_node.items[..contents.len()].copy_from_slice(contents);\n\n let new_userlen = C::userlen_of_slice(new_node.content_slice());\n\n let new_height = new_node.height;\n let new_height_usize = new_height as usize;\n\n let mut head_height = self.head.height as usize;\n while head_height < new_height_usize {\n // This seems weird given we're about to overwrite these values\n // below. What we're doing is retroactively setting up the cursor\n // and head pointers *as if* the height had been this high all\n // along. This way we only have to populate the higher head values\n // lazily.\n let total_userlen = self.num_usercount;\n let nexts = self.heads_mut();\n nexts[head_height].skip_usersize = total_userlen;\n cursor.entries[head_height].skip_usersize = cursor.userpos;\n\n head_height += 1; // This is ugly.\n self.head.height += 1;\n }\n\n new_node.parent = if new_height_usize == MAX_HEIGHT {\n &self.head as *const _ as *mut _\n } else { cursor.entries[new_height_usize].node };\n\n for i in 0..new_height_usize {\n let prev_skip = &mut (*cursor.entries[i].node).nexts_mut()[i];\n let new_nexts = new_node.nexts_mut();\n\n // The new node points to the successor (or null)\n new_nexts[i] = SkipEntry {\n node: prev_skip.node,\n skip_usersize: new_userlen + prev_skip.skip_usersize - cursor.entries[i].skip_usersize\n };\n\n // The previous node points to the new node\n *prev_skip = SkipEntry {\n node: new_node_ptr,\n skip_usersize: cursor.entries[i].skip_usersize\n };\n\n // Move the iterator to the end of the newly inserted node.\n if move_cursor {\n cursor.entries[i] = SkipEntry {\n node: new_node_ptr,\n skip_usersize: new_userlen\n };\n }\n }\n\n for i in new_height_usize..head_height {\n (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n if move_cursor {\n cursor.entries[i].skip_usersize += new_userlen;\n }\n }\n\n // Update parents.\n if new_height_usize > 1 {\n\n let mut n = new_node_ptr;\n let mut skip_height = 0;\n\n loop {\n n = (*n).nexts_mut()[skip_height].node;\n if n.is_null() || (*n).height >= new_height { break; }\n \n (*n).parent = new_node_ptr;\n skip_height = usize::max(skip_height, (*n).height as usize - 1);\n }\n }\n \n self.num_items += num_items;\n self.num_usercount += new_userlen;\n if move_cursor {\n cursor.userpos += new_userlen;\n cursor.local_index = num_items;\n }\n\n notify(new_node.content_slice(), ItemMarker {\n ptr: new_node_ptr,\n _phantom: PhantomData\n });\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &mut I, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n // iter specifies where to insert.\n\n let mut e = cursor.here_ptr();\n\n // The insertion offset into the destination node.\n assert!(cursor.userpos <= self.num_usercount);\n assert!(cursor.local_index <= (*e).num_items as usize);\n\n // We might be able to insert the new data into the current node, depending on\n // how big it is.\n let num_inserted_items = contents.len();\n // let num_inserted_usercount = C::userlen_of_slice(contents);\n\n // Can we insert into the current node?\n let mut insert_here = (*e).num_items as usize + num_inserted_items <= NODE_NUM_ITEMS;\n\n // Can we insert into the start of the successor node?\n if !insert_here && cursor.local_index == (*e).num_items as usize && num_inserted_items <= NODE_NUM_ITEMS {\n // We can insert into the subsequent node if:\n // - We can't insert into the current node\n // - There _is_ a next node to insert into\n // - The insert would be at the start of the next node\n // - There's room in the next node\n if let Some(next) = (*e).first_skip_entry_mut().node.as_mut() {\n if next.num_items as usize + num_inserted_items <= NODE_NUM_ITEMS {\n cursor.advance_node();\n e = next;\n\n insert_here = true;\n }\n }\n }\n\n let item_idx = cursor.local_index;\n let e_num_items = (*e).num_items as usize; // convenience.\n\n if insert_here {\n // println!(\"insert_here {}\", contents);\n // First push the current items later in the array\n let c = &mut (*e).items;\n if item_idx < e_num_items {\n // Can't use copy_within because we aren't sure if the type\n // implements Copy. Memmove the existing items.\n ptr::copy(\n &c[item_idx],\n &mut c[item_idx + num_inserted_items],\n (*e).num_items as usize - item_idx);\n // c[..].copy_within(item_idx..e_num_items,\n // item_idx + num_inserted_items);\n }\n\n // Then copy in the new items. Can't memcpy from an iterator, but\n // the optimizer should make this fast.\n let dest_content_slice = &mut c[item_idx..item_idx + num_inserted_items];\n for (slot, item) in dest_content_slice.iter_mut().zip(contents) {\n // Do not drop the old items - they were only moved.\n slot.as_mut_ptr().write(item);\n }\n let dest_content_slice = maybeinit_slice_get_ref(dest_content_slice);\n // c[item_idx..item_idx + num_inserted_items].copy_from_slice(contents);\n\n (*e).num_items += num_inserted_items as u8;\n self.num_items += num_inserted_items;\n let num_inserted_usercount = C::userlen_of_slice(dest_content_slice);\n self.num_usercount += num_inserted_usercount;\n\n // .... aaaand update all the offset amounts.\n cursor.update_offsets(self.head.height as usize, num_inserted_usercount as isize);\n\n // Usually the cursor will be discarded after one change, but for\n // consistency of compound edits we'll update the cursor to point to\n // the end of the new content.\n for entry in cursor.entries[0..self.head.height as usize].iter_mut() {\n entry.skip_usersize += num_inserted_usercount;\n }\n cursor.userpos += num_inserted_usercount;\n cursor.local_index += num_inserted_items;\n\n notify(dest_content_slice, ItemMarker {\n ptr: e,\n _phantom: PhantomData\n });\n } else {\n // There isn't room. We'll need to add at least one new node to the\n // list. We could be a bit more careful here and copy as much as\n // possible into the current node - that would decrease the number\n // of new nodes in some cases, but I don't think the performance\n // difference will be large enough to justify the complexity.\n\n // If we're not at the end of the current node, we'll need to remove\n // the end of the current node's data and reinsert it later.\n let num_end_items = e_num_items - item_idx;\n\n let (end_items, end_usercount) = if num_end_items > 0 {\n // We'll mark the items as deleted from the node, while leaving\n // the data itself there for now to avoid a copy.\n\n // Note that if we wanted to, it would also be correct (and\n // slightly more space efficient) to pack some of the new\n // string's characters into this node after trimming it.\n let end_items = &(*e).items[item_idx..e_num_items];\n (*e).num_items = item_idx as u8;\n let end_usercount = (*e).get_userlen() - cursor.entries[0].skip_usersize;\n\n cursor.update_offsets(self.head.height as usize, -(end_usercount as isize));\n\n // We need to trim the size off because we'll add the characters\n // back with insert_node_at.\n self.num_usercount -= end_usercount;\n self.num_items -= num_end_items;\n\n (Some(end_items), end_usercount)\n } else {\n (None, 0)\n };\n\n // Now we insert new nodes containing the new character data. The\n // data is broken into pieces with a maximum size of NODE_NUM_ITEMS.\n // As further optimization, we could try and fit the last piece into\n // the start of the subsequent node.\n let mut items_remaining = num_inserted_items;\n while items_remaining > 0 {\n let insert_here = usize::min(items_remaining, NODE_NUM_ITEMS);\n self.insert_node_at(cursor, contents, insert_here, true, notify);\n items_remaining -= insert_here;\n }\n // for chunk in contents.take(NODE_NUM_ITEMS) {\n // // let userlen = C::userlen_of_slice(chunk);\n // self.insert_node_at(cursor, chunk, true, notify);\n // }\n\n // TODO: Consider recursively calling insert_at_iter() here instead\n // of making a whole new node for the remaining content.\n if let Some(end_items) = end_items {\n // Passing false to indicate we don't want the cursor updated\n // after this - it should remain at the end of the newly\n // inserted content, which is *before* this end bit.\n self.insert_node_at(cursor, &mut UninitOwnedIter::::from_slice(end_items), end_usercount, false, notify);\n }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n // self.insert_at_iter_and_notify(cursor, contents, Self::no_notify);\n // }\n\n /// Interestingly unlike the original, here we only care about specifying\n /// the number of removed items by counting them. We do not use usersize in\n /// the deleted item count.\n ///\n /// If the deleted content occurs at the start of a node, the cursor passed\n /// here must point to the end of the previous node, not the start of the\n /// current node.\n unsafe fn del_at_iter(&mut self, cursor: &mut Cursor, mut num_deleted_items: usize) {\n if num_deleted_items == 0 { return; }\n\n let mut item_idx = cursor.local_index;\n let mut e = cursor.here_ptr();\n while num_deleted_items > 0 {\n // self.print();\n // if cfg!(debug_assertions) { self.check(); }\n if item_idx == (*e).num_items as usize {\n let entry = (*e).first_skip_entry();\n // End of current node. Skip to the start of the next one. We're\n // intentionally not updating the iterator because if we delete\n // a whole node we need the iterator to point to the previous\n // element. And if we only delete here, the iterator doesn't\n // need to be moved.\n e = entry.node;\n if e.is_null() { panic!(\"Cannot delete past the end of the list\"); }\n item_idx = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let removed_here = min(num_deleted_items, e_num_items - item_idx);\n \n let height = (*e).height as usize;\n let removed_userlen;\n\n if removed_here < e_num_items || e as *const _ == &self.head as *const _ {\n // Just trim the node down.\n let trailing_items = e_num_items - item_idx - removed_here;\n \n let c = &mut (*e).items;\n removed_userlen = C::userlen_of_slice(maybeinit_slice_get_ref(&c[item_idx..item_idx + removed_here]));\n if trailing_items > 0 {\n ptr::copy(\n &c[item_idx + removed_here],\n &mut c[item_idx],\n trailing_items);\n // c[..].copy_within(item_idx + removed_here..e_num_items, item_idx);\n }\n\n (*e).num_items -= removed_here as u8;\n self.num_items -= removed_here;\n self.num_usercount -= removed_userlen;\n\n for s in (*e).nexts_mut() {\n s.skip_usersize -= removed_userlen;\n }\n } else {\n // Remove the node from the skip list entirely. e should be the\n // next node after the position of the iterator.\n assert_ne!(cursor.here_ptr(), e);\n\n removed_userlen = (*e).get_userlen();\n let next = (*e).first_skip_entry().node;\n\n // println!(\"removing {:?} contents {:?} height {}\", e, (*e).content_slice(), height);\n\n for i in 0..height {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.node = (*e).nexts_mut()[i].node;\n s.skip_usersize += (*e).nexts()[i].skip_usersize - removed_userlen;\n }\n\n self.num_items -= (*e).num_items as usize;\n self.num_usercount -= removed_userlen;\n\n // Update parents.\n if height > 1 {\n let mut n = e;\n // let new_parent = cursor.entries[height - 1].node;\n\n // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents.\n let mut parent_height = 1;\n let cursor_node = cursor.here_ptr();\n let cursor_node_height = (*cursor_node).height as usize;\n let mut new_parent = if height >= cursor_node_height {\n cursor.entries[parent_height].node\n } else {\n cursor_node\n };\n\n loop {\n // dbg!(skip_height);\n // dbg!((*n).height as usize);\n\n n = (*n).nexts_mut()[parent_height - 1].node;\n if n.is_null() || (*n).height >= height as u8 { break; }\n let n_height = (*n).height as usize;\n\n // dbg!((*n).content_slice());\n // dbg!((*n).height);\n \n assert_eq!((*n).parent, e);\n assert!(n_height >= parent_height - 1);\n\n if n_height > parent_height {\n parent_height = n_height;\n if n_height >= cursor_node_height {\n new_parent = cursor.entries[parent_height].node\n }\n }\n \n (*n).parent = new_parent;\n }\n }\n\n Node::free(e);\n e = next;\n }\n\n for i in height..self.head.height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.skip_usersize -= removed_userlen;\n }\n\n num_deleted_items -= removed_here;\n\n // if cfg!(debug_assertions) { self.check(); }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item], mut notify: Notify)\n // where Notify: FnMut(&[C::Item], ItemMarker) {\n\n unsafe fn replace_at_iter(&mut self, cursor: &mut Cursor, mut removed_items: usize, inserted_content: &mut I, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n if removed_items == 0 && inserted_content.len() == 0 { return; }\n\n // Replace as many items from removed_items as we can with inserted_content.\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n debug_assert!(inserted_content.len() >= replaced_items);\n let mut e = cursor.here_ptr();\n if cursor.local_index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n }\n\n let index = cursor.local_index;\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let dest = &mut (*e).items[index..index + replaced_items_here];\n let old_usersize = C::userlen_of_slice(maybeinit_slice_get_ref(dest));\n\n // Replace the items themselves. Everything else is commentary.\n // Would prefer to use zip() but it wants ownership of inserted_content :/\n for slot in dest.iter_mut() {\n *slot.as_mut_ptr() = inserted_content.next().unwrap();\n }\n // for (slot, item) in dest.iter_mut().zip(inserted_content) {\n // *slot.as_mut_ptr() = item; // Drop the replaced content.\n // }\n\n let dest = maybeinit_slice_get_ref(dest);\n let new_usersize = C::userlen_of_slice(dest);\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n // old_items.copy_from_slice(new_items);\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n\n // inserted_content = &inserted_content[replaced_items_here..];\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n cursor.local_index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n\n notify(dest, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(cursor, inserted_content, &mut notify);\n } else if removed_items > 0 {\n self.del_at_iter(cursor, removed_items);\n }\n }\n\n fn dbg_check_cursor_at(&self, cursor: &Cursor, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n // let (mut c2, _) = self.iter_at_userpos(userpos);\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n }\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}\n\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.replace_at_iter(&mut cursor, removed_items, &mut inserted_content.iter().copied(), Self::no_notify); }\n\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(start_userpos);\n c2.advance_by_items(inserted_content.len(), self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after replace\"); }\n }\n }\n\n pub fn insert_at(&mut self, mut userpos: usize, contents: &[C::Item]) where C::Item: Copy {\n if contents.len() == 0 { return; }\n \n userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n unsafe {\n if offset == 0 {\n self.insert_at_iter(&mut cursor, &mut contents.iter().copied(), &mut Self::no_notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n } else {\n let current_item = cursor.current_item();\n let (start, end) = C::split_item(current_item, offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n cursor.move_to_item_start(self.head.height, offset);\n // This feels pretty inefficient; but its probably fine.\n self.replace_at_iter(&mut cursor, 1, &mut iter::once(start), &mut Self::no_notify);\n self.insert_at_iter(&mut cursor, &mut contents.iter().copied(), &mut Self::no_notify);\n\n // There's no clean way to keep the cursor steady for the final\n // insert. We'll just make sure the cursor is in the right\n // position before that call for now.\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n\n self.insert_at_iter(&mut cursor, &mut iter::once(end), &mut Self::no_notify);\n }\n }\n\n }\n\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.iter_at_userpos(userpos);\n if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n}\n\n\nimpl SkipList where C::Item: PartialEq {\n pub fn eq_list(&self, other: &[C::Item]) -> bool {\n let mut pos = 0;\n let other_len = other.len();\n\n for node in self.iter() {\n let my_data = node.content_slice();\n let my_len = my_data.len();\n\n if pos + my_len > other_len || my_data != &other[pos..pos + my_data.len()] {\n return false\n }\n pos += my_data.len();\n }\n\n return pos == other_len;\n }\n}\n\nimpl Drop for SkipList {\n fn drop(&mut self) {\n let mut node = self.head.first_skip_entry().node;\n unsafe {\n while !node.is_null() {\n let next = (*node).first_skip_entry().node;\n Node::free(node);\n node = next;\n }\n }\n }\n}\n\n\nimpl From<&[C::Item]> for SkipList where C::Item: Copy {\n fn from(s: &[C::Item]) -> SkipList {\n SkipList::new_from_slice(s)\n }\n}\n\n// TODO: Remove Item: Copy constraint here.\nimpl From> for SkipList where C::Item: Copy {\n fn from(s: Vec) -> SkipList {\n SkipList::new_from_slice(s.as_slice())\n }\n}\n\nimpl Into> for &SkipList where C::Item: Copy {\n fn into(self) -> Vec {\n let mut content: Vec = Vec::with_capacity(self.num_items);\n" ) , (18233, 0, "\n ") , (18238, 0, "\n ") , (18234, 4, "") , (18239, 0, "f") , (18240, 0, "n") , (18241, 0, " ") , (18239, 3, "") , (18235, 4, "") , (18234, 1, "") , (18878, 0, "\n ") , (18883, 0, "\n ") , (18879, 4, "") , (18884, 0, "f") , (18885, 0, "n") , (18886, 0, " ") , (18887, 0, "i") , (18888, 0, "z") , (18888, 1, "") , (18887, 1, "") , (18887, 0, "s") , (18888, 0, "i") , (18889, 0, "z") , (18890, 0, "e") , (18891, 0, "_") , (18892, 0, "h") , (18893, 0, "i") , (18894, 0, "n") , (18895, 0, "t") , (18896, 0, "(") , (18897, 0, "&") , (18898, 0, "s") , (18899, 0, "e") , (18900, 0, "l") , (18901, 0, "f") , (18902, 0, ")") , (18903, 0, " ") , (18904, 0, "-") , (18905, 0, ">") , (18906, 0, " ") , (18907, 0, "(") , (18908, 0, "u") , (18909, 0, "s") , (18910, 0, "e") , (18911, 0, "i") , (18911, 1, "") , (18910, 1, "") , (18910, 0, "i") , (18911, 0, "z") , (18912, 0, "e") , (18913, 0, ",") , (18914, 0, " ") , (18915, 0, "O") , (18916, 0, "p") , (18917, 0, "t") , (18918, 0, "i") , (18919, 0, "o") , (18920, 0, "n") , (18921, 0, "<") , (18922, 0, "u") , (18923, 0, "s") , (18924, 0, "i") , (18925, 0, "z") , (18926, 0, "e") , (18927, 0, ">") , (18928, 0, ")") , (18929, 0, " ") , (18930, 0, "{") , (18931, 0, " ") , (18932, 0, "\n ") , (18941, 0, "\n ") , (18933, 8, "") , (18934, 8, " }") , (18931, 1, "") , (18932, 0, " ") , (18940, 0, "l") , (18941, 0, "e") , (18942, 0, "t") , (18943, 0, " ") , (18944, 0, "s") , (18945, 0, "i") , (18946, 0, "e") , (18946, 1, "") , (18946, 0, "z") , (18947, 0, "e") , (18948, 0, " ") , (18949, 0, "=") , (18950, 0, " ") , (18951, 0, "s") , (18952, 0, "e") , (18953, 0, "l") , (18954, 0, "f") , (18955, 0, ".") , (18956, 0, "e") , (18957, 0, "n") , (18958, 0, "d") , (18959, 0, " ") , (18960, 0, "-") , (18961, 0, " ") , (18962, 0, "s") , (18963, 0, "e") , (18964, 0, "l") , (18965, 0, "f") , (18966, 0, ".") , (18967, 0, "p") , (18968, 0, "t") , (18969, 0, "r") , (18970, 0, ";") , (18970, 0, ".") , (18971, 0, "a") , (18972, 0, "s") , (18971, 2, "as_ptr()") , (18960, 1, "") , (18959, 1, "") , (18959, 0, ".") , (18960, 0, "s") , (18961, 0, "u") , (18962, 0, "b") , (18963, 0, "(") , (18964, 1, "") , (18981, 0, ")") , (18951, 32, "") , (18951, 0, "s") , (18952, 0, "e") , (18953, 0, "l") , (18954, 0, "f") , (18955, 0, ".") , (18956, 0, "e") , (18957, 0, "n") , (18958, 0, "d") , (18959, 0, " ") , (18960, 0, "a") , (18961, 0, "s") , (18962, 0, " ") , (18963, 0, "u") , (18964, 0, "s") , (18965, 0, "i") , (18966, 0, "z") , (18967, 0, "e") , (18968, 0, " ") , (18969, 0, "-") , (18970, 0, " ") , (18971, 0, "s") , (18972, 0, "e") , (18973, 0, "l") , (18974, 0, "f") , (18975, 0, ".") , (18976, 0, "p") , (18977, 0, "t") , (18978, 0, "r") , (18979, 0, " ") , (18980, 0, "a") , (18981, 0, "s") , (18982, 0, " ") , (18983, 0, "u") , (18984, 0, "s") , (18985, 0, "i") , (18986, 0, "z") , (18987, 0, "e") , (18951, 0, "(") , (18989, 0, ")") , (18990, 0, ".") , (18990, 1, "") , (18990, 0, " ") , (18991, 0, "/") , (18992, 0, " ") , (18993, 0, "s") , (18994, 0, "i") , (18995, 0, "z") , (18996, 0, "e") , (18997, 0, "_") , (18998, 0, "o") , (18999, 0, "f") , (19000, 0, ":") , (19001, 0, ":") , (19002, 0, "<") , (19003, 0, "C") , (19004, 0, ":") , (19005, 0, ":") , (19006, 0, "I") , (19007, 0, "t") , (19008, 0, "e") , (19009, 0, "m") , (19010, 0, ">") , (19011, 0, "(") , (19012, 0, ")") , (19013, 0, ";") , (19014, 0, "\n ") , (19023, 0, "(") , (19024, 0, "s") , (19025, 0, "i") , (19026, 0, "z") , (19027, 0, "e") , (19028, 0, ",") , (19029, 0, " ") , (19030, 0, "S") , (19031, 0, "o") , (19032, 0, "m") , (19033, 0, "e") , (19034, 0, "(") , (19035, 0, "s") , (19036, 0, "i") , (19037, 0, "z") , (19038, 0, "e") , (19039, 0, ")") , (19040, 0, ")") , (19011, 0, ":") , (19012, 0, ":") , (19011, 2, "") , (18980, 0, ".") , (18981, 0, "a") , (18982, 0, "s") , (18983, 0, "_") , (18984, 0, "p") , (18985, 0, "t") , (18986, 0, "r") , (18987, 0, "(") , (18988, 0, ")") , (19002, 0, "m") , (19003, 0, "e") , (19004, 0, "m") , (19005, 0, ":") , (19006, 0, ":") , (1247, 2, "2") , (32176, 0, "d") , (32177, 0, "b") , (32178, 0, "g") , (32179, 0, "!") , (32180, 0, "(") , (32203, 0, ")") , (32205, 1, "") , (32205, 0, "<") , (32203, 1, "") , (32180, 1, "") , (32179, 1, "") , (32178, 1, "") , (32177, 1, "") , (32176, 1, "") , (32175, 1, "") , (32175, 0, "(") , (32162, 0, "// ") , (1973, 0, " type Item; //+ std::fmt::Debug;\n") , (1987, 21, "") , (1977, 0, "// ") , (2007, 1, "") , (2006, 1, "") , (2005, 1, "") , (2004, 1, "") , (2004, 0, ":") , (2005, 1, "") , (54333, 0, "\n ") , (54350, 0, "s") , (54351, 0, "e") , (54352, 0, "l") , (54353, 0, "f") , (54354, 0, ".") , (54355, 0, "p") , (54356, 0, "r") , (54357, 0, "i") , (54355, 3, "print()") , (54362, 0, "(") , (54363, 0, ")") , (54363, 1, "") , (54362, 1, "") , (54362, 0, ";") , (54466, 0, "\n ") , (54483, 0, "self.print();") , (54877, 0, "\n ") , (54894, 0, "self.print();") , (42868, 13, "e") , (42869, 0, "n") , (42870, 0, "d") , (42871, 0, "_") , (42872, 0, "i") , (42873, 0, "t") , (42874, 0, "e") , (42875, 0, "m") , (42876, 0, "s") , (32216, 1, "") , (32216, 0, ">") , (32176, 3, "") , (42874, 0, ".") , (42875, 0, "l") , (42876, 0, "e") , (42877, 0, "n") , (42878, 0, "(") , (42879, 0, ")") , (1247, 1, "") , (1247, 0, "1") , (1247, 1, "") , (1247, 0, "1") , (1248, 0, "0") , (18822, 0, "\n ") , (18835, 0, "l") , (18836, 0, "e") , (18837, 0, "t") , (18838, 0, " ") , (18839, 0, "p") , (18840, 0, "t") , (18841, 0, "r") , (18842, 0, " ") , (18843, 0, "=") , (18844, 0, " ") , (18845, 0, "s") , (18846, 0, "e") , (18847, 0, "l") , (18848, 0, "f") , (18849, 0, ".") , (18850, 0, "p") , (18851, 0, "t") , (18852, 0, "r") , (18853, 0, ";") , (18881, 5, "") , (18854, 0, "\n ") , (18867, 0, "s") , (18868, 0, "e") , (18869, 0, "l") , (18870, 0, "f") , (18871, 0, ".") , (18872, 0, "p") , (18873, 0, "t") , (18874, 0, "r") , (18875, 0, " ") , (18876, 0, "+") , (18877, 0, "=") , (18878, 0, " ") , (18879, 0, "1") , (18880, 0, ";") , (18876, 1, "") , (18878, 0, "s") , (18879, 0, "e") , (18880, 0, "l") , (18881, 0, "f") , (18882, 0, ".") , (18883, 0, "p") , (18884, 0, "t") , (18885, 0, "r") , (18886, 0, ".") , (18887, 0, "o") , (18888, 0, "f") , (18889, 0, "f") , (18890, 0, "s") , (18891, 0, "e") , (18892, 0, "t") , (18893, 0, "(") , (18895, 0, ")") , (18886, 0, ".") , (18887, 0, "a") , (18888, 0, "s") , (18889, 0, "_") , (18890, 0, "p") , (18891, 0, "t") , (18892, 0, "r") , (18893, 0, "(") , (18894, 0, ")") , (18877, 0, " ") , (18878, 0, "N") , (18879, 0, "o") , (18880, 0, "n") , (18881, 0, "N") , (18882, 0, "u") , (18883, 0, "l") , (18878, 6, "NonNull") , (18885, 0, ":") , (18886, 0, ":") , (18887, 0, "new_unchecked(ptr: *mut T)") , (18901, 11, "") , (18901, 1, "") , (18901, 1, "") , (18928, 0, ")") , (18877, 0, " ") , (18878, 0, "u") , (18879, 0, "n") , (18880, 0, "s") , (18881, 0, "a") , (18882, 0, "f") , (18883, 0, "e") , (18884, 0, " ") , (18885, 0, "{") , (18938, 0, " ") , (18939, 0, "}") , (10488, 349, "") , (10487, 1, "") , (10378, 109, "") , (17789, 359, "") , (17788, 1, "") , (17257, 0, " ") , (17258, 0, "w") , (17259, 0, "i") , (17260, 0, "t") , (17261, 0, "h") , (17262, 0, "o") , (17263, 0, "u") , (17264, 0, "t") , (17265, 0, " ") , (17266, 0, "d") , (17267, 0, "r") , (17268, 0, "o") , (17269, 0, "p") , (17270, 0, "p") , (17271, 0, "i") , (17272, 0, "n") , (17273, 0, "g") , (17274, 0, " ") , (17275, 0, "c") , (17276, 0, "o") , (17277, 0, "n") , (17278, 0, "t") , (17279, 0, "e") , (17280, 0, "n") , (17281, 0, "t") , ( 17202 , 249 , " /// Make a slice we can iterate from and steal from without dropping\n /// content. Its unsafe if:\n ///\n /// - The iterator isn't fully drained (then we might not drop contents)\n /// - The contents we iterate over aren't initialized\n ///" ) , (17253, 0, "d") , (17254, 0, "a") , (17255, 0, "t") , (17256, 0, "a") , (17257, 0, " ") , (17297, 14, "T") , (17298, 0, "h") , (17299, 0, "i") , (17300, 0, "s") , (17301, 0, " ") , (17302, 0, "i") , (17303, 0, "s") , (17304, 0, " ") , (17305, 0, "v") , (17306, 0, "e") , (17307, 0, "r") , (17308, 0, "y") , (17309, 0, " ") , (17310, 0, "u") , (17311, 0, "n") , (17312, 0, "s") , (17313, 0, "a") , (17314, 0, "f") , (17315, 0, "e") , (17316, 0, ":") , (17305, 5, "") , (17331, 4, "I") , (17332, 0, "f") , (17333, 0, " ") , (17334, 0, "t") , (17335, 0, "h") , (17336, 0, "e") , (17337, 0, " ") , (17366, 34, " ") , (17367, 0, "t") , (17368, 0, "h") , (17369, 0, "e") , (17370, 0, "n") , (17371, 0, " ") , (17372, 0, "t") , (17373, 0, "h") , (17374, 0, "e") , (17375, 0, " ") , (17372, 4, "r") , (17373, 0, "e") , (17374, 0, "a") , (17375, 0, "m") , (17375, 1, "") , (17374, 1, "") , (17374, 0, "m") , (17375, 0, "a") , (17376, 0, "i") , (17377, 0, "n") , (17378, 0, "i") , (17379, 0, "n") , (17380, 0, "g") , (17381, 0, " ") , (17382, 0, "i") , (17383, 0, "t") , (17384, 0, "e") , (17385, 0, "m") , (17386, 0, "s") , (17387, 0, " ") , (17388, 0, "a") , (17389, 0, "r") , (17390, 0, "e") , (17391, 0, " ") , (17392, 0, "f") , (17393, 0, "o") , (17394, 0, "r") , (17395, 0, "g") , (17396, 0, "o") , (17397, 0, "t") , (17398, 0, "t") , (17399, 0, "e") , (17400, 0, "n") , (17401, 0, " ") , (17402, 0, "(") , (17403, 0, "n") , (17404, 0, "o") , (17405, 0, "t") , (17406, 0, " ") , (17407, 0, "d") , (17408, 0, "r") , (17409, 0, "o") , (17410, 0, "p") , (17411, 0, "p") , (17412, 0, "e") , (17413, 0, "d") , (17414, 0, ")") , ( 17321 , 94 , " /// - If the iterator isn't fully drained then remaining items are forgotten\n /// (not dropped)" ) , (17388, 4, "w") , (17389, 0, "i") , (17390, 0, "l") , (17391, 0, "l") , (17392, 0, " ") , (17393, 0, "b") , (17394, 0, "e") , (17395, 0, " ") , ( 17321 , 108 , " /// - If the iterator isn't fully drained then remaining items will be\n /// forgotten (not dropped)" ) , (17417, 3, "t") , (17418, 0, "h") , (17419, 0, "e") , (17420, 0, "y") , (17421, 0, " ") , (17422, 0, "a") , (17423, 0, "r") , (17424, 0, "e") , (17425, 0, " ") , (17426, 0, "n") , (17427, 0, "o") , (17428, 0, "t") , (17438, 0, ".") , (17450, 47, "T") , (17451, 0, "h") , (17452, 0, "e") , (17453, 0, " ") , (17454, 0, "s") , (17455, 0, "l") , (17456, 0, "i") , (17457, 0, "c") , (17458, 0, "e") , (17459, 0, " ") , (17460, 0, "p") , (17461, 0, "a") , (17462, 0, "d") , (17462, 1, "") , (17462, 0, "s") , (17463, 0, "s") , (17464, 0, "e") , (17465, 0, "d") , (17466, 0, " ") , (17467, 0, "i") , (17468, 0, "n") , (17469, 0, " ") , (17470, 0, "h") , (17471, 0, "e") , (17472, 0, "r") , (17473, 0, "e") , (17474, 0, " ") , (17475, 0, "m") , (17476, 0, "u") , (17477, 0, "s") , (17478, 0, "t") , (17479, 0, " ") , (17480, 0, "b") , (17481, 0, "e") , (17482, 0, " ") , (17483, 0, "i") , (17484, 0, "n") , (17485, 0, "i") , (17486, 0, "t") , (17487, 0, "i") , (17488, 0, "a") , (17489, 0, "l") , (17490, 0, "i") , (17491, 0, "z") , (17492, 0, "e") , (17493, 0, "d") , (17494, 0, ".") , (17494, 1, "") , (17494, 0, " ") , (17495, 0, "o") , (17496, 0, "r") , (17497, 0, " ") , (17498, 0, "t") , (17499, 0, "h") , (17500, 0, "e") , (17501, 0, " ") , (17502, 0, "v") , (17503, 0, "a") , (17504, 0, "l") , (17505, 0, "u") , (17506, 0, "e") , (17507, 0, "s") , (17498, 10, "u") , (17499, 0, "n") , (17500, 0, "d") , (17501, 0, "e") , (17502, 0, "f") , (17503, 0, "i") , (17504, 0, "n") , (17505, 0, "e") , (17506, 0, "d") , (17507, 0, " ") , (17508, 0, "v") , (17509, 0, "a") , (17510, 0, "l") , (17511, 0, "u") , (17512, 0, "e") , (17513, 0, "s") , (17514, 0, " ") , (17514, 1, "") , (17507, 7, "") , (17507, 0, " ") , (17508, 0, "b") , (17509, 0, "e") , (17510, 0, "h") , (17511, 0, "a") , (17512, 0, "v") , (17513, 0, "i") , (17514, 0, "o") , (17515, 0, "u") , (17516, 0, "r") , (17517, 0, " ") , (17518, 0, "w") , (17519, 0, "i") , (17520, 0, "l") , (17521, 0, "l") , (17522, 0, " ") , (17523, 0, "h") , (17524, 0, "i") , (17525, 0, "t") , (17526, 0, " ") , (17527, 0, "u") , (17528, 0, "s") , (17529, 0, ".") , ( 17440 , 90 , " /// - The slice passed in here must be initialized or undefined behaviour\n /// will hit us." ) , (18768, 0, "T") , (18769, 0, "O") , (18770, 0, "D") , (18771, 0, "O") , (18772, 0, ":") , (18773, 0, " ") , (18809, 31, "") , (18809, 0, " ") , (18810, 0, "R") , (18811, 0, "e") , (18812, 0, "p") , (18813, 0, "l") , (18814, 0, "a") , (18815, 0, "c") , (18816, 0, "e") , (18817, 0, " ") , (18818, 0, "w") , (18819, 0, "h") , (18820, 0, "e") , (18821, 0, "n") , (18822, 0, " ") , (18823, 0, "a") , (18824, 0, "v") , (18825, 0, "a") , (18826, 0, "l") , (18827, 0, "i") , (18828, 0, "a") , (18829, 0, "b") , (18830, 0, "l") , (18831, 0, "e") , (18823, 9, "a") , (18824, 0, "v") , (18825, 0, "a") , (18826, 0, "i") , (18827, 0, "l") , (18828, 0, "a") , (18829, 0, "b") , (18830, 0, "l") , (18831, 0, "e") , (18832, 0, ".") , (18786, 11, "") , (18797, 0, ":") , (18798, 0, ":") , (18799, 0, "s") , (18800, 0, "l") , (18801, 0, "i") , (18802, 0, "c") , (18803, 0, "e") , (18804, 0, "_") , (18805, 0, "g") , (18806, 0, "e") , (18807, 0, "t") , (18808, 0, "_") , (18809, 0, "r") , (18810, 0, "e") , (18811, 0, "f") , (20373, 0, "\n ") , (20378, 0, "/") , (20379, 0, ";") , (20380, 0, " ") , (20380, 1, "") , (20379, 1, "") , (20379, 0, "/") , (20380, 0, " ") , (20381, 0, "T") , (20382, 0, "O") , (20383, 0, "D") , (20384, 0, "O") , (20385, 0, ":") , (20386, 0, " ") , (20387, 0, "R") , (20388, 0, "e") , (20389, 0, "m") , (20390, 0, "o") , (20391, 0, "v") , (20392, 0, "e") , (20393, 0, " ") , (20374, 20, "") , (20373, 1, "") , (31749, 43, "") , (31999, 71, "") , (35780, 71, "") , (37347, 115, "") , (37079, 18, "") , (37079, 3, "I") , (37080, 0, "t") , (37081, 0, "e") , (37082, 0, "m") , (37083, 5, "") , (37083, 0, " ") , (37084, 0, "d") , (37085, 0, "o") , (37086, 0, "e") , (37087, 0, "s") , (37088, 0, "n") , (37089, 0, "'") , (37090, 0, "t") , (37091, 0, " ") , (37092, 0, "n") , (37093, 0, "e") , (37094, 0, "c") , (37095, 0, "e") , (37096, 0, "s") , (37097, 0, "s") , (37098, 0, "a") , (37099, 0, "r") , (37100, 0, "i") , (37101, 0, "l") , (37102, 0, "y") , (37103, 0, " ") , (37104, 0, "i") , (37104, 1, "") , (37103, 1, "") , (37132, 1, "") , (37865, 84, "") , (37864, 1, "") , (41174, 210, "") , (44100, 90, "") , (46121, 102, "") , (46334, 101, "") , (46333, 1, "") , (47290, 173, "") , (48841, 168, "") , (49035, 53, "") , (49034, 1, "") , (49287, 76, "") , (50362, 64, "") , (52327, 30, "") , (52430, 30, "") , (52811, 30, "") , (1996, 0, "// ") , (1978, 3, "") , (39512, 0, "_") , (8981, 0, "m") , (8982, 0, "u") , (8983, 0, "t") , (8984, 0, " ") , (22182, 0, "m") , (22183, 0, "u") , (22184, 0, "t") , (22185, 0, " ") , (22185, 1, "") , (22182, 3, "") , (22197, 0, "_") , (22198, 0, "m") , (22199, 0, "u") , (22200, 0, "t") , (22197, 4, "") , (8984, 1, "") , (8981, 3, "") , (6222, 0, " nexts: [SkipEntry; 0],\n") , (6256, 0, "// ") , (6248, 1, "") , (6248, 0, "M") , (6249, 0, "A") , (6250, 0, "X") , (6248, 3, "MAX_HEIGHT") , (6248, 10, "MAX") , (6248, 3, "") , (6248, 0, "0") , (6256, 3, "") , (6222, 30, "") , (6222, 0, " nexts: [SkipEntry; 0],\n") , (6256, 0, "// ") , (6248, 1, "") , (6248, 0, "M") , (6249, 0, "A") , (6250, 0, "X") , (6248, 3, "MAX_HEIGHT") , (9985, 0, "S") , (9986, 0, "k") , (9987, 0, "i") , (9988, 0, "p") , (9985, 4, "SkipEntry") , (9994, 0, ":") , (9995, 0, ":") , (9996, 0, "n") , (9997, 0, "e") , (9996, 2, "new_null()") , (10006, 0, ";") , (10007, 0, " ") , (10008, 0, "M") , (10009, 0, "A") , (10010, 0, "X") , (10008, 3, "MAX_HEIGHT") , (19787, 0, "S") , (19788, 0, "k") , (19789, 0, "i") , (19790, 0, "p") , (19787, 4, "SkipEntry") , (19796, 0, ":") , (19797, 0, ":") , (19798, 0, "new_null()") , (19808, 0, ";") , (19809, 0, " ") , (19810, 0, "M") , (19811, 0, "X") , (19811, 1, "") , (19811, 0, "A") , (19812, 0, "X") , (19810, 3, "MAX_HEIGHT") , (9157, 0, "// ") , (9075, 0, "// ") , (9058, 0, "// ") , (9049, 0, "\n ") , (9058, 0, "s") , (9059, 0, "e") , (9060, 0, "l") , (9061, 0, "f") , (9062, 0, ".") , (9063, 0, "n") , (9064, 0, "e") , (9065, 0, "x") , (9063, 3, "nexts()") , (9070, 0, "[") , (9071, 0, ".") , (9072, 0, ".") , (9073, 0, "]") , (9073, 1, "") , (9072, 1, "") , (9071, 1, "") , (9070, 1, "") , (9069, 1, "") , (9068, 1, "") , (9068, 0, "[") , (9069, 0, ".") , (9070, 0, ".") , (9071, 0, "]") , (9058, 0, "#") , (9058, 1, "") , (9058, 0, "$") , (9058, 1, "") , (9058, 0, "&") , (9367, 0, "// ") , (9277, 0, "// ") , (9260, 0, "// ") , (9251, 0, "\n ") , (9260, 0, "&self.nexts[..]") , (9261, 0, "m") , (9262, 0, "u") , (9263, 0, "t") , (9264, 0, " ") , (9264, 1, "") , (9261, 3, "") , (9260, 15, "") , (9251, 9, "") , (9373, 3, "") , (9280, 3, "") , (9260, 3, "") , (9058, 1, "") , (9058, 0, "$") , (9058, 1, "") , (9058, 0, "#") , (9058, 1, "") , (9068, 4, "") , (9068, 0, "()") , (9070, 0, "[..]") , (9070, 4, "") , (9063, 7, "nex") , (9049, 17, "") , (9163, 3, "") , (9078, 3, "") , (9058, 3, "") , (19810, 10, "MAX") , (19811, 2, "") , (19811, 0, "X") , (19809, 3, "") , (19808, 1, "") , (19798, 10, "") , (19796, 2, "") , (19787, 9, "Skip") , (19787, 4, "") , (10008, 10, "MAX") , (10007, 4, "") , (10006, 1, "") , (9996, 10, "ne") , (9994, 4, "") , (9985, 9, "Skip") , (9985, 4, "") , (6248, 10, "MAX") , (6248, 3, "") , (6248, 0, "0") , (6256, 3, "") , (6222, 30, "") , (39512, 1, "") , (39512, 0, "_") , (18382, 0, "u") , (18383, 0, "n") , (18384, 0, "c") , (18385, 0, "k") , (18386, 0, "e") , (18387, 0, "d") , (18388, 0, "l") , (18382, 7, "s") , (18383, 0, "t") , (18384, 0, "d") , (18385, 0, ":") , (18386, 0, ":") , (18387, 0, "i") , (18388, 0, "n") , (18389, 0, "t") , (18390, 0, "r") , (18387, 4, "intrinsics") , (18397, 0, ":") , (18398, 0, ":") , (18399, 0, "u") , (18400, 0, "n") , (18401, 0, "c") , (18402, 0, "h") , (18399, 4, "unchecked_sub(x: T, y: T)") , (18413, 12, "") , (18431, 1, "") , (18430, 1, "") , (18430, 0, ",") , (18382, 30, "u") , (18383, 0, "s") , (18384, 0, "i") , (18385, 0, "z") , (18386, 0, "e") , (18387, 0, ":") , (18388, 0, ":") , (18382, 7, "") , (39511, 1, "") , (18401, 0, " -") , (18400, 1, "") , (52842, 0, "\n ") , (52847, 0, "\n ") , (52843, 4, "") , ( 52848 , 0 , "pub fn insert_at(&mut self, mut userpos: usize, contents: &[C::Item]) where C::Item: Copy" ) , (52864, 0, "_") , (52865, 0, "s") , (52866, 0, "l") , (52867, 0, "i") , (52868, 0, "c") , (52869, 0, "e") , (52943, 0, " ") , (52944, 0, " ") , (52944, 1, "") , (52944, 0, "{") , (52945, 0, "\n ") , (52954, 0, "\n ") , (52946, 8, "") , (52947, 8, " }") , (52946, 0, " ") , (52946, 8, "") , (51361, 0, "<") , (51362, 0, "I") , (51363, 0, ">") , (51406, 10, "I") , (51428, 0, ",") , (51429, 0, " ") , (51430, 0, " I: ExactSizeIterator") , (51415, 16, "") , (52397, 24, "c") , (51723, 24, "c") , (52375, 0, "o") , (51724, 0, "o") , (52377, 0, "n") , (51725, 0, "n") , (52379, 0, "t") , (51726, 0, "t") , (52381, 0, "e") , (51727, 0, "e") , (52383, 0, "n") , (51728, 0, "n") , (52385, 0, "t") , (51729, 0, "t") , (52387, 0, "s") , (51730, 0, "s") , (52381, 8, "contents.iter().copied()") , (51723, 8, "contents.iter().copied()") , (51415, 0, "C::Item: Copy, ") , (51415, 16, "") , (52397, 24, "contents") , (51723, 24, "contents") , (52929, 0, " ") , (52937, 0, "s") , (52938, 0, "e") , (52939, 0, "l") , (52940, 0, "f") , (52941, 0, ".") , (52942, 0, "i") , (52943, 0, "n") , (52944, 0, "s") , (52945, 0, "e") , (52946, 0, "r") , (52947, 0, "t") , ( 52942 , 6 , "insert_at_iter(cursor: &mut Cursor, contents: &mut I, notify: &mut Notify)" ) , (52942, 77, "insert") , (52948, 0, "_") , (52949, 0, "a") , (52950, 0, "t") , (52951, 0, "(") , (52952, 0, "u") , (52953, 0, "s") , (52954, 0, "e") , (52955, 0, "r") , (52956, 0, "p") , (52957, 0, "o") , (52958, 0, "s") , (52959, 0, ",") , (52960, 0, " ") , (52864, 4, "") , (52957, 0, "c") , (52958, 0, "o") , (52959, 0, "n") , (52960, 0, "t") , (52961, 0, "e") , (52962, 0, "n") , (52963, 0, "t") , (52964, 0, "s") , (52965, 0, ".") , (52966, 0, "i") , (52967, 0, "t") , (52968, 0, "e") , (52969, 0, "r") , (52970, 0, "(") , (52971, 0, ")") , (52972, 0, ".") , (52973, 0, "c") , (52974, 0, "o") , (52975, 0, "p") , (52976, 0, "i") , (52977, 0, "e") , (52978, 0, "d") , (52979, 0, "(") , (52980, 0, ")") , (52981, 0, ")") , (52982, 0, ";") , (52982, 1, "") , (20503, 0, ")") , (20504, 0, "s") , (20505, 0, "l") , (20506, 0, "i") , (20506, 1, "") , (20505, 1, "") , (20504, 1, "") , (20503, 1, "") , (20502, 1, "") , (20502, 0, "_") , (20502, 1, "") , (20502, 0, "t") , (20503, 0, "_") , (20504, 0, "s") , (20505, 0, "l") , (20506, 0, "i") , (20507, 0, "c") , (20508, 0, "e") , (51402, 0, "n") , (51402, 1, "") , (51402, 0, "m") , (51403, 0, "u") , (51404, 0, "t") , (51405, 0, " ") , (51504, 0, "\n ") , (51513, 0, "l") , (51514, 0, "e") , (51515, 0, "t") , (51516, 0, " ") , (51517, 0, "n") , (51518, 0, "u") , (51519, 0, "m") , (51520, 0, "_") , (51521, 0, "i") , (51522, 0, "n") , (51523, 0, "s") , (51524, 0, "e") , (51525, 0, "r") , (51526, 0, "t") , (51517, 10, "num_inserted_items") , (51535, 0, " ") , (51536, 0, "=") , (51537, 0, " ") , (51538, 0, "c") , (51539, 0, "o") , (51540, 0, "n") , (51541, 0, "t") , (51542, 0, "e") , (51543, 0, "n") , (51544, 0, "t") , (51545, 0, "s") , (51546, 0, ".") , (51547, 0, "l") , (51548, 0, "e") , (51549, 0, "n") , (51550, 0, "(") , (51551, 0, ")") , (51552, 0, ";") , (52742, 14, "n") , (51875, 14, "n") , (52730, 0, "u") , (51876, 0, "u") , (52732, 0, "m") , (51877, 0, "m") , (52734, 0, "_") , (51878, 0, "_") , (52732, 4, "num_inserted_items") , (51875, 4, "num_inserted_items") , (52746, 18, "num_") , (51875, 18, "num_") , (52732, 4, "contents.len()") , (51875, 4, "contents.len()") , (52742, 14, "num_") , (51875, 14, "num_") , (52732, 4, "num_inserted_items") , (51875, 4, "num_inserted_items") , (10256, 0, "\n ") , (10265, 0, "p") , (10266, 0, "t") , (10267, 0, "r") , (10268, 0, ":") , (10269, 0, ":") , (10270, 0, "d") , (10271, 0, "r") , (10272, 0, "o") , (10273, 0, "p") , (10274, 0, "_") , (10270, 5, "drop_in_place(to_drop: *mut T)") , (10284, 15, "p") , (10286, 0, ";") , (10287, 0, " ") , (10288, 0, "/") , (10289, 0, "/") , (10290, 0, " ") , (10291, 0, "W") , (10292, 0, "e") , (10293, 0, "'") , (10294, 0, "l") , (10295, 0, "l") , (10296, 0, " ") , (10297, 0, "u") , (10298, 0, "s") , (10299, 0, "e") , (10300, 0, " ") , (10291, 10, "") , (10291, 0, "W") , (10292, 0, "e") , (10293, 0, " ") , (10294, 0, "c") , (10295, 0, "o") , (10296, 0, "u") , (10297, 0, "l") , (10298, 0, "d") , (10299, 0, " ") , (10300, 0, "j") , (10301, 0, "u") , (10302, 0, "s") , (10303, 0, "t") , (10304, 0, " ") , (10305, 0, "i") , (10306, 0, "m") , (10307, 0, "p") , (10308, 0, "e") , (10309, 0, "l") , (10310, 0, "e") , (10311, 0, "m") , (10312, 0, "n") , (10313, 0, "t") , (10305, 9, "i") , (10306, 0, "m") , (10307, 0, "p") , (10308, 0, "l") , (10309, 0, "e") , (10310, 0, "m") , (10311, 0, "e") , (10312, 0, "n") , (10313, 0, "t") , (10314, 0, " ") , (10315, 0, "d") , (10316, 0, "r") , (10317, 0, "o") , (10318, 0, "p") , (10319, 0, " ") , (10320, 0, "h") , (10321, 0, "e") , (10322, 0, "r") , (10323, 0, "e") , (10324, 0, ",") , (10325, 0, " ") , (10326, 0, "b") , (10327, 0, "u") , (10328, 0, "t") , (10329, 0, " ") , (10330, 0, "t") , (10331, 0, "h") , (10332, 0, "i") , (10333, 0, "s") , (10334, 0, " ") , (10335, 0, "i") , (10336, 0, " ") , (10336, 1, "") , (10336, 0, "s") , (10337, 0, " ") , (10338, 0, "c") , (10339, 0, "l") , (10340, 0, "e") , (10341, 0, "a") , (10342, 0, "n") , (10343, 0, "e") , (10344, 0, "r") , (10345, 0, ".") , (11087, 0, "\n") , (11088, 0, "\n") , (11089, 0, "i") , (11090, 0, "m") , (11091, 0, "p") , (11092, 0, "l") , (11093, 0, " ") , (11093, 1, "") , (11093, 0, "<") , (11094, 0, "C") , (11095, 0, ":") , (11096, 0, " ") , (11097, 0, "L") , (11098, 0, "i") , (11099, 0, "s") , (11100, 0, "t") , (11097, 4, "ListConfig") , (11107, 0, ">") , (11108, 0, " ") , (11109, 0, "D") , (11110, 0, "r") , (11111, 0, "o") , (11112, 0, "p") , (11113, 0, " ") , (11114, 0, "f") , (11115, 0, "o") , (11116, 0, "r") , (11117, 0, " ") , (11118, 0, "N") , (11119, 0, "o") , (11120, 0, "d") , (11121, 0, "e") , (11122, 0, "<") , (11123, 0, "C") , (11124, 0, ">") , (11125, 0, " ") , (11126, 0, "{") , (11127, 0, "\n ") , (11132, 0, "\n ") , (11128, 4, "") , (11129, 4, "}") , (11128, 0, " ") , (11132, 0, "f") , (11133, 0, "n") , (11134, 0, " ") , (11135, 0, "D") , (11135, 1, "") , (11135, 0, "d") , (11136, 0, "r") , (11137, 0, "o") , (11138, 0, "p") , (11139, 0, "(") , (11140, 0, "&") , (11141, 0, "m") , (11142, 0, "u") , (11143, 0, "t") , (11144, 0, " ") , (11145, 0, "s") , (11146, 0, "e") , (11147, 0, "l") , (11148, 0, "f") , (11149, 0, ")") , (11150, 0, " ") , (11151, 0, "{") , (11152, 0, "\n ") , (11153, 8, " }") , (11152, 0, "\n ") , (11161, 0, "self.nexts.as_ptr(), self.height as usize") , (11161, 41, "") , (11161, 0, "s") , (11162, 0, "e") , (11163, 0, "l") , (11164, 0, "f") , (11165, 0, ".") , (11166, 0, "i") , (11167, 0, "t") , (11168, 0, "e") , (11169, 0, "m") , (11170, 0, "s") , (11152, 0, "\n ") , (11161, 0, "f") , (11162, 0, "o") , (11163, 0, "r") , (11164, 0, " ") , (11165, 0, "l") , (11166, 0, "e") , (11167, 0, "t") , (11168, 0, " ") , (11168, 1, "") , (11167, 1, "") , (11166, 1, "") , (11165, 1, "") , (11165, 0, "i") , (11166, 0, " ") , (11167, 0, "i") , (11168, 0, "n") , (11169, 0, " ") , (11170, 0, "0") , (11171, 0, ".") , (11172, 0, ".") , (11173, 0, "s") , (11174, 0, "e") , (11175, 0, "l") , (11176, 0, "f") , (11177, 0, ".") , (11178, 0, "l") , (11179, 0, "e") , (11179, 1, "") , (11178, 1, "") , (11178, 0, "n") , (11179, 0, "u") , (11180, 0, "m") , (11178, 3, "num_items") , (11187, 0, " ") , (11187, 1, "") , (11187, 0, " ") , (11188, 0, "{") , (11198, 0, " ") , (11212, 0, "\n ") , (11213, 12, " }") , (11212, 0, "[") , (11213, 0, "i") , (11214, 0, "]") , (11215, 0, ".") , (11152, 0, "\n ") , (11161, 0, "i") , (11162, 0, "f") , (11163, 0, " ") , (11164, 0, "n") , (11165, 0, "e") , (11166, 0, "e") , (11164, 3, "n") , (11165, 0, "e") , (11165, 1, "") , (11164, 1, "") , (11164, 0, "m") , (11165, 0, "e") , (11166, 0, "m") , (11167, 0, ":") , (11168, 0, ":") , (11169, 0, "n") , (11170, 0, "e") , (11171, 0, "e") , (11172, 0, "d") , (11169, 4, "needs_drop()") , (11179, 0, "<") , (11180, 0, "C") , (11181, 0, ":") , (11182, 0, ":") , (11183, 0, "I") , (11184, 0, "t") , (11185, 0, "e") , (11186, 0, "m") , (11187, 0, ">") , (11179, 0, ":") , (11180, 0, ":") , (11192, 0, " ") , (11193, 0, "{") , (11268, 0, "\n ") , (11269, 8, " }") , (11269, 4, " ") , (11259, 8, " ") , (11232, 12, " ") , (11195, 8, " ") , (11265, 1, "") , (11252, 0, " ") , (11252, 0, "p") , (11253, 0, "t") , (11254, 0, "r") , (11255, 0, ":") , (11256, 0, ":") , (11257, 0, "drop_in_place(to_drop: *mut T)") , (11271, 15, "") , (11271, 1, "") , (11271, 1, "") , (11284, 0, ")") , (11271, 0, "&") , (11285, 0, " ") , (11286, 0, "a") , (11287, 0, "s") , (11288, 0, " ") , (11289, 0, "*") , (11290, 0, "m") , (11291, 0, "u") , (11292, 0, "t") , (11293, 0, " ") , (11294, 0, "_") , (11296, 0, ";") , (11272, 0, "m") , (11273, 0, "u") , (11274, 0, "t") , (11275, 0, " ") , (11271, 5, "") , (11284, 0, ".") , (11285, 0, "a") , (11286, 0, "s") , (11287, 0, "_") , (11288, 0, "m") , (11289, 0, "u") , (11285, 5, "as_mut_ptr") , (11295, 0, "(") , (11296, 0, ")") , (11297, 9, "") , (11297, 1, "") , (11153, 41, "") , (11152, 1, "") , (11272, 9, "") , (11271, 1, "") , (11258, 12, " ") , (11194, 16, " ") , (11153, 12, " ") , (11187, 0, " ") , (11188, 0, "a") , (11189, 0, "s") , (11190, 0, " ") , (11191, 0, "u") , (11192, 0, "s") , (11193, 0, "i") , (11194, 0, "z") , (11195, 0, "e") , (11211, 0, "u") , (11212, 0, "n") , (11213, 0, "s") , (11214, 0, "a") , (11215, 0, "f") , (11216, 0, "e") , (11217, 0, " ") , (11218, 0, "{") , (11219, 0, " ") , (11267, 0, " ") , (11268, 0, "}") , (11198, 0, "\n ") , (11211, 0, "/") , (11212, 0, "/") , (11213, 0, " ") , (11214, 0, "C") , (11215, 0, "o") , (11216, 0, "u") , (11217, 0, "l") , (11218, 0, "d") , (11219, 0, " ") , (11220, 0, "i") , (11221, 0, "n") , (11222, 0, "s") , (11223, 0, "t") , (11224, 0, "e") , (11225, 0, "a") , (11226, 0, "d") , (11227, 0, " ") , (11228, 0, "c") , (11229, 0, "a") , (11230, 0, "l") , (11231, 0, "l") , (11232, 0, " ") , (11233, 0, "a") , (11234, 0, "s") , (11235, 0, "s") , (11236, 0, "u") , (11237, 0, "m") , (11238, 0, "e") , (11239, 0, "_") , (11240, 0, "i") , (11241, 0, "n") , (11242, 0, "i") , (11243, 0, "t") , (11244, 0, "(") , (11245, 0, ")") , (11246, 0, " ") , (11247, 0, "o") , (11248, 0, "n") , (11249, 0, " ") , (11250, 0, "e") , (11251, 0, "a") , (11252, 0, "c") , (11253, 0, "h") , (11254, 0, " ") , (11255, 0, "i") , (11256, 0, "t") , (11257, 0, "e") , (11258, 0, "m") , (11259, 0, " ") , (11260, 0, "b") , (11261, 0, "u") , (11262, 0, "t") , (11263, 0, " ") , (11264, 0, "I") , (11265, 0, " ") , (11266, 0, "t") , (11267, 0, "h") , (11268, 0, "i") , (11269, 0, "n") , (11270, 0, "k") , (11271, 0, " ") , (11272, 0, "t") , (11273, 0, "h") , (11274, 0, "i") , (11275, 0, "s") , (11276, 0, " ") , (11277, 0, "i") , (11278, 0, "s") , (11279, 0, " ") , (11264, 16, "t") , (11265, 0, "h") , (11266, 0, "i") , (11267, 0, "s") , (11268, 0, " ") , (11269, 0, "i") , (11270, 0, "s") , (11271, 0, " ") , (11272, 0, "f") , (11273, 0, "r") , (11274, 0, "i") , (11275, 0, "e") , (11276, 0, "n") , (11277, 0, "d") , (11278, 0, "l") , (11279, 0, "i") , (11280, 0, "e") , (11281, 0, "r") , (11282, 0, " ") , (11283, 0, "t") , (11284, 0, "o") , (11285, 0, " ") , (11286, 0, "t") , (11287, 0, "h") , (11288, 0, "e") , (11289, 0, " ") , (11290, 0, "o") , (11291, 0, "p") , (11292, 0, "t") , (11293, 0, "i") , (11294, 0, "m") , (11295, 0, "i") , (11296, 0, "z") , (11297, 0, "e") , (11298, 0, "r") , (11299, 0, ".") , ( 11199 , 101 , " // Could instead call assume_init() on each item but this is\n // friendlier to the optimizer." ) , (51130, 20, " where I: ExactSizeIterator") , (51119, 10, "I") , (51041, 0, "<") , (51042, 0, "T") , (51043, 0, ">") , (51043, 1, "") , (51042, 1, "") , (51042, 0, "I") , (51043, 0, ">") , (51042, 2, "") , (51042, 0, "T>") , (51041, 3, "") , (51119, 1, "&[C::Item]") , (51130, 41, " where C::Item: Copy") , ( 51152 , 0 , "\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {" ) , (51152, 133, "") , ( 51152 , 0 , "\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {" ) , (51041, 0, "_") , (51042, 0, "s") , (51043, 0, "l") , (51044, 0, "i") , (51045, 0, "c") , (51046, 0, "e") , (51158, 0, "\n ") , (51159, 8, " }") , (51019, 145, "") , (51752, 0, "\n ") , (51757, 0, "\n ") , (51753, 4, "") , ( 51758 , 0 , "\n pub fn replace_at_slice(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n }" ) , (51754, 4, "") , (51753, 1, "") , (51130, 20, " where I: ExactSizeIterator") , (51040, 0, "<") , (51041, 1, "") , (51040, 1, "") , (51040, 0, "t") , (51041, 0, "<") , (51042, 0, "I") , (51043, 0, ">") , (51122, 10, "I") , (51461, 16, "") , (51104, 0, "m") , (51105, 0, "u") , (51106, 0, "t") , (51107, 0, " ") , (51377, 0, "\n ") , (51386, 0, "l") , (51387, 0, "e") , (51388, 0, "t") , (51389, 0, " ") , (51390, 0, "n") , (51391, 0, "u") , (51392, 0, "m") , (51393, 0, "_") , (51394, 0, "i") , (51395, 0, "n") , (51396, 0, "s") , (51397, 0, "e") , (51398, 0, "r") , (51399, 0, "t") , (51400, 0, "e") , (51401, 0, "d") , (51402, 0, "_") , (51403, 0, "i") , (51404, 0, "t") , (51405, 0, "e") , (51390, 16, "num_inserted_items") , (51408, 0, " ") , (51409, 0, "=") , (51410, 0, " ") , (51411, 0, "i") , (51412, 0, "n") , (51413, 0, "s") , (51414, 0, "e") , (51415, 0, "r") , (51416, 0, "t") , (51411, 6, "inserted_content") , (51427, 0, ".") , (51428, 0, "l") , (51429, 0, "e") , (51430, 0, "n") , (51431, 0, "(") , (51432, 0, ")") , (51433, 0, ";") , (51680, 22, "n") , (51681, 0, "u") , (51682, 0, "m") , (51683, 0, "_") , (51680, 4, "num_inserted_items") , (51544, 0, "\n ") , (51553, 0, "\n ") , (51545, 8, "") , ( 51554 , 0 , " if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n" ) , (51546, 16, " ") , (51545, 208, "") , (51544, 1, "") , (51948, 0, "\n ") , (51957, 0, "s") , (51958, 0, "e") , (51959, 0, "l") , (51960, 0, "f") , (51961, 0, ".") , (51962, 0, "r") , (51963, 0, "e") , (51964, 0, "p") , (51965, 0, "l") , ( 51962 , 4 , "replace_at(mut start_userpos: usize, removed_items: usize, mut inserted_content: I)" ) , (51973, 24, "s") , (51974, 0, "t") , (51975, 0, "a") , (51976, 0, "r") , (51977, 0, "t") , (51978, 0, "_") , (51979, 0, "u") , (51980, 0, "s") , (51981, 0, "e") , (51982, 0, "r") , (51983, 0, "p") , (51984, 0, "o") , (51985, 0, "s") , (51988, 20, "r") , (51989, 0, "e") , (51990, 0, "m") , (51991, 0, "o") , (51992, 0, "v") , (51993, 0, "e") , (51994, 0, "d") , (51995, 0, "_") , (51996, 0, "i") , (51997, 0, "t") , (51998, 0, "e") , (51999, 0, "m") , (52000, 0, "s") , (52003, 23, "i") , (52004, 0, "n") , (52005, 0, "s") , (52006, 0, "e") , (52007, 0, "r") , (52008, 0, "t") , (52009, 0, "e") , (52010, 0, "d") , (52011, 0, "_") , (52012, 0, "c") , (52013, 0, "o") , (52014, 0, "n") , (52015, 0, "t") , (52016, 0, "e") , (52017, 0, "n") , (52018, 0, "t") , (52019, 0, ".") , (52020, 0, "s") , (52021, 0, "l") , (52022, 0, "i") , (52023, 0, "c") , (52020, 4, "i") , (52021, 0, "t") , (52022, 0, "e") , (52023, 0, "r") , (52024, 0, "(") , (52025, 1, ")") , (52026, 0, ".") , (52027, 0, "c") , (52028, 0, "o") , (52029, 0, "p") , (52030, 0, "i") , (52031, 0, "e") , (52032, 0, "d") , (52033, 0, "(") , (52034, 0, ")") , (52035, 0, ")") , (52036, 0, ";") , (51849, 3, "") , (51849, 1, "") , (51849, 0, "mut ") , (52020, 17, "slic)") , (52003, 21, "mut inserted_content: I") , (51988, 13, "removed_items: usize") , (51973, 13, "mut start_userpos: usize") , (51962, 83, "repl") , (51948, 18, "") , (51544, 0, "\n") , ( 51545 , 0 , "\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n" ) , (51546, 8, " ") , (51554, 207, "") , (51545, 9, "") , (51545, 0, " ") , (51544, 9, "") , (51680, 18, "num_") , (51680, 4, "inserted_content.len()") , (51427, 7, "") , (51411, 16, "insert") , (51410, 7, "") , (51408, 2, "") , (51390, 18, "num_inserted_ite") , (51389, 17, "") , (51377, 12, "") , (51107, 1, "") , (51104, 3, "") , (51461, 0, ".iter().copied()") , (51122, 1, "&[C::Item]") , (51040, 4, "") , (51040, 0, "") , (51040, 0, "<") , (51040, 2, "") , (51040, 0, "t") , (51122, 10, "I") , (51461, 16, "") , (51104, 0, "mut") , (51107, 0, " ") , (51377, 0, "\n let") , (51389, 0, " num_inserted_ite") , (51390, 16, "num_inserted_items") , (51408, 0, " =") , (51410, 0, " insert") , (51411, 6, "inserted_content") , (51427, 0, ".len();") , (51680, 22, "num_") , (51680, 4, "num_inserted_items") , (51544, 0, "\n ") , (51553, 0, "\n ") , (51545, 8, "") , ( 51554 , 0 , " if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n" ) , (51546, 16, " ") , (51545, 208, "") , (51544, 1, "") , (51948, 0, "\n self.repl") , ( 51962 , 4 , "replace_at(mut start_userpos: usize, removed_items: usize, mut inserted_content: I)" ) , (52021, 23, "inserted_content.slic") , (51999, 20, "removed_items") , (51973, 24, "start_userpos") , (52020, 5, "iter().copied());") , (51849, 4, "") , (51849, 0, "mut ") , (51849, 4, "") , (10265, 0, "// ") , (10265, 3, "") , ( 10257 , 43487 , " dealloc(p as *mut u8, Self::layout_with_height((*p).height));\n }\n\n fn content_slice(&self) -> &[C::Item] {\n let slice = &self.items[..self.num_items as usize];\n unsafe { maybeinit_slice_get_ref(slice) }\n }\n\n // The height is at least 1, so this is always valid.\n fn first_skip_entry<'a>(&self) -> &'a SkipEntry {\n unsafe { &*self.nexts.as_ptr() }\n }\n\n fn first_skip_entry_mut<'a>(&mut self) -> &'a mut SkipEntry {\n unsafe { &mut *self.nexts.as_mut_ptr() }\n }\n\n // TODO: Rename to len() ?\n fn get_userlen(&self) -> usize {\n self.first_skip_entry().skip_usersize\n }\n \n fn get_next_ptr(&self) -> *mut Node {\n self.first_skip_entry().node\n }\n}\n\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone)]\npub struct Cursor {\n // TODO: Add a phantom lifetime reference to the skip list root for safety.\n\n\n /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///\n /// This field isn't strictly necessary - earlier versions tacked this on to\n /// the last item in entries... I'm still not sure the cleanest way to do\n /// this.\n userpos: usize,\n\n /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used to resolve that ambiguity.\n local_index: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n}\n\nimpl Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n self.local_index = 0;\n\n next\n }\n }\n\n fn is_at_node_end(&self) -> bool {\n self.local_index == unsafe { (*self.here_ptr()).num_items } as usize\n }\n\n fn advance_item(&mut self, height: u8) {\n if self.is_at_node_end() { self.advance_node(); }\n let usersize = C::get_usersize(unsafe { self.current_item() });\n\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }\n self.userpos += usersize;\n self.local_index += 1;\n }\n\n fn advance_by_items(&mut self, num: usize, height: u8) {\n for _ in 0..num { self.advance_item(height); }\n }\n\n fn move_to_item_start(&mut self, height: u8, offset: usize) {\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize -= offset;\n }\n self.userpos -= offset;\n }\n\n unsafe fn current_item(&mut self) -> &C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &*(node.items[self.local_index].as_ptr())\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice.\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos\n || self.local_index != other.local_index {return false; }\n\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl fmt::Debug for Cursor {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"Cursor\")\n .field(\"userpos\", &self.userpos)\n .field(\"local_index\", &self.local_index)\n .finish()\n }\n}\n\n// None of the rust builtins give me what I want, which is a copy-free iterator\n// to owned items in a MaybeUninit array. Eh; its easy enough to make my own.\nstruct UninitOwnedIter<'a, C: ListConfig> {\n // Based on the core slice IterMut implementation.\n ptr: NonNull,\n end: *mut C::Item,\n _marker: PhantomData<&'a SkipList>\n}\n\nimpl<'a, C: ListConfig> UninitOwnedIter<'a, C> {\n /// Make a slice we can iterate from and steal data from without dropping\n /// content. This is unsafe:\n ///\n /// - If the iterator isn't fully drained then remaining items will be\n /// forgotten (they are not dropped).\n /// - The slice passed in here must be initialized or undefined behaviour\n /// will hit us.\n ///\n /// After iterating, the contents are uninit memory.\n unsafe fn from_slice(slice: &[MaybeUninit]) -> Self {\n let ptr = slice.as_ptr() as *mut C::Item; // Safe.\n let end = ptr.add(slice.len());\n\n UninitOwnedIter {\n ptr: NonNull::new_unchecked(ptr),\n end,\n _marker: PhantomData\n }\n }\n}\n\nimpl<'a, C: ListConfig> Iterator for UninitOwnedIter<'a, C> {\n type Item = C::Item;\n\n fn next(&mut self) -> Option {\n if self.ptr.as_ptr() == self.end {\n None\n } else {\n let ptr = self.ptr;\n self.ptr = unsafe { NonNull::new_unchecked(self.ptr.as_ptr().offset(1)) };\n Some(unsafe { ptr.as_ptr().read() })\n }\n }\n\n fn size_hint(&self) -> (usize, Option) {\n let size = (self.end as usize - self.ptr.as_ptr() as usize) / mem::size_of::();\n (size, Some(size))\n }\n}\n\n// TODO: Stolen from MaybeUninit::uninit_array. Replace with the real uninit_array when stable.\n#[inline(always)]\nfn uninit_items_array() -> [MaybeUninit; NODE_NUM_ITEMS] {\n unsafe { MaybeUninit::<[MaybeUninit; NODE_NUM_ITEMS]>::uninit().assume_init() }\n}\n\n// TODO: Stolen from MaybeUninit::slice_get_ref. Replace when available.\n#[inline(always)]\nunsafe fn maybeinit_slice_get_ref(slice: &[MaybeUninit]) -> &[T] {\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n &*(slice as *const [MaybeUninit] as *const [T])\n}\n\n\nimpl SkipList {\n pub fn new() -> Self {\n SkipList:: {\n num_items: 0,\n num_usercount: 0,\n rng: None,\n head: Node {\n items: uninit_items_array(),\n num_items: 0,\n height: 1, // Stores max height of list nodes\n parent: ptr::null_mut(),\n nexts: [],\n },\n _nexts_padding: [SkipEntry::new_null(); MAX_HEIGHT],\n }\n }\n\n pub fn init_rng_from_seed(&mut self, seed: u64) {\n self.rng = Some(SmallRng::seed_from_u64(seed));\n }\n\n fn get_rng(&mut self) -> &mut SmallRng {\n // I'm sure there's a nicer way to implement this.\n if self.rng.is_none() {\n // We'll use a stable RNG in debug mode so the tests are stable.\n if cfg!(debug_assertions) {\n self.init_rng_from_seed(123);\n } else {\n self.rng = Some(SmallRng::from_entropy());\n }\n }\n self.rng.as_mut().unwrap()\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n let mut rope = Self::new();\n rope.insert_at(0, s);\n rope\n }\n\n pub fn get_userlen(&self) -> usize {\n self.num_usercount\n }\n\n fn iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn len_items(&self) -> usize {\n self.num_items as usize\n }\n\n fn heads_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.head.nexts.as_mut_ptr(), self._nexts_padding.len())\n }\n }\n\n fn is_head(&self, node: *const Node) -> bool {\n node as *const _ == &self.head as *const _\n }\n\n /// Walk the list and validate internal constraints. This is used for\n /// testing the structure itself, and should generally not be called by\n /// users.\n pub fn check(&self) {\n // #[cfg(test)]\n {\n // self.print();\n assert!(self.head.height >= 1);\n assert!(self.head.height <= MAX_HEIGHT_U8);\n\n let head_ptr = &self.head as *const _ as *mut _;\n // let skip_over = self.get_top_entry();\n // println!(\"Skip over skip chars {}, num bytes {}\", skip_over.skip_items, self.num_bytes);\n\n let mut prev: [*const Node; MAX_HEIGHT] = [ptr::null(); MAX_HEIGHT];\n\n let mut iter = [SkipEntry {\n // Bleh.\n node: head_ptr,\n // The skips will store the total distance travelled since the\n // start of this traversal at each height. All the entries above\n // head.height are ignored though.\n skip_usersize: 0\n }; MAX_HEIGHT];\n\n let mut num_items = 0;\n let mut num_usercount = 0;\n\n for (_i, n) in self.iter().enumerate() {\n // println!(\"visiting {:?}\", n.as_str());\n if !self.is_head(n) { assert!(n.num_items > 0); }\n assert!(n.height <= MAX_HEIGHT_U8);\n assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n\n // Make sure the number of items matches the count\n let local_count = C::userlen_of_slice(n.content_slice());\n assert_eq!(local_count, n.get_userlen());\n\n let expect_parent = if self.is_head(n) {\n ptr::null() // The head's parent is null\n } else if n.height == self.head.height {\n &self.head as *const _ // Max height nodes point back to head\n } else {\n prev[n.height as usize]\n };\n\n // println!(\"visiting {} {:?}\", i, n as *const _);\n // dbg!(n as *const _);\n // dbg!((n as *const _, (*n).height));\n // dbg!(n.parent);\n // dbg!(&self.head as *const _);\n\n assert_eq!(n.parent as *const _, expect_parent, \"invalid parent\");\n \n for (i, entry) in iter[0..n.height as usize].iter_mut().enumerate() {\n assert_eq!(entry.node as *const _, n as *const _);\n assert_eq!(entry.skip_usersize, num_usercount);\n\n // println!(\"replacing entry {:?} with {:?}\", entry, n.nexts()[i].node);\n prev[i] = n;\n entry.node = n.nexts()[i].node;\n entry.skip_usersize += n.nexts()[i].skip_usersize;\n }\n\n num_items += n.num_items as usize;\n num_usercount += n.get_userlen();\n\n // Check the value returned by the iterator functions matches.\n let (mut normal_iter, local_offset) = self.iter_at_userpos(num_usercount);\n assert_eq!(local_offset, 0);\n\n // Dirty hack. If n has 0-sized elements at the end, the normal\n // cursor won't be at the end...\n while normal_iter.here_ptr() != n as *const _ as *mut _ {\n normal_iter.advance_node();\n }\n normal_iter.local_index = n.num_items as usize;\n let node_iter = unsafe { self.iter_at_node(n, n.get_userlen(), n.num_items as usize) };\n assert_eq!(normal_iter, node_iter);\n }\n\n for entry in iter[0..self.head.height as usize].iter() {\n // println!(\"{:?}\", entry);\n assert!(entry.node.is_null());\n assert_eq!(entry.skip_usersize, num_usercount);\n }\n \n // println!(\"self bytes: {}, count bytes {}\", self.num_bytes, num_bytes);\n assert_eq!(self.num_items, num_items);\n assert_eq!(self.get_userlen(), num_usercount);\n }\n }\n \n \n /// Internal function for creating a cursor at a particular location in the\n /// skiplist. The returned cursor contains list of nodes which point past\n /// the specified position, as well as offsets of how far into their\n /// character lists the specified characters are.\n ///\n /// Sometimes a call to iter_at_userpos is ambiguous:\n ///\n /// - The item can contain items with zero usersize. The cursor could point\n /// to any of them.\n /// - If the location is at the end of a node, it is equally valid to return\n /// a position at the start of the next node.\n ///\n /// Because its impossible to move backwards in the list, iter_at_userpos\n /// returns the first admissible location with the specified userpos.\n /// \n /// Returns (cursor, offset into the specified item).\n ///\n /// TODO: This should be Pin<&self>.\n fn iter_at_userpos(&self, target_userpos: usize) -> (Cursor, usize) {\n assert!(target_userpos <= self.get_userlen());\n\n let mut e: *const Node = &self.head;\n let mut height = self.head.height as usize - 1;\n \n let mut offset = target_userpos; // How many more items to skip\n\n // We're populating the head node pointer to simplify the case when the\n // iterator grows. We could put offset into the skip_usersize but it\n // would only be *mostly* correct, not always correct. (Since cursor\n // entries above height are not updated by insert.)\n let mut cursor = Cursor {\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n local_index: 0,\n userpos: target_userpos,\n };\n\n loop { // while height >= 0\n let en = unsafe { &*e };\n let next = en.nexts()[height];\n let skip = next.skip_usersize;\n if offset > skip {\n // Go right.\n debug_assert!(e == &self.head || en.num_items > 0);\n offset -= skip;\n e = next.node;\n assert!(!e.is_null(), \"Internal constraint violation: Reached rope end prematurely\");\n } else {\n // Record this and go down.\n cursor.entries[height] = SkipEntry {\n skip_usersize: offset,\n node: e as *mut Node, // This is pretty gross\n };\n\n if height == 0 { break; } else { height -= 1; }\n }\n };\n\n // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n\n // We've found the node. Now look for the index within the node.\n let en = unsafe { &*e };\n let mut index = 0;\n\n while offset > 0 {\n assert!(index < en.num_items as usize);\n \n let usersize = C::get_usersize(unsafe { &*en.items[index].as_ptr() });\n if usersize > offset { break; } // We're in the middle of an item.\n offset -= usersize;\n index += 1;\n }\n cursor.local_index = index;\n\n (cursor, offset)\n }\n\n unsafe fn iter_at_node(&self, n: *const Node, mut offset: usize, local_index: usize) -> Cursor {\n let mut n = n as *mut Node; // We don't mutate, but we need a mut ptr.\n\n let mut cursor = Cursor {\n userpos: 0, // We'll set this later.\n local_index: local_index,\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };\n\n let mut h = 0;\n loop {\n while h < (*n).height as usize {\n cursor.entries[h] = SkipEntry {\n node: n,\n skip_usersize: offset\n };\n\n h += 1;\n }\n\n let parent = (*n).parent;\n // Reached the head.\n if parent.is_null() { break; }\n\n // If we're the same height as the parent its fine.\n debug_assert!((*parent).height as usize > h\n || (self.is_head(parent) && (*parent).height as usize == h));\n\n // Walk from parent back to n, figuring out the offset.\n let mut c = parent;\n // let walk_height = (*parent).height as usize - 2;\n let walk_height = (*n).height as usize - 1;\n while c != n {\n let elem = (*c).nexts()[walk_height];\n offset += elem.skip_usersize;\n c = elem.node;\n }\n\n n = parent;\n }\n\n cursor.userpos = offset;\n cursor\n }\n\n pub fn iter_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n // The marker gives us a pointer into a node. Find the item.\n unsafe {\n let n = marker.ptr;\n\n let mut offset: usize = 0;\n let mut local_index = None;\n for (i, item) in (*n).content_slice().iter().enumerate() {\n if let Some(item_offset) = item.contains_item(query) {\n offset += item_offset;\n local_index = Some(i);\n break;\n } else {\n offset += C::get_usersize(item);\n }\n }\n\n let local_index = local_index.expect(\"Invalid marker - item not found in node\");\n self.iter_at_node(n, offset, local_index)\n }\n }\n\n // Internal fn to create a new node at the specified iterator filled with\n // the specified content. The passed cursor should point at the end of the\n // previous node. It will be updated to point to the end of the newly\n // inserted content.\n // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &mut I, num_items: usize, move_cursor: bool, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: Iterator {\n\n // println!(\"Insert_node_at {} len {}\", contents.len(), self.num_bytes);\n // debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n assert!(num_items <= NODE_NUM_ITEMS);\n debug_assert!(contents.size_hint().0 >= num_items);\n\n let new_node_ptr = Node::alloc(self.get_rng());\n let new_node = &mut *new_node_ptr;\n new_node.num_items = num_items as u8;\n\n for (slot, item) in new_node.items[..num_items].iter_mut().zip(contents) {\n (slot.as_mut_ptr() as *mut C::Item).write(item); // Write makes sure we don't drop the old value.\n }\n\n let new_userlen = C::userlen_of_slice(new_node.content_slice());\n\n let new_height = new_node.height;\n let new_height_usize = new_height as usize;\n\n let mut head_height = self.head.height as usize;\n while head_height < new_height_usize {\n // This seems weird given we're about to overwrite these values\n // below. What we're doing is retroactively setting up the cursor\n // and head pointers *as if* the height had been this high all\n // along. This way we only have to populate the higher head values\n // lazily.\n let total_userlen = self.num_usercount;\n let nexts = self.heads_mut();\n nexts[head_height].skip_usersize = total_userlen;\n cursor.entries[head_height].skip_usersize = cursor.userpos;\n\n head_height += 1; // This is ugly.\n self.head.height += 1;\n }\n\n new_node.parent = if new_height_usize == MAX_HEIGHT {\n &self.head as *const _ as *mut _\n } else { cursor.entries[new_height_usize].node };\n\n for i in 0..new_height_usize {\n let prev_skip = &mut (*cursor.entries[i].node).nexts_mut()[i];\n let new_nexts = new_node.nexts_mut();\n\n // The new node points to the successor (or null)\n new_nexts[i] = SkipEntry {\n node: prev_skip.node,\n skip_usersize: new_userlen + prev_skip.skip_usersize - cursor.entries[i].skip_usersize\n };\n\n // The previous node points to the new node\n *prev_skip = SkipEntry {\n node: new_node_ptr,\n skip_usersize: cursor.entries[i].skip_usersize\n };\n\n // Move the iterator to the end of the newly inserted node.\n if move_cursor {\n cursor.entries[i] = SkipEntry {\n node: new_node_ptr,\n skip_usersize: new_userlen\n };\n }\n }\n\n for i in new_height_usize..head_height {\n (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n if move_cursor {\n cursor.entries[i].skip_usersize += new_userlen;\n }\n }\n\n // Update parents.\n if new_height_usize > 1 {\n\n let mut n = new_node_ptr;\n let mut skip_height = 0;\n\n loop {\n n = (*n).nexts_mut()[skip_height].node;\n if n.is_null() || (*n).height >= new_height { break; }\n \n (*n).parent = new_node_ptr;\n skip_height = usize::max(skip_height, (*n).height as usize - 1);\n }\n }\n \n self.num_items += num_items;\n self.num_usercount += new_userlen;\n if move_cursor {\n cursor.userpos += new_userlen;\n cursor.local_index = num_items;\n }\n\n notify(new_node.content_slice(), ItemMarker {\n ptr: new_node_ptr,\n _phantom: PhantomData\n });\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &mut I, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n // iter specifies where to insert.\n\n let mut e = cursor.here_ptr();\n\n // The insertion offset into the destination node.\n assert!(cursor.userpos <= self.num_usercount);\n assert!(cursor.local_index <= (*e).num_items as usize);\n\n // We might be able to insert the new data into the current node, depending on\n // how big it is.\n let num_inserted_items = contents.len();\n\n // Can we insert into the current node?\n let mut insert_here = (*e).num_items as usize + num_inserted_items <= NODE_NUM_ITEMS;\n\n // Can we insert into the start of the successor node?\n if !insert_here && cursor.local_index == (*e).num_items as usize && num_inserted_items <= NODE_NUM_ITEMS {\n // We can insert into the subsequent node if:\n // - We can't insert into the current node\n // - There _is_ a next node to insert into\n // - The insert would be at the start of the next node\n // - There's room in the next node\n if let Some(next) = (*e).first_skip_entry_mut().node.as_mut() {\n if next.num_items as usize + num_inserted_items <= NODE_NUM_ITEMS {\n cursor.advance_node();\n e = next;\n\n insert_here = true;\n }\n }\n }\n\n let item_idx = cursor.local_index;\n let e_num_items = (*e).num_items as usize; // convenience.\n\n if insert_here {\n // println!(\"insert_here {}\", contents);\n // First push the current items later in the array\n let c = &mut (*e).items;\n if item_idx < e_num_items {\n // Can't use copy_within because Item doesn't necessarily\n // implement Copy. Memmove the existing items.\n ptr::copy(\n &c[item_idx],\n &mut c[item_idx + num_inserted_items],\n (*e).num_items as usize - item_idx);\n }\n\n // Then copy in the new items. Can't memcpy from an iterator, but\n // the optimizer should make this fast.\n let dest_content_slice = &mut c[item_idx..item_idx + num_inserted_items];\n for (slot, item) in dest_content_slice.iter_mut().zip(contents) {\n // Do not drop the old items - they were only moved.\n slot.as_mut_ptr().write(item);\n }\n let dest_content_slice = maybeinit_slice_get_ref(dest_content_slice);\n\n (*e).num_items += num_inserted_items as u8;\n self.num_items += num_inserted_items;\n let num_inserted_usercount = C::userlen_of_slice(dest_content_slice);\n self.num_usercount += num_inserted_usercount;\n\n // .... aaaand update all the offset amounts.\n cursor.update_offsets(self.head.height as usize, num_inserted_usercount as isize);\n\n // Usually the cursor will be discarded after one change, but for\n // consistency of compound edits we'll update the cursor to point to\n // the end of the new content.\n for entry in cursor.entries[0..self.head.height as usize].iter_mut() {\n entry.skip_usersize += num_inserted_usercount;\n }\n cursor.userpos += num_inserted_usercount;\n cursor.local_index += num_inserted_items;\n\n notify(dest_content_slice, ItemMarker {\n ptr: e,\n _phantom: PhantomData\n });\n } else {\n // There isn't room. We'll need to add at least one new node to the\n // list. We could be a bit more careful here and copy as much as\n // possible into the current node - that would decrease the number\n // of new nodes in some cases, but I don't think the performance\n // difference will be large enough to justify the complexity.\n\n // If we're not at the end of the current node, we'll need to remove\n // the end of the current node's data and reinsert it later.\n let num_end_items = e_num_items - item_idx;\n\n let (end_items, end_usercount) = if num_end_items > 0 {\n // We'll mark the items as deleted from the node, while leaving\n // the data itself there for now to avoid a copy.\n\n // Note that if we wanted to, it would also be correct (and\n // slightly more space efficient) to pack some of the new\n // string's characters into this node after trimming it.\n let end_items = &(*e).items[item_idx..e_num_items];\n (*e).num_items = item_idx as u8;\n let end_usercount = (*e).get_userlen() - cursor.entries[0].skip_usersize;\n\n cursor.update_offsets(self.head.height as usize, -(end_usercount as isize));\n\n // We need to trim the size off because we'll add the characters\n // back with insert_node_at.\n self.num_usercount -= end_usercount;\n self.num_items -= num_end_items;\n\n (Some(end_items), end_usercount)\n } else {\n (None, 0)\n };\n\n // Now we insert new nodes containing the new character data. The\n // data is broken into pieces with a maximum size of NODE_NUM_ITEMS.\n // As further optimization, we could try and fit the last piece into\n // the start of the subsequent node.\n let mut items_remaining = num_inserted_items;\n while items_remaining > 0 {\n let insert_here = usize::min(items_remaining, NODE_NUM_ITEMS);\n self.insert_node_at(cursor, contents, insert_here, true, notify);\n items_remaining -= insert_here;\n }\n\n // TODO: Consider recursively calling insert_at_iter() here instead\n // of making a whole new node for the remaining content.\n if let Some(end_items) = end_items {\n // Passing false to indicate we don't want the cursor updated\n // after this - it should remain at the end of the newly\n // inserted content, which is *before* this end bit.\n self.insert_node_at(cursor, &mut UninitOwnedIter::::from_slice(end_items), end_items.len(), false, notify);\n }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n // self.insert_at_iter_and_notify(cursor, contents, Self::no_notify);\n // }\n\n /// Interestingly unlike the original, here we only care about specifying\n /// the number of removed items by counting them. We do not use usersize in\n /// the deleted item count.\n ///\n /// If the deleted content occurs at the start of a node, the cursor passed\n /// here must point to the end of the previous node, not the start of the\n /// current node.\n unsafe fn del_at_iter(&mut self, cursor: &mut Cursor, mut num_deleted_items: usize) {\n if num_deleted_items == 0 { return; }\n\n let mut item_idx = cursor.local_index;\n let mut e = cursor.here_ptr();\n while num_deleted_items > 0 {\n // self.print();\n // if cfg!(debug_assertions) { self.check(); }\n if item_idx == (*e).num_items as usize {\n let entry = (*e).first_skip_entry();\n // End of current node. Skip to the start of the next one. We're\n // intentionally not updating the iterator because if we delete\n // a whole node we need the iterator to point to the previous\n // element. And if we only delete here, the iterator doesn't\n // need to be moved.\n e = entry.node;\n if e.is_null() { panic!(\"Cannot delete past the end of the list\"); }\n item_idx = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let removed_here = min(num_deleted_items, e_num_items - item_idx);\n \n let height = (*e).height as usize;\n let removed_userlen;\n\n if removed_here < e_num_items || e as *const _ == &self.head as *const _ {\n // Just trim the node down.\n let trailing_items = e_num_items - item_idx - removed_here;\n \n let c = &mut (*e).items;\n removed_userlen = C::userlen_of_slice(maybeinit_slice_get_ref(&c[item_idx..item_idx + removed_here]));\n if trailing_items > 0 {\n ptr::copy(\n &c[item_idx + removed_here],\n &mut c[item_idx],\n trailing_items);\n }\n\n (*e).num_items -= removed_here as u8;\n self.num_items -= removed_here;\n self.num_usercount -= removed_userlen;\n\n for s in (*e).nexts_mut() {\n s.skip_usersize -= removed_userlen;\n }\n } else {\n // Remove the node from the skip list entirely. e should be the\n // next node after the position of the iterator.\n assert_ne!(cursor.here_ptr(), e);\n\n removed_userlen = (*e).get_userlen();\n let next = (*e).first_skip_entry().node;\n\n // println!(\"removing {:?} contents {:?} height {}\", e, (*e).content_slice(), height);\n\n for i in 0..height {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.node = (*e).nexts_mut()[i].node;\n s.skip_usersize += (*e).nexts()[i].skip_usersize - removed_userlen;\n }\n\n self.num_items -= (*e).num_items as usize;\n self.num_usercount -= removed_userlen;\n\n // Update parents.\n if height > 1 {\n let mut n = e;\n // let new_parent = cursor.entries[height - 1].node;\n\n // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents.\n let mut parent_height = 1;\n let cursor_node = cursor.here_ptr();\n let cursor_node_height = (*cursor_node).height as usize;\n let mut new_parent = if height >= cursor_node_height {\n cursor.entries[parent_height].node\n } else {\n cursor_node\n };\n\n loop {\n n = (*n).nexts_mut()[parent_height - 1].node;\n if n.is_null() || (*n).height >= height as u8 { break; }\n let n_height = (*n).height as usize;\n \n assert_eq!((*n).parent, e);\n assert!(n_height >= parent_height - 1);\n\n if n_height > parent_height {\n parent_height = n_height;\n if n_height >= cursor_node_height {\n new_parent = cursor.entries[parent_height].node\n }\n }\n \n (*n).parent = new_parent;\n }\n }\n\n Node::free(e);\n e = next;\n }\n\n for i in height..self.head.height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.skip_usersize -= removed_userlen;\n }\n\n num_deleted_items -= removed_here;\n\n // if cfg!(debug_assertions) { self.check(); }\n }\n }\n\n\n unsafe fn replace_at_iter(&mut self, cursor: &mut Cursor, mut removed_items: usize, inserted_content: &mut I, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n if removed_items == 0 && inserted_content.len() == 0 { return; }\n\n // Replace as many items from removed_items as we can with inserted_content.\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n debug_assert!(inserted_content.len() >= replaced_items);\n let mut e = cursor.here_ptr();\n if cursor.local_index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n }\n\n let index = cursor.local_index;\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let dest = &mut (*e).items[index..index + replaced_items_here];\n let old_usersize = C::userlen_of_slice(maybeinit_slice_get_ref(dest));\n\n // Replace the items themselves. Everything else is commentary.\n // Would prefer to use zip() but it wants ownership of inserted_content :/\n for slot in dest.iter_mut() {\n *slot.as_mut_ptr() = inserted_content.next().unwrap();\n }\n\n let dest = maybeinit_slice_get_ref(dest);\n let new_usersize = C::userlen_of_slice(dest);\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n cursor.local_index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n\n notify(dest, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(cursor, inserted_content, &mut notify);\n } else if removed_items > 0 {\n self.del_at_iter(cursor, removed_items);\n }\n }\n\n fn dbg_check_cursor_at(&self, cursor: &Cursor, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n }\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}\n\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.replace_at_iter(&mut cursor, removed_items, &mut inserted_content.iter().copied(), Self::no_notify); }\n\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(start_userpos);\n c2.advance_by_items(inserted_content.len(), self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after replace\"); }\n }\n }\n\n pub fn insert_at(&mut self, mut userpos: usize, contents: &[C::Item]) where C::Item: Copy {\n if contents.len() == 0 { return; }\n \n userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n unsafe {\n if offset == 0 {\n self.insert_at_iter(&mut cursor, &mut contents.iter().copied(), &mut Self::no_notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n } else {\n let current_item = cursor.current_item();\n let (start, end) = C::split_item(current_item, offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n cursor.move_to_item_start(self.head.height, offset);\n // This feels pretty inefficient; but its probably fine.\n self.replace_at_iter(&mut cursor, 1, &mut iter::once(start), &mut Self::no_notify);\n self.insert_at_iter(&mut cursor, &mut contents.iter().copied(), &mut Self::no_notify);\n\n // There's no clean way to keep the cursor steady for the final\n // insert. We'll just make sure the cursor is in the right\n // position before that call for now.\n self.dbg_check_cursor_at(&cursor, userpos, contents.len());\n\n self.insert_at_iter(&mut cursor, &mut iter::once(end), &mut Self::no_notify);\n }\n }\n\n" ) , ( 10257 , 42579 , " ptr::drop_in_place(p); // We could just implement drop here, but this is cleaner.\n dealloc(p as *mut u8, Self::layout_with_height((*p).height));\n }\n\n fn content_slice(&self) -> &[C::Item] {\n let slice = &self.items[..self.num_items as usize];\n unsafe { maybeinit_slice_get_ref(slice) }\n }\n\n // The height is at least 1, so this is always valid.\n fn first_skip_entry<'a>(&self) -> &'a SkipEntry {\n unsafe { &*self.nexts.as_ptr() }\n }\n\n fn first_skip_entry_mut<'a>(&mut self) -> &'a mut SkipEntry {\n unsafe { &mut *self.nexts.as_mut_ptr() }\n }\n\n // TODO: Rename to len() ?\n fn get_userlen(&self) -> usize {\n self.first_skip_entry().skip_usersize\n }\n \n fn get_next_ptr(&self) -> *mut Node {\n self.first_skip_entry().node\n }\n}\n\nimpl Drop for Node {\n fn drop(&mut self) {\n for i in 0..self.num_items as usize {\n // Could instead call assume_init() on each item but this is\n // friendlier to the optimizer.\n unsafe { ptr::drop_in_place(self.items[i].as_mut_ptr()); }\n }\n }\n}\n\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone)]\npub struct Cursor {\n // TODO: Add a phantom lifetime reference to the skip list root for safety.\n\n\n /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///\n /// This field isn't strictly necessary - earlier versions tacked this on to\n /// the last item in entries... I'm still not sure the cleanest way to do\n /// this.\n userpos: usize,\n\n /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used to resolve that ambiguity.\n local_index: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n}\n\nimpl Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n self.local_index = 0;\n\n next\n }\n }\n\n fn is_at_node_end(&self) -> bool {\n self.local_index == unsafe { (*self.here_ptr()).num_items } as usize\n }\n\n fn advance_item(&mut self, height: u8) {\n if self.is_at_node_end() { self.advance_node(); }\n let usersize = C::get_usersize(unsafe { self.current_item() });\n\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }\n self.userpos += usersize;\n self.local_index += 1;\n }\n\n fn advance_by_items(&mut self, num: usize, height: u8) {\n for _ in 0..num { self.advance_item(height); }\n }\n\n fn move_to_item_start(&mut self, height: u8, offset: usize) {\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize -= offset;\n }\n self.userpos -= offset;\n }\n\n unsafe fn current_item(&mut self) -> &C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &*(node.items[self.local_index].as_ptr())\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice.\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos\n || self.local_index != other.local_index {return false; }\n\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl fmt::Debug for Cursor {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"Cursor\")\n .field(\"userpos\", &self.userpos)\n .field(\"local_index\", &self.local_index)\n .finish()\n }\n}\n\n// None of the rust builtins give me what I want, which is a copy-free iterator\n// to owned items in a MaybeUninit array. Eh; its easy enough to make my own.\nstruct UninitOwnedIter<'a, C: ListConfig> {\n // Based on the core slice IterMut implementation.\n ptr: NonNull,\n end: *mut C::Item,\n _marker: PhantomData<&'a SkipList>\n}\n\nimpl<'a, C: ListConfig> UninitOwnedIter<'a, C> {\n /// Make a slice we can iterate from and steal data from without dropping\n /// content. This is unsafe:\n ///\n /// - If the iterator isn't fully drained then remaining items will be\n /// forgotten (they are not dropped).\n /// - The slice passed in here must be initialized or undefined behaviour\n /// will hit us.\n ///\n /// After iterating, the contents are uninit memory.\n unsafe fn from_slice(slice: &[MaybeUninit]) -> Self {\n let ptr = slice.as_ptr() as *mut C::Item; // Safe.\n let end = ptr.add(slice.len());\n\n UninitOwnedIter {\n ptr: NonNull::new_unchecked(ptr),\n end,\n _marker: PhantomData\n }\n }\n}\n\nimpl<'a, C: ListConfig> Iterator for UninitOwnedIter<'a, C> {\n type Item = C::Item;\n\n fn next(&mut self) -> Option {\n if self.ptr.as_ptr() == self.end {\n None\n } else {\n let ptr = self.ptr;\n self.ptr = unsafe { NonNull::new_unchecked(self.ptr.as_ptr().offset(1)) };\n Some(unsafe { ptr.as_ptr().read() })\n }\n }\n\n fn size_hint(&self) -> (usize, Option) {\n let size = (self.end as usize - self.ptr.as_ptr() as usize) / mem::size_of::();\n (size, Some(size))\n }\n}\n\n// TODO: Stolen from MaybeUninit::uninit_array. Replace with the real uninit_array when stable.\n#[inline(always)]\nfn uninit_items_array() -> [MaybeUninit; NODE_NUM_ITEMS] {\n unsafe { MaybeUninit::<[MaybeUninit; NODE_NUM_ITEMS]>::uninit().assume_init() }\n}\n\n// TODO: Stolen from MaybeUninit::slice_get_ref. Replace when available.\n#[inline(always)]\nunsafe fn maybeinit_slice_get_ref(slice: &[MaybeUninit]) -> &[T] {\n // SAFETY: casting slice to a `*const [T]` is safe since the caller guarantees that\n // `slice` is initialized, and`MaybeUninit` is guaranteed to have the same layout as `T`.\n // The pointer obtained is valid since it refers to memory owned by `slice` which is a\n // reference and thus guaranteed to be valid for reads.\n &*(slice as *const [MaybeUninit] as *const [T])\n}\n\n\nimpl SkipList {\n pub fn new() -> Self {\n SkipList:: {\n num_items: 0,\n num_usercount: 0,\n rng: None,\n head: Node {\n items: uninit_items_array(),\n num_items: 0,\n height: 1, // Stores max height of list nodes\n parent: ptr::null_mut(),\n nexts: [],\n },\n _nexts_padding: [SkipEntry::new_null(); MAX_HEIGHT],\n }\n }\n\n pub fn init_rng_from_seed(&mut self, seed: u64) {\n self.rng = Some(SmallRng::seed_from_u64(seed));\n }\n\n fn get_rng(&mut self) -> &mut SmallRng {\n // I'm sure there's a nicer way to implement this.\n if self.rng.is_none() {\n // We'll use a stable RNG in debug mode so the tests are stable.\n if cfg!(debug_assertions) {\n self.init_rng_from_seed(123);\n } else {\n self.rng = Some(SmallRng::from_entropy());\n }\n }\n self.rng.as_mut().unwrap()\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n let mut rope = Self::new();\n rope.insert_at_slice(0, s);\n rope\n }\n\n pub fn get_userlen(&self) -> usize {\n self.num_usercount\n }\n\n fn iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn len_items(&self) -> usize {\n self.num_items as usize\n }\n\n fn heads_mut(&mut self) -> &mut [SkipEntry] {\n unsafe {\n std::slice::from_raw_parts_mut(self.head.nexts.as_mut_ptr(), self._nexts_padding.len())\n }\n }\n\n fn is_head(&self, node: *const Node) -> bool {\n node as *const _ == &self.head as *const _\n }\n\n /// Walk the list and validate internal constraints. This is used for\n /// testing the structure itself, and should generally not be called by\n /// users.\n pub fn check(&self) {\n // #[cfg(test)]\n {\n // self.print();\n assert!(self.head.height >= 1);\n assert!(self.head.height <= MAX_HEIGHT_U8);\n\n let head_ptr = &self.head as *const _ as *mut _;\n // let skip_over = self.get_top_entry();\n // println!(\"Skip over skip chars {}, num bytes {}\", skip_over.skip_items, self.num_bytes);\n\n let mut prev: [*const Node; MAX_HEIGHT] = [ptr::null(); MAX_HEIGHT];\n\n let mut iter = [SkipEntry {\n // Bleh.\n node: head_ptr,\n // The skips will store the total distance travelled since the\n // start of this traversal at each height. All the entries above\n // head.height are ignored though.\n skip_usersize: 0\n }; MAX_HEIGHT];\n\n let mut num_items = 0;\n let mut num_usercount = 0;\n\n for (_i, n) in self.iter().enumerate() {\n // println!(\"visiting {:?}\", n.as_str());\n if !self.is_head(n) { assert!(n.num_items > 0); }\n assert!(n.height <= MAX_HEIGHT_U8);\n assert!(n.num_items as usize <= NODE_NUM_ITEMS);\n\n // Make sure the number of items matches the count\n let local_count = C::userlen_of_slice(n.content_slice());\n assert_eq!(local_count, n.get_userlen());\n\n let expect_parent = if self.is_head(n) {\n ptr::null() // The head's parent is null\n } else if n.height == self.head.height {\n &self.head as *const _ // Max height nodes point back to head\n } else {\n prev[n.height as usize]\n };\n\n // println!(\"visiting {} {:?}\", i, n as *const _);\n // dbg!(n as *const _);\n // dbg!((n as *const _, (*n).height));\n // dbg!(n.parent);\n // dbg!(&self.head as *const _);\n\n assert_eq!(n.parent as *const _, expect_parent, \"invalid parent\");\n \n for (i, entry) in iter[0..n.height as usize].iter_mut().enumerate() {\n assert_eq!(entry.node as *const _, n as *const _);\n assert_eq!(entry.skip_usersize, num_usercount);\n\n // println!(\"replacing entry {:?} with {:?}\", entry, n.nexts()[i].node);\n prev[i] = n;\n entry.node = n.nexts()[i].node;\n entry.skip_usersize += n.nexts()[i].skip_usersize;\n }\n\n num_items += n.num_items as usize;\n num_usercount += n.get_userlen();\n\n // Check the value returned by the iterator functions matches.\n let (mut normal_iter, local_offset) = self.iter_at_userpos(num_usercount);\n assert_eq!(local_offset, 0);\n\n // Dirty hack. If n has 0-sized elements at the end, the normal\n // cursor won't be at the end...\n while normal_iter.here_ptr() != n as *const _ as *mut _ {\n normal_iter.advance_node();\n }\n normal_iter.local_index = n.num_items as usize;\n let node_iter = unsafe { self.iter_at_node(n, n.get_userlen(), n.num_items as usize) };\n assert_eq!(normal_iter, node_iter);\n }\n\n for entry in iter[0..self.head.height as usize].iter() {\n // println!(\"{:?}\", entry);\n assert!(entry.node.is_null());\n assert_eq!(entry.skip_usersize, num_usercount);\n }\n \n // println!(\"self bytes: {}, count bytes {}\", self.num_bytes, num_bytes);\n assert_eq!(self.num_items, num_items);\n assert_eq!(self.get_userlen(), num_usercount);\n }\n }\n \n \n /// Internal function for creating a cursor at a particular location in the\n /// skiplist. The returned cursor contains list of nodes which point past\n /// the specified position, as well as offsets of how far into their\n /// character lists the specified characters are.\n ///\n /// Sometimes a call to iter_at_userpos is ambiguous:\n ///\n /// - The item can contain items with zero usersize. The cursor could point\n /// to any of them.\n /// - If the location is at the end of a node, it is equally valid to return\n /// a position at the start of the next node.\n ///\n /// Because its impossible to move backwards in the list, iter_at_userpos\n /// returns the first admissible location with the specified userpos.\n /// \n /// Returns (cursor, offset into the specified item).\n ///\n /// TODO: This should be Pin<&self>.\n fn iter_at_userpos(&self, target_userpos: usize) -> (Cursor, usize) {\n assert!(target_userpos <= self.get_userlen());\n\n let mut e: *const Node = &self.head;\n let mut height = self.head.height as usize - 1;\n \n let mut offset = target_userpos; // How many more items to skip\n\n // We're populating the head node pointer to simplify the case when the\n // iterator grows. We could put offset into the skip_usersize but it\n // would only be *mostly* correct, not always correct. (Since cursor\n // entries above height are not updated by insert.)\n let mut cursor = Cursor {\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n local_index: 0,\n userpos: target_userpos,\n };\n\n loop { // while height >= 0\n let en = unsafe { &*e };\n let next = en.nexts()[height];\n let skip = next.skip_usersize;\n if offset > skip {\n // Go right.\n debug_assert!(e == &self.head || en.num_items > 0);\n offset -= skip;\n e = next.node;\n assert!(!e.is_null(), \"Internal constraint violation: Reached rope end prematurely\");\n } else {\n // Record this and go down.\n cursor.entries[height] = SkipEntry {\n skip_usersize: offset,\n node: e as *mut Node, // This is pretty gross\n };\n\n if height == 0 { break; } else { height -= 1; }\n }\n };\n\n // We should always land within the node we're pointing to.\n debug_assert!(offset <= unsafe { &*cursor.here_ptr() }.get_userlen());\n\n // We've found the node. Now look for the index within the node.\n let en = unsafe { &*e };\n let mut index = 0;\n\n while offset > 0 {\n assert!(index < en.num_items as usize);\n \n let usersize = C::get_usersize(unsafe { &*en.items[index].as_ptr() });\n if usersize > offset { break; } // We're in the middle of an item.\n offset -= usersize;\n index += 1;\n }\n cursor.local_index = index;\n\n (cursor, offset)\n }\n\n unsafe fn iter_at_node(&self, n: *const Node, mut offset: usize, local_index: usize) -> Cursor {\n let mut n = n as *mut Node; // We don't mutate, but we need a mut ptr.\n\n let mut cursor = Cursor {\n userpos: 0, // We'll set this later.\n local_index: local_index,\n entries: [SkipEntry {\n node: &self.head as *const _ as *mut _,\n skip_usersize: usize::MAX\n }; MAX_HEIGHT],\n };\n\n let mut h = 0;\n loop {\n while h < (*n).height as usize {\n cursor.entries[h] = SkipEntry {\n node: n,\n skip_usersize: offset\n };\n\n h += 1;\n }\n\n let parent = (*n).parent;\n // Reached the head.\n if parent.is_null() { break; }\n\n // If we're the same height as the parent its fine.\n debug_assert!((*parent).height as usize > h\n || (self.is_head(parent) && (*parent).height as usize == h));\n\n // Walk from parent back to n, figuring out the offset.\n let mut c = parent;\n // let walk_height = (*parent).height as usize - 2;\n let walk_height = (*n).height as usize - 1;\n while c != n {\n let elem = (*c).nexts()[walk_height];\n offset += elem.skip_usersize;\n c = elem.node;\n }\n\n n = parent;\n }\n\n cursor.userpos = offset;\n cursor\n }\n\n pub fn iter_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n // The marker gives us a pointer into a node. Find the item.\n unsafe {\n let n = marker.ptr;\n\n let mut offset: usize = 0;\n let mut local_index = None;\n for (i, item) in (*n).content_slice().iter().enumerate() {\n if let Some(item_offset) = item.contains_item(query) {\n offset += item_offset;\n local_index = Some(i);\n break;\n } else {\n offset += C::get_usersize(item);\n }\n }\n\n let local_index = local_index.expect(\"Invalid marker - item not found in node\");\n self.iter_at_node(n, offset, local_index)\n }\n }\n\n // Internal fn to create a new node at the specified iterator filled with\n // the specified content. The passed cursor should point at the end of the\n // previous node. It will be updated to point to the end of the newly\n // inserted content.\n // unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &[C::Item], new_userlen: usize, move_cursor: bool) {\n unsafe fn insert_node_at(&mut self, cursor: &mut Cursor, contents: &mut I, num_items: usize, move_cursor: bool, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: Iterator {\n\n // println!(\"Insert_node_at {} len {}\", contents.len(), self.num_bytes);\n // debug_assert_eq!(new_userlen, C::userlen_of_slice(contents));\n assert!(num_items <= NODE_NUM_ITEMS);\n debug_assert!(contents.size_hint().0 >= num_items);\n\n let new_node_ptr = Node::alloc(self.get_rng());\n let new_node = &mut *new_node_ptr;\n new_node.num_items = num_items as u8;\n\n for (slot, item) in new_node.items[..num_items].iter_mut().zip(contents) {\n (slot.as_mut_ptr() as *mut C::Item).write(item); // Write makes sure we don't drop the old value.\n }\n\n let new_userlen = C::userlen_of_slice(new_node.content_slice());\n\n let new_height = new_node.height;\n let new_height_usize = new_height as usize;\n\n let mut head_height = self.head.height as usize;\n while head_height < new_height_usize {\n // This seems weird given we're about to overwrite these values\n // below. What we're doing is retroactively setting up the cursor\n // and head pointers *as if* the height had been this high all\n // along. This way we only have to populate the higher head values\n // lazily.\n let total_userlen = self.num_usercount;\n let nexts = self.heads_mut();\n nexts[head_height].skip_usersize = total_userlen;\n cursor.entries[head_height].skip_usersize = cursor.userpos;\n\n head_height += 1; // This is ugly.\n self.head.height += 1;\n }\n\n new_node.parent = if new_height_usize == MAX_HEIGHT {\n &self.head as *const _ as *mut _\n } else { cursor.entries[new_height_usize].node };\n\n for i in 0..new_height_usize {\n let prev_skip = &mut (*cursor.entries[i].node).nexts_mut()[i];\n let new_nexts = new_node.nexts_mut();\n\n // The new node points to the successor (or null)\n new_nexts[i] = SkipEntry {\n node: prev_skip.node,\n skip_usersize: new_userlen + prev_skip.skip_usersize - cursor.entries[i].skip_usersize\n };\n\n // The previous node points to the new node\n *prev_skip = SkipEntry {\n node: new_node_ptr,\n skip_usersize: cursor.entries[i].skip_usersize\n };\n\n // Move the iterator to the end of the newly inserted node.\n if move_cursor {\n cursor.entries[i] = SkipEntry {\n node: new_node_ptr,\n skip_usersize: new_userlen\n };\n }\n }\n\n for i in new_height_usize..head_height {\n (*cursor.entries[i].node).nexts_mut()[i].skip_usersize += new_userlen;\n if move_cursor {\n cursor.entries[i].skip_usersize += new_userlen;\n }\n }\n\n // Update parents.\n if new_height_usize > 1 {\n\n let mut n = new_node_ptr;\n let mut skip_height = 0;\n\n loop {\n n = (*n).nexts_mut()[skip_height].node;\n if n.is_null() || (*n).height >= new_height { break; }\n \n (*n).parent = new_node_ptr;\n skip_height = usize::max(skip_height, (*n).height as usize - 1);\n }\n }\n \n self.num_items += num_items;\n self.num_usercount += new_userlen;\n if move_cursor {\n cursor.userpos += new_userlen;\n cursor.local_index = num_items;\n }\n\n notify(new_node.content_slice(), ItemMarker {\n ptr: new_node_ptr,\n _phantom: PhantomData\n });\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &mut I, notify: &mut Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n // iter specifies where to insert.\n\n let mut e = cursor.here_ptr();\n\n // The insertion offset into the destination node.\n assert!(cursor.userpos <= self.num_usercount);\n assert!(cursor.local_index <= (*e).num_items as usize);\n\n // We might be able to insert the new data into the current node, depending on\n // how big it is.\n let num_inserted_items = contents.len();\n\n // Can we insert into the current node?\n let mut insert_here = (*e).num_items as usize + num_inserted_items <= NODE_NUM_ITEMS;\n\n // Can we insert into the start of the successor node?\n if !insert_here && cursor.local_index == (*e).num_items as usize && num_inserted_items <= NODE_NUM_ITEMS {\n // We can insert into the subsequent node if:\n // - We can't insert into the current node\n // - There _is_ a next node to insert into\n // - The insert would be at the start of the next node\n // - There's room in the next node\n if let Some(next) = (*e).first_skip_entry_mut().node.as_mut() {\n if next.num_items as usize + num_inserted_items <= NODE_NUM_ITEMS {\n cursor.advance_node();\n e = next;\n\n insert_here = true;\n }\n }\n }\n\n let item_idx = cursor.local_index;\n let e_num_items = (*e).num_items as usize; // convenience.\n\n if insert_here {\n // println!(\"insert_here {}\", contents);\n // First push the current items later in the array\n let c = &mut (*e).items;\n if item_idx < e_num_items {\n // Can't use copy_within because Item doesn't necessarily\n // implement Copy. Memmove the existing items.\n ptr::copy(\n &c[item_idx],\n &mut c[item_idx + num_inserted_items],\n (*e).num_items as usize - item_idx);\n }\n\n // Then copy in the new items. Can't memcpy from an iterator, but\n // the optimizer should make this fast.\n let dest_content_slice = &mut c[item_idx..item_idx + num_inserted_items];\n for (slot, item) in dest_content_slice.iter_mut().zip(contents) {\n // Do not drop the old items - they were only moved.\n slot.as_mut_ptr().write(item);\n }\n let dest_content_slice = maybeinit_slice_get_ref(dest_content_slice);\n\n (*e).num_items += num_inserted_items as u8;\n self.num_items += num_inserted_items;\n let num_inserted_usercount = C::userlen_of_slice(dest_content_slice);\n self.num_usercount += num_inserted_usercount;\n\n // .... aaaand update all the offset amounts.\n cursor.update_offsets(self.head.height as usize, num_inserted_usercount as isize);\n\n // Usually the cursor will be discarded after one change, but for\n // consistency of compound edits we'll update the cursor to point to\n // the end of the new content.\n for entry in cursor.entries[0..self.head.height as usize].iter_mut() {\n entry.skip_usersize += num_inserted_usercount;\n }\n cursor.userpos += num_inserted_usercount;\n cursor.local_index += num_inserted_items;\n\n notify(dest_content_slice, ItemMarker {\n ptr: e,\n _phantom: PhantomData\n });\n } else {\n // There isn't room. We'll need to add at least one new node to the\n // list. We could be a bit more careful here and copy as much as\n // possible into the current node - that would decrease the number\n // of new nodes in some cases, but I don't think the performance\n // difference will be large enough to justify the complexity.\n\n // If we're not at the end of the current node, we'll need to remove\n // the end of the current node's data and reinsert it later.\n let num_end_items = e_num_items - item_idx;\n\n let (end_items, _end_usercount) = if num_end_items > 0 {\n // We'll mark the items as deleted from the node, while leaving\n // the data itself there for now to avoid a copy.\n\n // Note that if we wanted to, it would also be correct (and\n // slightly more space efficient) to pack some of the new\n // string's characters into this node after trimming it.\n let end_items = &(*e).items[item_idx..e_num_items];\n (*e).num_items = item_idx as u8;\n let end_usercount = (*e).get_userlen() - cursor.entries[0].skip_usersize;\n\n cursor.update_offsets(self.head.height as usize, -(end_usercount as isize));\n\n // We need to trim the size off because we'll add the characters\n // back with insert_node_at.\n self.num_usercount -= end_usercount;\n self.num_items -= num_end_items;\n\n (Some(end_items), end_usercount)\n } else {\n (None, 0)\n };\n\n // Now we insert new nodes containing the new character data. The\n // data is broken into pieces with a maximum size of NODE_NUM_ITEMS.\n // As further optimization, we could try and fit the last piece into\n // the start of the subsequent node.\n let mut items_remaining = num_inserted_items;\n while items_remaining > 0 {\n let insert_here = usize::min(items_remaining, NODE_NUM_ITEMS);\n self.insert_node_at(cursor, contents, insert_here, true, notify);\n items_remaining -= insert_here;\n }\n\n // TODO: Consider recursively calling insert_at_iter() here instead\n // of making a whole new node for the remaining content.\n if let Some(end_items) = end_items {\n // Passing false to indicate we don't want the cursor updated\n // after this - it should remain at the end of the newly\n // inserted content, which is *before* this end bit.\n self.insert_node_at(cursor, &mut UninitOwnedIter::::from_slice(end_items), end_items.len(), false, notify);\n }\n }\n }\n\n // unsafe fn insert_at_iter(&mut self, cursor: &mut Cursor, contents: &[C::Item]) {\n // self.insert_at_iter_and_notify(cursor, contents, Self::no_notify);\n // }\n\n /// Interestingly unlike the original, here we only care about specifying\n /// the number of removed items by counting them. We do not use usersize in\n /// the deleted item count.\n ///\n /// If the deleted content occurs at the start of a node, the cursor passed\n /// here must point to the end of the previous node, not the start of the\n /// current node.\n unsafe fn del_at_iter(&mut self, cursor: &mut Cursor, mut num_deleted_items: usize) {\n if num_deleted_items == 0 { return; }\n\n let mut item_idx = cursor.local_index;\n let mut e = cursor.here_ptr();\n while num_deleted_items > 0 {\n // self.print();\n // if cfg!(debug_assertions) { self.check(); }\n if item_idx == (*e).num_items as usize {\n let entry = (*e).first_skip_entry();\n // End of current node. Skip to the start of the next one. We're\n // intentionally not updating the iterator because if we delete\n // a whole node we need the iterator to point to the previous\n // element. And if we only delete here, the iterator doesn't\n // need to be moved.\n e = entry.node;\n if e.is_null() { panic!(\"Cannot delete past the end of the list\"); }\n item_idx = 0;\n }\n\n let e_num_items = (*e).num_items as usize;\n let removed_here = min(num_deleted_items, e_num_items - item_idx);\n \n let height = (*e).height as usize;\n let removed_userlen;\n\n if removed_here < e_num_items || e as *const _ == &self.head as *const _ {\n // Just trim the node down.\n let trailing_items = e_num_items - item_idx - removed_here;\n \n let c = &mut (*e).items;\n removed_userlen = C::userlen_of_slice(maybeinit_slice_get_ref(&c[item_idx..item_idx + removed_here]));\n if trailing_items > 0 {\n ptr::copy(\n &c[item_idx + removed_here],\n &mut c[item_idx],\n trailing_items);\n }\n\n (*e).num_items -= removed_here as u8;\n self.num_items -= removed_here;\n self.num_usercount -= removed_userlen;\n\n for s in (*e).nexts_mut() {\n s.skip_usersize -= removed_userlen;\n }\n } else {\n // Remove the node from the skip list entirely. e should be the\n // next node after the position of the iterator.\n assert_ne!(cursor.here_ptr(), e);\n\n removed_userlen = (*e).get_userlen();\n let next = (*e).first_skip_entry().node;\n\n // println!(\"removing {:?} contents {:?} height {}\", e, (*e).content_slice(), height);\n\n for i in 0..height {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.node = (*e).nexts_mut()[i].node;\n s.skip_usersize += (*e).nexts()[i].skip_usersize - removed_userlen;\n }\n\n self.num_items -= (*e).num_items as usize;\n self.num_usercount -= removed_userlen;\n\n // Update parents.\n if height > 1 {\n let mut n = e;\n // let new_parent = cursor.entries[height - 1].node;\n\n // If you imagine this node as a big building, we need to\n // update the parent of all the nodes we cast a shadow over.\n // So, if our height is 3 and the next nodes have heights 1\n // and 2, they both need new parents.\n let mut parent_height = 1;\n let cursor_node = cursor.here_ptr();\n let cursor_node_height = (*cursor_node).height as usize;\n let mut new_parent = if height >= cursor_node_height {\n cursor.entries[parent_height].node\n } else {\n cursor_node\n };\n\n loop {\n n = (*n).nexts_mut()[parent_height - 1].node;\n if n.is_null() || (*n).height >= height as u8 { break; }\n let n_height = (*n).height as usize;\n \n assert_eq!((*n).parent, e);\n assert!(n_height >= parent_height - 1);\n\n if n_height > parent_height {\n parent_height = n_height;\n if n_height >= cursor_node_height {\n new_parent = cursor.entries[parent_height].node\n }\n }\n \n (*n).parent = new_parent;\n }\n }\n\n Node::free(e);\n e = next;\n }\n\n for i in height..self.head.height as usize {\n let s = &mut (*cursor.entries[i].node).nexts_mut()[i];\n s.skip_usersize -= removed_userlen;\n }\n\n num_deleted_items -= removed_here;\n\n // if cfg!(debug_assertions) { self.check(); }\n }\n }\n\n\n unsafe fn replace_at_iter(&mut self, cursor: &mut Cursor, mut removed_items: usize, inserted_content: &mut I, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n if removed_items == 0 && inserted_content.len() == 0 { return; }\n\n // Replace as many items from removed_items as we can with inserted_content.\n let mut replaced_items = min(removed_items, inserted_content.len());\n removed_items -= replaced_items;\n\n while replaced_items > 0 {\n debug_assert!(inserted_content.len() >= replaced_items);\n let mut e = cursor.here_ptr();\n if cursor.local_index == (*e).num_items as usize {\n // Move to the next item.\n e = cursor.advance_node();\n if e.is_null() { panic!(\"Cannot replace past the end of the list\"); }\n }\n\n let index = cursor.local_index;\n\n let e_num_items = (*e).num_items as usize;\n let replaced_items_here = min(replaced_items, e_num_items - index);\n\n let dest = &mut (*e).items[index..index + replaced_items_here];\n let old_usersize = C::userlen_of_slice(maybeinit_slice_get_ref(dest));\n\n // Replace the items themselves. Everything else is commentary.\n // Would prefer to use zip() but it wants ownership of inserted_content :/\n for slot in dest.iter_mut() {\n *slot.as_mut_ptr() = inserted_content.next().unwrap();\n }\n\n let dest = maybeinit_slice_get_ref(dest);\n let new_usersize = C::userlen_of_slice(dest);\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n\n replaced_items -= replaced_items_here;\n // We'll hop to the next Node at the start of the next loop\n // iteration if needed.\n cursor.local_index += replaced_items_here;\n\n for i in 0..self.head.height as usize {\n cursor.entries[i].skip_usersize += new_usersize;\n }\n cursor.userpos += new_usersize;\n\n notify(dest, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });\n }\n\n // Ok now one of two things must be true. Either we've run out of\n // items to remove, or we've run out of items to insert.\n if inserted_content.len() > 0 {\n // Insert!\n debug_assert!(removed_items == 0);\n self.insert_at_iter(cursor, inserted_content, &mut notify);\n } else if removed_items > 0 {\n self.del_at_iter(cursor, removed_items);\n }\n }\n\n fn dbg_check_cursor_at(&self, cursor: &Cursor, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n }\n\n fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}\n\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, mut inserted_content: I) where I: ExactSizeIterator {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n let num_inserted_items = inserted_content.len();\n unsafe { self.replace_at_iter(&mut cursor, removed_items, &mut inserted_content, Self::no_notify); }\n\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(start_userpos);\n c2.advance_by_items(num_inserted_items, self.head.height);\n if &cursor != &c2 { panic!(\"Invalid cursor after replace\"); }\n }\n }\n\n pub fn replace_at_slice(&mut self, start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n self.replace_at(start_userpos, removed_items, inserted_content.iter().copied());\n }\n\n pub fn insert_at(&mut self, mut userpos: usize, mut contents: I) where I: ExactSizeIterator {\n if contents.len() == 0 { return; }\n let num_inserted_items = contents.len();\n \n userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n unsafe {\n if offset == 0 {\n self.insert_at_iter(&mut cursor, &mut contents, &mut Self::no_notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, num_inserted_items);\n } else {\n let current_item = cursor.current_item();\n let (start, end) = C::split_item(current_item, offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n cursor.move_to_item_start(self.head.height, offset);\n // This feels pretty inefficient; but its probably fine.\n self.replace_at_iter(&mut cursor, 1, &mut iter::once(start), &mut Self::no_notify);\n self.insert_at_iter(&mut cursor, &mut contents, &mut Self::no_notify);\n\n // There's no clean way to keep the cursor steady for the final\n // insert. We'll just make sure the cursor is in the right\n // position before that call for now.\n self.dbg_check_cursor_at(&cursor, userpos, num_inserted_items);\n\n self.insert_at_iter(&mut cursor, &mut iter::once(end), &mut Self::no_notify);\n }\n }\n\n }\n\n pub fn insert_at_slice(&mut self, userpos: usize, contents: &[C::Item]) where C::Item: Copy {\n self.insert_at(userpos, contents.iter().copied())\n" ) , (9755, 1, "") , (9754, 1, "") , (9758, 1, "") , (9758, 0, ".") , (9759, 0, "w") , (9760, 0, "r") , (9761, 0, "i") , (9762, 0, "t") , (9763, 0, "e") , (9764, 0, "(") , (9765, 1, "") , (9765, 1, "") , (9765, 1, "") , (9960, 1, "") , (9960, 0, ")") , (9961, 0, ";") , (10026, 1, "") , (10030, 0, ".") , (10031, 0, "w") , (10032, 0, "r") , (10033, 0, "i") , (10034, 0, "t") , (10035, 0, "e") , (10036, 0, "(") , (10037, 1, "") , (10037, 1, "") , (10037, 1, "") , (10058, 0, ")") , (11675, 1, "") , (11680, 1, "") , (11679, 1, "") , (11679, 0, ".") , (11680, 0, "w") , (11681, 0, "r") , (11682, 0, "i") , (11683, 0, "t") , (11684, 0, "e") , (11685, 0, "(") , (11686, 1, "") , (11741, 0, ")") , (13907, 1, "") , (13911, 0, ".") , (13912, 0, "w") , (13913, 0, "r") , (13911, 3, "") , (13907, 0, "*") , (10026, 0, "*") , (10031, 6, " ") , (10032, 0, "=") , (10033, 0, " ") , (10034, 1, "") , (10055, 1, "") , (11671, 11, "*") , (11672, 0, "s") , (11673, 0, "e") , (11674, 0, "l") , (11675, 0, "f") , (11676, 0, " ") , (11677, 0, "=") , (11678, 0, " ") , (11734, 1, "") , (1247, 2, "2") , (1247, 1, "10") , (1638, 1, "2") , (1638, 1, "5") , (44190, 0, "\n ") , (44207, 0, "\n ") , (44191, 16, "") , (44192, 16, "") , (44191, 0, "\n ") , (44208, 0, "f") , (44209, 0, "o") , (44210, 0, "r") , (44211, 0, " ") , (44212, 0, "&") , (44213, 0, "m") , (44214, 0, "u") , (44215, 0, "t") , (44216, 0, " ") , (44217, 0, "i") , (44218, 0, "t") , (44219, 0, "e") , (44220, 0, "m") , (44221, 0, " ") , (44222, 0, "i") , (44223, 0, "n") , (44224, 0, " ") , (44225, 0, "&c[item_idx..item_idx + removed_here])") , (44262, 1, "") , (44262, 0, " ") , (44263, 0, "{") , (44264, 0, "\n ") , (44265, 20, " }") , (44226, 0, "m") , (44227, 0, "u") , (44228, 0, "t") , (44229, 0, " ") , (44213, 8, "") , (44212, 1, "") , (44211, 1, "") , (44211, 0, "i") , (44211, 1, "") , (44211, 0, " ") , (44212, 0, "i") , (44213, 0, "t") , (44214, 0, "e") , (44215, 0, "m") , (44263, 0, "\n ") , (44284, 0, "i") , (44285, 0, "t") , (44286, 0, "e") , (44287, 0, "m") , (44288, 0, ".") , (44289, 0, "a") , (44290, 0, "s") , (44291, 0, "_") , (44289, 3, "as_mut_ptr") , (44299, 0, "(") , (44300, 0, ")") , (44284, 0, " ") , (44284, 0, "m") , (44285, 0, "e") , (44286, 0, "m") , (44287, 0, ":") , (44288, 0, ":") , (44289, 0, "d") , (44290, 0, "r") , (44291, 0, "o") , (44292, 0, "p") , (44292, 1, "") , (44291, 1, "") , (44290, 1, "") , (44289, 1, "") , (44288, 1, "") , (44287, 1, "") , (44286, 1, "") , (44285, 1, "") , (44284, 1, "") , (44284, 0, "p") , (44285, 0, "t") , (44286, 0, "r") , (44287, 0, ":") , (44288, 0, ":") , (44289, 0, "d") , (44290, 0, "r") , (44291, 0, "p") , (44289, 3, "drop_in_place(to_drop: *mut T)") , (44303, 15, "") , (44303, 1, "") , (44303, 1, "") , (44320, 0, ")") , (44321, 0, ";") , (44191, 0, "\n ") , (44208, 0, "i") , (44209, 0, "f") , (44210, 0, " ") , (44211, 0, "C") , (44212, 0, ":") , (44213, 0, ":") , (44213, 1, "") , (44212, 1, "") , (44211, 1, "") , (44211, 0, "n") , (44212, 0, "e") , (44213, 0, "e") , (44213, 1, "") , (44212, 1, "") , (44211, 1, "") , (44211, 0, "p") , (44212, 0, "t") , (44213, 0, "r") , (44214, 0, ":") , (44215, 0, ":") , (44216, 0, "n") , (44217, 0, "e") , (44218, 0, "e") , (44211, 8, "m") , (44212, 0, "e") , (44213, 0, "m") , (44214, 0, ":") , (44215, 0, ":") , (44216, 0, "n") , (44217, 0, "e") , (44218, 0, "e") , (44216, 3, "needs_drop()") , (44226, 0, ":") , (44227, 0, ":") , (44228, 0, "<") , (44229, 0, "T") , (44230, 0, ">") , (44230, 1, "") , (44229, 1, "") , (44229, 0, "C") , (44230, 0, ":") , (44231, 0, ":") , (44232, 0, "I") , (44233, 0, "t") , (44234, 0, "e") , (44235, 0, "m") , (44236, 0, ">") , (44239, 0, " ") , (44240, 0, "{") , (44373, 16, " ") , (44314, 20, " ") , (44242, 16, " ") , (44402, 0, "\n ") , (44403, 20, " }") , (11154, 0, "\n ") , (11163, 0, "f") , (11164, 0, "o") , (11165, 0, "r") , (11166, 0, " ") , (11167, 0, "i") , (11168, 0, "t") , (11169, 0, "e") , (11170, 0, "m") , (11171, 0, " ") , (11172, 0, "i") , (11173, 0, "n") , (11174, 0, " ") , (11175, 0, "&") , (11176, 0, "m") , (11177, 0, "u") , (11178, 0, "t") , (11179, 0, " ") , (11180, 0, "s") , (11181, 0, "e") , (11182, 0, "l") , (11183, 0, "f") , (11184, 0, ".") , (11185, 0, "i") , (11186, 0, "t") , (11187, 0, "e") , (11188, 0, "m") , (11185, 4, "items") , (11190, 0, "[") , (11191, 0, "0") , (11192, 0, ".") , (11193, 0, ".") , (11194, 0, "s") , (11195, 0, "e") , (11196, 0, "l") , (11197, 0, "f") , (11198, 0, ".") , (11199, 0, "n") , (11200, 0, "u") , (11201, 0, "m") , (11202, 0, "_") , (11203, 0, "i") , (11204, 0, "t") , (11205, 0, "e") , (11206, 0, "m") , (11207, 0, "s") , (11208, 0, " ") , (11209, 0, "a") , (11210, 0, "s") , (11211, 0, " ") , (11212, 0, "u") , (11213, 0, "s") , (11214, 0, "i") , (11215, 0, "z") , (11216, 0, "e") , (11217, 0, "]") , (11218, 0, " ") , (11219, 0, "{") , (11221, 45, "") , (11220, 1, "") , ( 11338 , 0 , " unsafe { ptr::drop_in_place(self.items[i].as_mut_ptr()); }\n" ) , (11350, 0, "// ") , (11452, 13, "i") , (11453, 0, "t") , (11454, 0, "e") , (11455, 0, "m") , (11338, 73, "") , (11337, 1, "") , (55759, 20, "") , (20792, 0, "\n ") , (20797, 0, "\n ") , (20793, 4, "") , (20798, 0, "p") , (20799, 0, "u") , (20800, 0, "b") , (20801, 0, " ") , (20802, 0, "f") , (20803, 0, "n") , (20804, 0, " ") , (20805, 0, "n") , (20806, 0, "e") , (20807, 0, "w") , (20808, 0, "_") , (20809, 0, "f") , (20810, 0, "r") , (20811, 0, "o") , (20812, 0, "m") , (20813, 0, "_") , (20814, 0, "i") , (20815, 0, "t") , (20816, 0, "e") , (20817, 0, "r") , (20818, 0, "(") , (20819, 0, "&") , (20819, 1, "") , (20818, 0, "<") , (20819, 0, "I") , (20820, 0, ">") , (20822, 0, "i") , (20823, 0, "t") , (20824, 0, "e") , (20825, 0, "r") , (20826, 0, ":") , (20827, 0, " ") , (20828, 0, "I") , (20829, 0, ")") , (20819, 1, "") , (20819, 0, "I: ExactSizeIterator ") , (20853, 1, "") , (20863, 0, " ") , (20864, 0, "{") , (20865, 0, "\n ") , (20874, 0, "\n ") , (20866, 8, "") , (20867, 8, " }") , (20945, 85, "") , ( 20866 , 0 , " let mut rope = Self::new();\n rope.insert_at_slice(0, s);\n rope\n" ) , (20950, 1, "") , (20929, 1, "") , (20928, 1, "") , (20927, 1, "") , (20926, 1, "") , (20925, 1, "") , (20924, 1, "") , (20928, 1, "") , (20928, 0, "i") , (20929, 0, "t") , (20930, 0, "e") , (20931, 0, "r") , (20863, 0, " ") , (20864, 0, "-") , (20865, 0, ">") , (20866, 0, " ") , (20867, 0, "S") , (20868, 0, "e") , (20869, 0, "l") , (20870, 0, "f") , (21033, 0, "\n ") , (21042, 0, "s") , (21043, 0, "e") , (21044, 0, "l") , (21045, 0, "f") , (21042, 4, "S") , (21043, 0, "e") , (21044, 0, "l") , (21045, 0, "f") , (21046, 0, ":") , (21047, 0, ":") , (21048, 0, "n") , (21049, 0, "e") , (21050, 0, "w") , (21051, 0, "_") , (21048, 4, "new_from_iter(iter: I)") , (21062, 7, "s") , (21063, 0, ".") , (21064, 0, "i") , (21065, 0, "t") , (21066, 0, "e") , (21067, 0, "r") , (21068, 0, "(") , (21069, 1, ")") , (21070, 0, ".") , (21071, 0, "c") , (21072, 0, "o") , (21073, 0, "p") , (21074, 0, "i") , (21075, 0, "e") , (21076, 0, "d") , (21077, 0, "(") , (21078, 0, ")") , (21079, 0, ")") , (21080, 0, ";") , (21080, 1, "") , (55969, 1, "") , (55968, 1, "") , (55967, 1, "") , (55966, 1, "") , (55965, 1, "") , (55965, 0, "i") , (55966, 0, "t") , (55967, 0, "e") , (55968, 0, "r") , (55970, 12, "") , (55970, 0, "s") , (55971, 0, ".") , (55972, 0, "i") , (55973, 0, "n") , (55974, 0, "t") , (55975, 0, "o") , (55972, 4, "into_iter()") , (55791, 43, "") , (55790, 1, "") , ( 55791 , 0 , "impl From> for SkipList {\n fn from(s: Vec) -> SkipList {\n SkipList::new_from_iter(s.into_iter())\n }\n}\n" ) , (55948, 0, "\n") , (55968, 0, ",") , (55969, 0, " ") , ( 55970 , 0 , " let mut rope = Self::new();\n rope.insert_at_slice(0, s);\n rope\n" ) , (56042, 8, "") , (56006, 8, "") , (56034, 0, " ") , (56006, 0, " ") , (55970, 85, "") , (55970, 0, "I") , (55971, 0, ":") , (55972, 0, " ") , (55973, 0, "E") , (55974, 0, "x") , (55975, 0, "a") , (55973, 3, "ExactSizeIterator") , (55990, 0, "<") , (55991, 0, "C") , (55992, 0, ":") , (55993, 0, ":") , (55994, 0, "I") , (55995, 0, "t") , (55996, 0, "e") , (55997, 0, "m") , (55998, 0, ">") , (55971, 28, "") , (55978, 12, "I") , (55997, 0, " ") , (55998, 0, "w") , (55998, 1, "") , (55997, 1, "") , (55997, 0, "w") , (55998, 0, "h") , (55999, 0, "e") , (56000, 0, "r") , (56001, 0, "e") , (56002, 0, " ") , (56003, 0, "I") , (56004, 0, ":") , (56005, 0, " ") , (56006, 0, "E") , (56007, 0, "x") , (56008, 0, "a") , (56006, 3, "ExactSizeIterator") , (56023, 0, "<") , (56024, 0, "C") , (56025, 0, ":") , (56026, 0, ":") , (56027, 0, "I") , (56028, 0, "t") , (56029, 0, "e") , (56030, 0, "m") , (56031, 0, ">") , (56032, 0, " ") , (56024, 0, "I") , (56025, 0, "t") , (56026, 0, "e") , (56027, 0, "m") , (56028, 0, "=") , (55788, 0, "// ") , (55782, 0, "// ") , (55746, 0, "// ") , (55702, 0, "// ") , (55627, 0, "// ") , (55962, 0, "// ") , (55956, 0, "// ") , (55909, 0, "// ") , (55863, 0, "// ") , (55806, 0, "// ") , ( 56070 , 98 , "// fn from(s: Vec) -> SkipList {\n// SkipList::new_from_iter(s.into_iter())\n// }" ) , (56169, 3, "") , (56119, 3, "") , (56070, 3, "") , (56082, 15, "i") , (56083, 0, "t") , (56084, 0, "e") , (56085, 0, "r") , (56086, 0, ":") , (56087, 0, " ") , (56088, 0, "I") , (56140, 13, "i") , (56141, 0, "t") , (56142, 0, "e") , (56143, 0, "r") , (55800, 3, "") , (55791, 3, "") , (55752, 3, "") , (55705, 3, "") , (55627, 3, "") , (55788, 0, "// ") , (55782, 0, "// ") , (55746, 0, "// ") , (55702, 0, "// ") , (55627, 0, "// ") , (55626, 352, "") , (55625, 1, "") , (56185, 973, "") , (56120, 68, "") , (56119, 1, "") , (54767, 0, "\n ") , (54772, 0, "\n ") , (54768, 4, "") , ( 54773 , 0 , " // TODO: Don't export this.\n pub fn print(&self) {\n println!(\"items: {}\\tuserlen: {}, height: {}\", self.num_items, self.get_userlen(), self.head.height);\n\n print!(\"HEAD:\");\n for s in self.head.nexts() {\n print!(\" |{} \", s.skip_usersize);\n }\n println!(\"\");\n\n use std::collections::HashMap;\n let mut ptr_to_id = HashMap::new();\n // ptr_to_id.insert(std::ptr::null(), usize::MAX);\n for (i, node) in self.iter().enumerate() {\n print!(\"{}:\", i);\n ptr_to_id.insert(node as *const _, i);\n for s in node.nexts() {\n print!(\" |{} \", s.skip_usersize);\n }\n print!(\" : {:?}\", node.content_slice());\n if let Some(id) = ptr_to_id.get(&(node.parent as *const _)) {\n print!(\" (parent: {})\", id);\n }\n print!(\" (pointer: {:?})\", node as *const _);\n\n println!();\n }\n }" ) , (55741, 4, " ") , (55731, 8, " ") , (55707, 12, " ") , (55706, 0, " ") , (55648, 12, " ") , (55634, 12, " ") , (55589, 16, " ") , (55515, 12, " ") , (55457, 12, " ") , (55443, 12, " ") , (55393, 16, " ") , (55357, 12, " ") , (55306, 12, " ") , (55276, 12, " ") , (55225, 8, " ") , (55166, 8, " ") , (55122, 8, " ") , (55083, 8, " ") , (55082, 0, " ") , (55060, 8, " ") , (55050, 8, " ") , (55004, 12, " ") , (54967, 8, " ") , (54942, 8, " ") , (54941, 0, " ") , (54831, 8, " ") , (54805, 4, " ") , (55845, 8, " ") , (55831, 12, " ") , (55803, 16, " ") , (55798, 4, "") , (55736, 16, " ") , (55718, 16, " ") , (55669, 20, " ") , (55591, 16, " ") , (55529, 16, " ") , (55511, 16, " ") , (55457, 20, " ") , (55417, 16, " ") , (55362, 16, " ") , (55328, 16, " ") , (55273, 12, " ") , (55210, 12, " ") , (55162, 12, " ") , (55119, 12, " ") , (55114, 4, "") , (55088, 12, " ") , (55074, 12, " ") , (55024, 16, " ") , (54983, 12, " ") , (54954, 12, " ") , (54949, 4, "") , (54835, 12, " ") , (54805, 8, " ") , (54769, 8, " ") , (54824, 0, " ") , (54825, 0, "w") , (54826, 0, "h") , (54827, 0, "e") , (54828, 0, "r") , (54829, 0, "e") , (54830, 0, " ") , (54831, 0, "C") , (54832, 0, ":") , (54833, 0, ":") , (54834, 0, "I") , (54835, 0, "t") , (54836, 0, "e") , (54837, 0, "m") , (54838, 0, ":") , (54839, 0, " ") , (54840, 0, "D") , (54841, 0, "e") , (54842, 0, "b") , (54843, 0, "u") , (54844, 0, "g") , (54840, 0, "s") , (54841, 0, "t") , (54842, 0, "d") , (54843, 0, ":") , (54844, 0, ":") , (54845, 0, "f") , (54846, 0, "m") , (54847, 0, "t") , (54848, 0, ":") , (54849, 0, ":") , (52176, 0, "// ") , (52102, 0, "// ") , (52031, 0, "// ") , (51964, 0, "// ") , (51928, 0, "// ") , (51919, 0, "\n ") , (51928, 0, "d") , (51929, 0, "b") , (51930, 0, "g") , (51931, 0, "_") , (51928, 4, "s") , (51929, 0, "e") , (51930, 0, "l") , (51931, 0, "f") , (51932, 0, ".") , (51933, 0, "d") , (51934, 0, "b") , (51935, 0, "g") , (51936, 0, "_") , ( 51933 , 4 , "dbg_check_cursor_at(cursor: &Cursor, userpos: usize, plus_items: usize)" ) , (51953, 18, "&") , (51954, 0, "c") , (51955, 0, "y") , (51956, 0, "r") , (51957, 0, "s") , (51958, 0, "o") , (51958, 1, "") , (51957, 1, "") , (51956, 1, "") , (51955, 1, "") , (51955, 0, "u") , (51956, 0, "r") , (51957, 0, "s") , (51958, 0, "o") , (51959, 0, "r") , (51962, 14, "s") , (51963, 0, "t") , (51964, 0, "a") , (51965, 0, "r") , (51966, 0, "t") , (51967, 0, "_") , (51968, 0, "u") , (51969, 0, "s") , (51970, 0, "e") , (51971, 0, "r") , (51972, 0, "p") , (51973, 0, "o") , (51974, 0, "s") , (51977, 17, "n") , (51978, 0, "u") , (51979, 0, "m") , (51980, 0, "_") , (51981, 0, "i") , (51982, 0, "n") , (51983, 0, "s") , (51984, 0, "e") , (51985, 0, "r") , (51986, 0, "t") , (51987, 0, "e") , (51988, 0, "d") , (51989, 0, "_") , (51990, 0, "i") , (51991, 0, "t") , (51992, 0, "e") , (51993, 0, "m") , (51994, 0, "s") , (51996, 0, ";") , (51998, 273, "") , (51023, 0, "\n ") , (51028, 0, "\n ") , (51024, 4, "") , ( 51029 , 0 , " unsafe fn replace_at_iter(&mut self, cursor: &mut Cursor, mut removed_items: usize, inserted_content: &mut I, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n" ) , (51177, 12, " ") , (51025, 8, " ") , (51223, 36, "") , (51177, 0, " ") , (51229, 0, "\n ") , (51230, 12, " }") , (51230, 8, " ") , (51053, 1, "") , (51052, 1, "") , (51051, 1, "") , (51050, 1, "") , (51049, 1, "") , (51048, 1, "") , (51047, 1, "") , (51047, 0, "i") , (51048, 0, "t") , (51049, 0, "e") , (51050, 0, "m") , (51058, 3, "") , (51093, 52, "") , (51093, 0, ",") , (51094, 0, " ") , (51095, 0, "n") , (51096, 0, "e") , (51097, 0, "w") , (51098, 0, "I") , (51099, 0, "t") , (51100, 0, "e") , (51101, 0, "m") , (51101, 1, "") , (51100, 1, "") , (51099, 1, "") , (51098, 1, "") , (51098, 0, "_") , (51099, 0, "i") , (51100, 0, "t") , (51101, 0, "e") , (51102, 0, "m") , (51103, 0, ":") , (51104, 0, " ") , (51105, 0, "C") , (51106, 0, ":") , (51107, 0, ":") , (51108, 0, "I") , (51109, 0, "t") , (51110, 0, "e") , (51111, 0, "m") , (51190, 0, "\n ") , (51191, 12, " ") , ( 51025 , 165 , " unsafe fn replace_item(&mut self, cursor: &mut Cursor, new_item: C::Item, mut notify: Notify) where Notify: FnMut(&[C::Item], ItemMarker) {" ) , ( 51025 , 157 , " unsafe fn replace_item(&mut self, cursor: &mut Cursor, new_item: C::Item, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker) {" ) , (51134, 8, " ") , (51186, 0, "\n ") , (51195, 0, "s") , (51196, 0, "e") , (51197, 0, "l") , (51198, 0, "f") , (51199, 0, ".") , (51200, 0, "r") , (51201, 0, "e") , (51202, 0, "p") , (51203, 0, "l") , (51204, 0, "a") , ( 51200 , 5 , "replace_at_iter(cursor: &mut Cursor, mut removed_items: usize, inserted_content: &mut I, mut notify: Notify)" ) , (51216, 22, "c") , (51217, 0, "u") , (51218, 0, "r") , (51219, 0, "s") , (51220, 0, "o") , (51221, 0, "r") , (51224, 24, "1") , (51227, 24, "o") , (51228, 0, "n") , (51229, 0, "c") , (51230, 0, "e") , (51227, 4, "i") , (51228, 0, "t") , (51229, 0, "e") , (51230, 0, "r") , (51231, 0, ":") , (51232, 0, ":") , (51233, 0, "o") , (51234, 0, "n") , (51235, 0, "c") , (51236, 0, "e") , (51237, 0, "(") , (51238, 0, "n") , (51239, 0, "e") , (51240, 0, "w") , (51241, 0, "_") , (51242, 0, "i") , (51243, 0, "t") , (51244, 0, "e") , (51245, 0, "m") , (51246, 0, ")") , (51249, 18, "n") , (51250, 0, "o") , (51251, 0, "t") , (51252, 0, "i") , (51253, 0, "f") , (51254, 0, "y") , (51256, 0, ";") , (51227, 0, "&") , (51228, 0, "m") , (51229, 0, "u") , (51230, 0, "t") , (51231, 0, " ") , (51267, 4, "") , (51263, 4, "") , (51262, 1, "") , (51186, 0, "\n ") , (51195, 0, "/") , (51196, 0, "/") , (51197, 0, " ") , (51198, 0, "T") , (51199, 0, "h") , (51200, 0, "i") , (51201, 0, "s") , (51202, 0, " ") , (51203, 0, "c") , (51204, 0, "o") , (51205, 0, "u") , (51206, 0, "l") , (51207, 0, "d") , (51208, 0, " ") , (51209, 0, "b") , (51210, 0, "e") , (51211, 0, " ") , (51212, 0, "o") , (51213, 0, "p") , (51214, 0, "t") , (51215, 0, "i") , (51216, 0, "m") , (51217, 0, "i") , (51218, 0, "z") , (51219, 0, "e") , (51220, 0, "d") , (51221, 0, ".") , (51208, 0, " ") , (51209, 0, "e") , (51210, 0, "a") , (51211, 0, "s") , (51212, 0, "i") , (51213, 0, "l") , (51214, 0, "y") , (51114, 4, "") , (51308, 1, "") , (53479, 0, "// ") , (53462, 0, "\n ") , (53479, 0, "s") , (53480, 0, "e") , (53481, 0, "l") , (53482, 0, "f") , (53483, 0, ".") , (53484, 0, "r") , (53485, 0, "e") , (53486, 0, "p") , (53487, 0, "l") , (53488, 0, "a") , ( 53484 , 5 , "replace_item(cursor: &mut Cursor, new_item: C::Item, notify: Notify)" ) , (53497, 22, "&") , (53498, 0, "m") , (53499, 0, "u") , (53500, 0, "t") , (53501, 0, " ") , (53502, 0, "c") , (53503, 0, "u") , (53504, 0, "r") , (53505, 0, "s") , (53506, 0, "o") , (53507, 0, "r") , (53508, 0, ",") , (53509, 0, " ") , (53509, 1, "") , (53508, 1, "") , (53510, 17, "s") , (53511, 0, "t") , (53512, 0, "a") , (53513, 0, "r") , (53514, 0, "t") , (53516, 15, "&mut Self::no_notify") , (53516, 0, " ") , (53538, 0, ";") , (53540, 103, "") , (53539, 0, "\n ") , (53556, 0, "\n ") , (53540, 16, "") , (53557, 0, "/") , (53558, 0, "/") , (53559, 0, " ") , (53560, 0, "T") , (53561, 0, "O") , (53562, 0, "D") , (53563, 0, "O") , (53564, 0, ":") , (53565, 0, " ") , (53566, 0, "C") , (53567, 0, "o") , (53568, 0, "n") , (53569, 0, "s") , (53570, 0, "i") , (53571, 0, "d") , (53572, 0, "e") , (53573, 0, "r") , (53574, 0, " ") , (53575, 0, "f") , (53576, 0, "u") , (53577, 0, "s") , (53578, 0, "i") , (53579, 0, "n") , (53580, 0, "g") , (53575, 6, "c") , (53576, 0, "o") , (53577, 0, "n") , (53578, 0, "c") , (53579, 0, "a") , (53580, 0, "t") , (53581, 0, "e") , (53582, 0, "n") , (53583, 0, "a") , (53584, 0, "t") , (53585, 0, "i") , (53586, 0, "n") , (53587, 0, "g") , (53588, 0, " ") , (53589, 0, "e") , (53590, 0, "n") , (53591, 0, "d") , (53592, 0, " ") , (53593, 0, "o") , (53594, 0, "n") , (53594, 1, "") , (53593, 1, "") , (53593, 0, "i") , (53594, 0, "n") , (53595, 0, "t") , (53596, 0, "o") , (53597, 0, " ") , (53598, 0, "c") , (53599, 0, "o") , (53600, 0, "n") , (53601, 0, "t") , (53602, 0, "e") , (53603, 0, "n") , (53604, 0, "t") , (53605, 0, "s") , (53606, 0, ".") , (53606, 1, "") , (53606, 0, " ") , (53606, 1, "") , (53606, 0, " ") , (53607, 0, "t") , (53608, 0, "h") , (53609, 0, "e") , (53610, 0, "n") , (53611, 0, " ") , (53612, 0, "j") , (53613, 0, "u") , (53614, 0, "s") , (53615, 0, "t") , (53616, 0, " ") , (53617, 0, "c") , (53618, 0, "a") , (53619, 0, "l") , (53620, 0, "l") , (53621, 0, " ") , (53622, 0, "i") , (53623, 0, "n") , (53624, 0, "s") , (53625, 0, "e") , (53626, 0, "r") , (53627, 0, "t") , (53628, 0, "_") , (53629, 0, "a") , (53630, 0, "t") , (53631, 0, "_") , (53632, 0, "i") , (53633, 0, "t") , (53634, 0, "e") , (53635, 0, "r") , (53636, 0, " ") , (53637, 0, "o") , (53638, 0, "n") , (53639, 0, "c") , (53640, 0, "e") , (53641, 0, ".") , ( 53541 , 101 , " // TODO: Consider concatenating end into contents then just call\n // insert_at_iter once." ) , (53749, 209, "") , (52518, 0, "\n ") , (52523, 0, "\n ") , (52519, 4, "") , (52524, 0, "p") , (52525, 0, "u") , (52526, 0, "b") , (52527, 0, " ") , (52528, 0, "f") , (52529, 0, "n") , (52530, 0, " ") , (52531, 0, "m") , (52532, 0, "o") , (52532, 1, "") , (52532, 0, "o") , (52533, 0, "d") , (52534, 0, "i") , (52535, 0, "f") , (52536, 0, "y") , (52537, 0, "_") , (52538, 0, "a") , (52539, 0, "t") , (52540, 0, "(") , (52541, 0, "&") , (52542, 0, "m") , (52543, 0, "u") , (52544, 0, "t") , (52545, 0, " ") , (52546, 0, "s") , (52547, 0, "e") , (52548, 0, "l") , (52549, 0, "f") , (52550, 0, ",") , (52551, 0, " ") , (52552, 0, "m") , (52553, 0, "o") , (52554, 0, "d") , (52555, 0, "i") , (52556, 0, "f") , (52557, 0, "y") , (52558, 0, "_") , (52559, 0, "f") , (52560, 0, "n") , (52561, 0, ":") , (52562, 0, " ") , (52563, 0, "F") , (52540, 0, "<") , (52541, 0, "F") , (52542, 0, ">") , (52554, 0, " ") , (52555, 0, "u") , (52556, 0, "s") , (52557, 0, "e") , (52558, 0, "r") , (52559, 0, "s") , (52560, 0, "i") , (52560, 1, "") , (52559, 1, "") , (52559, 0, "p") , (52560, 0, "o") , (52561, 0, "s") , (52562, 0, ":") , (52563, 0, " ") , (52564, 0, "u") , (52565, 0, "s") , (52566, 0, "i") , (52567, 0, "z") , (52568, 0, "e") , (52569, 0, ",") , (52583, 0, ")") , (52584, 0, " ") , (52585, 0, "{") , (52586, 0, "\n ") , (52595, 0, "\n ") , (52587, 8, "") , (52588, 8, " }") , (52584, 1, "") , (52584, 0, "\n ") , (52589, 0, "w") , (52590, 0, "h") , (52591, 0, "e") , (52592, 0, "r") , (52593, 0, "e") , (52594, 0, " ") , (52595, 0, "F") , (52596, 0, ":") , (52597, 0, " ") , (52598, 0, "F") , (52599, 0, "n") , (52600, 0, "O") , (52601, 0, "n") , (52602, 0, "c") , (52603, 0, "e") , (52604, 0, "(") , (52605, 0, "&") , (52606, 0, "m") , (52607, 0, "u") , (52608, 0, "t") , (52609, 0, " ") , (52610, 0, "C") , (52611, 0, ":") , (52612, 0, ":") , (52613, 0, "I") , (52614, 0, "t") , (52615, 0, "e") , (52616, 0, "m") , (52605, 0, "i") , (52606, 0, "t") , (52607, 0, "e") , (52608, 0, "m") , (52609, 0, ":") , (52610, 0, " ") , (52623, 0, ")") , (52624, 0, " ") , (52605, 6, "") , (52621, 0, " ") , (52629, 0, "let (mut cursor, offset) = self.iter_at_userpos(userpos);\n") , (52617, 0, ",") , (52618, 0, " ") , (52619, 0, "i") , (52620, 0, "n") , (52620, 1, "") , (52619, 1, "") , (52619, 0, "u") , (52620, 0, "s") , (52621, 0, "i") , (52622, 0, "z") , (52623, 0, "e") , (52694, 0, " ") , (52694, 8, "") , ( 15874 , 0 , " unsafe fn current_item(&mut self) -> &C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &*(node.items[self.local_index].as_ptr())\n }\n" ) , (16087, 0, "\n ") , (16119, 0, "_") , (16088, 4, "") , (16116, 0, "m") , (16117, 0, "u") , (16118, 0, "t") , (16135, 0, "m") , (16136, 0, "u") , (16137, 0, "t") , (16138, 0, " ") , (16298, 0, "m") , (16299, 0, "u") , (16300, 0, "t") , (16301, 0, "_") , (16298, 4, "") , (16264, 0, "m") , (16265, 0, "u") , (16266, 0, "t") , (16267, 0, " ") , (16087, 227, "") , ( 16087 , 0 , "\n\n unsafe fn current_item_mut(&mut self) -> &mut C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &mut *(node.items[self.local_index].as_ptr())\n }" ) , (16264, 4, "") , (16169, 0, ",") , (16170, 0, "u") , (16171, 0, "t") , (16171, 1, "") , (16170, 1, "") , (16169, 1, "") , (16169, 0, "m") , (16170, 0, "u") , (16171, 0, "t") , (16172, 0, " ") , (16268, 0, "u") , (16268, 1, "") , (16268, 0, "m") , (16269, 0, "u") , (16270, 0, "t") , (16271, 0, " ") , (16303, 6, "a") , (16304, 0, "s") , (16305, 0, "_") , (16306, 0, "m") , (16307, 0, "u") , (16308, 0, "t") , (16303, 6, "as_mut_ptr") , (52929, 0, " ") , (52937, 0, "l") , (52938, 0, "e") , (52939, 0, "t") , (52940, 0, " ") , (52941, 0, "i") , (52942, 0, "t") , (52943, 0, "e") , (52944, 0, "m") , (52945, 0, " ") , (52946, 0, "=") , (52947, 0, " ") , (52948, 0, "c") , (52949, 0, "u") , (52950, 0, "r") , (52951, 0, "s") , (52952, 0, "o") , (52953, 0, "r") , (52954, 0, ".") , (52955, 0, "c") , (52956, 0, "u") , (52957, 0, "r") , (52958, 0, "r") , (52959, 0, "e") , (52955, 5, "current_item_mut()") , (52973, 0, ";") , (52974, 0, "\n ") , (52983, 0, "l") , (52984, 0, "e") , (52985, 0, "t") , (52986, 0, " ") , (52987, 0, "o") , (52988, 0, "l") , (52989, 0, "d") , (52990, 0, "_") , (52991, 0, "s") , (52992, 0, "i") , (52993, 0, "z") , (52994, 0, "e") , (52995, 0, " ") , (52996, 0, "=") , (52997, 0, " ") , (52998, 0, "C") , (52999, 0, ":") , (53000, 0, ":") , (53001, 0, "get_usersize(_item: &Self::Item)") , (53014, 18, "i") , (53015, 0, "t") , (53016, 0, "e") , (53017, 0, "m") , (53019, 0, ";") , (53020, 0, "\n ") , (53021, 8, "") , (52947, 0, " ") , (52948, 0, "u") , (52949, 0, "n") , (52950, 0, "s") , (52951, 0, "a") , (52952, 0, "f") , (52953, 0, "e") , (52954, 0, " ") , (52955, 0, "{") , (52982, 0, " ") , (52983, 0, "}") , (53032, 0, " ") , (53040, 0, "F") , (53041, 0, "(") , (53042, 0, "i") , (53043, 0, "t") , (53044, 0, "e") , (53045, 0, "m") , (53046, 0, ",") , (53047, 0, " ") , (53048, 0, "o") , (53049, 0, "f") , (53050, 0, "f") , (53051, 0, "s") , (53052, 0, "e") , (53053, 0, "t") , (53054, 0, ")") , (53055, 0, ";") , (53056, 0, "\n ") , (53057, 8, "") , (53040, 1, "") , (53040, 0, "m") , (53041, 0, "o") , (53042, 0, "d") , (53043, 0, "i") , (53044, 0, "f") , (53045, 0, "y") , (53040, 6, "modify_fn") , (53065, 0, " ") , (53073, 0, "l") , (53074, 0, "e") , (53075, 0, "t") , (53076, 0, " ") , (53077, 0, "n") , (53078, 0, "e") , (53079, 0, "w") , (53080, 0, "_") , (53081, 0, "s") , (53082, 0, "i") , (53083, 0, "z") , (53084, 0, "e") , (53085, 0, " ") , (53086, 0, "=") , (53087, 0, " ") , (53088, 0, "C::get_usersize(item);") , (53110, 0, "\n ") , (53119, 0, "c") , (53120, 0, "u") , (53121, 0, "r") , (53122, 0, "s") , (53123, 0, "o") , (53124, 0, "r") , (53125, 0, ".") , (53126, 0, "update_offsets(height: usize, by: isize)") , (53141, 0, "s") , (53142, 0, "e") , (53143, 0, "l") , (53144, 0, "f") , (53145, 0, ".") , (53146, 0, "n") , (53147, 0, "o") , (53148, 0, "d") , (53149, 0, "e") , (53150, 0, ".") , (53157, 7, "") , (53151, 6, "heights") , (53157, 1, "") , (53146, 4, "h") , (53147, 0, "e") , (53148, 0, "a") , (53149, 0, "d") , (53157, 0, " ") , (53158, 0, "a") , (53159, 0, "s") , (53160, 0, " ") , (53161, 0, "u") , (53162, 0, "s") , (53163, 0, "i") , (53164, 0, "z") , (53165, 0, "e") , (53168, 9, "") , (53168, 0, "n") , (53169, 0, "e") , (53170, 0, "w") , (53171, 0, "_") , (53172, 0, "s") , (53173, 0, "i") , (53174, 0, "z") , (53175, 0, "e") , (53176, 0, " ") , (53177, 0, "a") , (53178, 0, "s") , (53179, 0, " ") , (53180, 0, "u") , (53181, 0, "i") , (53181, 1, "") , (53180, 1, "") , (53180, 0, "i") , (53181, 0, "s") , (53182, 0, "i") , (53183, 0, "z") , (53184, 0, "e") , (53185, 0, " ") , (53186, 0, "-") , (53187, 0, " ") , (53188, 0, "o") , (53189, 0, "l") , (53190, 0, "d") , (53191, 0, "_") , (53192, 0, "s") , (53193, 0, "i") , (53194, 0, "e") , (53194, 1, "") , (53194, 0, "z") , (53195, 0, "e") , (53196, 0, " ") , (53197, 0, "a") , (53198, 0, "s") , (53199, 0, " ") , (53200, 0, "i") , (53201, 0, "s") , (53200, 2, "isize") , (53206, 0, ";") , (53119, 0, "// ") , (53110, 0, "\n ") , ( 53119 , 0 , "let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta)\n }\n // I hate this.\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n" ) , (53110, 0, "\n ") , (53111, 8, "") , (53081, 0, "u") , (53002, 0, "u") , (53083, 0, "s") , (53003, 0, "s") , (53085, 0, "e") , (53004, 0, "e") , (53087, 0, "r") , (53005, 0, "r") , (53315, 12, " ") , (53234, 16, " ") , (53197, 12, " ") , (53195, 1, "") , (53316, 27, "") , (53315, 1, "") , (53406, 0, "\n }") , (53306, 10, "") , (53305, 0, ";") , (50310, 0, "\n // I hate this.") , (50192, 28, "") , (50282, 0, "\n }") , (50192, 12, " ") , (50178, 14, "") , (50177, 0, ";") , (50315, 0, "\n }") , (50288, 12, " ") , (50274, 14, "") , ( 50305 , 0 , "\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);" ) , (50179, 95, "") , (53407, 8, "\n ") , (53408, 8, "\n ") , (53408, 9, " ") , (53407, 9, " ") , (53416, 0, "\n ") , (53425, 0, "\n ") , (53417, 8, "") , ( 53426 , 0 , "\n notify(dest, ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });" ) , (53418, 8, "") , (53520, 12, " ") , (53481, 16, " ") , (53457, 16, " ") , (53419, 12, " ") , (53417, 1, "") , ( 52827 , 0 , ", mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker)" ) , (52849, 12, " ") , (52786, 0, ",") , (52787, 0, " ") , (52788, 0, "N") , (52788, 1, "") , (52787, 1, "") , (52786, 1, "") , (52785, 0, "N") , (52786, 0, "i") , (52787, 0, "t") , (52787, 1, "") , (52786, 1, "") , (52786, 0, "o") , (52787, 0, "t") , (52788, 0, "i") , (52789, 0, "f") , (52790, 0, "y") , (52791, 0, ",") , (52792, 0, " ") , (52835, 20, "") , (52821, 0, ", mut notify: Notify") , (52907, 1, "") , (52907, 0, ",") , ( 52857 , 94 , " where Notify: FnMut(&[C::Item], ItemMarker), where F: FnOnce(&mut C::Item, usize) {" ) , (52908, 6, "") , (53503, 4, "&") , (53504, 0, "[") , (53504, 1, "") , (53503, 1, "") , (53503, 0, "i") , (53504, 0, "t") , (53505, 0, "e") , (53506, 0, "m") , (53507, 0, ".") , (53508, 0, "f") , (53509, 0, "r") , (53510, 0, "o") , (53511, 0, "m") , (53512, 0, "(") , (53513, 0, ")") , (53508, 4, "i") , (53509, 0, "n") , (53510, 0, "t") , (53511, 0, "o") , (53503, 0, "s") , (53504, 0, "l") , (53505, 0, "i") , (53506, 0, "c") , (53507, 0, "e") , (53508, 0, ":") , (53509, 0, ":") , (53510, 0, "f") , (53511, 0, "r") , (53512, 0, "o") , (53513, 0, "m") , (53514, 0, "_") , (53515, 0, "r") , (53516, 0, "e") , (53517, 0, "f") , (53518, 0, "(") , (53523, 7, "") , (53523, 0, ")") , (53503, 0, "s") , (53504, 0, "t") , (53505, 0, "d") , (53506, 0, ":") , (53507, 0, ":") , (53561, 1, "") , (53561, 0, "c") , (53562, 0, "u") , (53563, 0, "r") , (53564, 0, "s") , (53565, 0, "o") , (53566, 0, "r") , (53567, 0, ".") , (53568, 0, "h") , (53569, 0, "e") , (53570, 0, "r") , (53571, 0, "e") , (53568, 4, "here_ptr()") , (53487, 0, "}") , (53198, 0, "{") , (53488, 1, "") , (53198, 1, "") , (53487, 0, "\n ") , (53496, 0, "l") , (53497, 0, "e") , (53498, 0, "t") , (53499, 0, " ") , (53500, 0, "e") , (53501, 0, " ") , (53502, 0, "=") , (53503, 0, " ") , (53504, 0, "c") , (53505, 0, "u") , (53506, 0, "r") , (53507, 0, "s") , (53508, 0, "o") , (53509, 0, "r") , (53510, 0, ".") , (53511, 0, "h") , (53512, 0, "e") , (53513, 0, "r") , (53514, 0, "e") , (53511, 4, "here_ptr()") , (53521, 0, ";") , (53596, 17, "e") , (53496, 26, "") , (53198, 0, "let e = cursor.here_ptr();") , (53198, 0, " ") , (53232, 0, "\n ") , (53535, 4, "") , (53233, 8, "") , (53523, 4, "") , (53522, 1, "") , (53232, 0, "\n let new_usersize = C::get_usersize(item);") , (53148, 50, "") , (53182, 0, "\n modify_fn(item, offset);") , (53115, 33, "") , (53149, 0, "\n let old_usersize = C::get_usersize(item);") , (53065, 50, "") , (53099, 0, "\n let item = unsafe { cursor.current_item_mut() };") , (53008, 57, "") , (53642, 0, "// ") , (53607, 0, "// ") , (53587, 0, "// ") , (53531, 0, "// ") , (53098, 0, " ") , (53099, 0, "a") , (53100, 0, "s") , (53101, 0, " ") , (53102, 0, "*") , (53103, 0, "m") , (53104, 0, "u") , (53105, 0, "t") , (53106, 0, " ") , (53107, 0, "_") , (53106, 2, "") , (53101, 5, "") , (53098, 3, "") , (53232, 0, "\n ") , (53241, 0, "l") , (53242, 0, "e") , (53243, 0, "t") , (53244, 0, " ") , (53245, 0, "s") , (53246, 0, "l") , (53247, 0, "i") , (53248, 0, "c") , (53249, 0, "e") , (53250, 0, " ") , (53251, 0, "=") , (53252, 0, " ") , (53253, 0, "std::slice::from_ref(item)") , (53279, 0, ";") , (53699, 3, "") , (53661, 3, "") , (53638, 3, "") , (53579, 3, "") , (53586, 26, "s") , (53587, 0, "l") , (53588, 0, "i") , (53589, 0, "c") , (53590, 0, "e") , (53586, 5, "std::slice::from_ref(item)") , (53233, 48, "") , (12701, 0, " ") , (12705, 0, "_") , (12706, 0, "m") , (12707, 0, "a") , (12708, 0, "r") , (12709, 0, "k") , (12710, 0, "e") , (12711, 0, "r") , (12712, 0, ":") , (12713, 0, " ") , (12714, 0, "P") , (12715, 0, "h") , (12716, 0, "n") , (12714, 3, "PhantomData") , (12617, 0, ",") , (12618, 0, " ") , (12618, 1, "") , (12617, 1, "") , (12604, 0, "'") , (12605, 0, "a") , (12606, 0, ",") , (12607, 0, " ") , (12729, 0, "<") , (12730, 0, "S") , (12731, 0, "k") , (12732, 0, "i") , (12733, 0, "p") , (12730, 4, "SkipList") , (12738, 0, "<") , (12730, 0, "&") , (12731, 0, "'") , (12732, 0, "a") , (12733, 0, " ") , (12743, 0, "C") , (12744, 0, ">") , (12745, 0, ">") , (12746, 0, ",") , (12625, 124, "") , (13326, 0, "\n ") , (13331, 0, "\n ") , (13327, 4, "") , ( 13332 , 0 , " // TODO: Add a phantom lifetime reference to the skip list root for safety.\n _marker: PhantomData<&'a SkipList>,\n\n" ) , (13412, 4, " ") , (13412, 8, " ") , (13328, 8, " ") , (13451, 1, "") , (13450, 1, "") , (13328, 79, "") , (13327, 1, "") , (13327, 0, "\n ") , (13332, 0, "/") , (13333, 0, "/") , (13334, 0, " ") , (13335, 0, "T") , (13336, 0, "h") , (13337, 0, "e") , (13338, 0, " ") , (13339, 0, "c") , (13340, 0, "u") , (13341, 0, "r") , (13342, 0, "s") , (13343, 0, "o") , (13344, 0, "r") , (13345, 0, " ") , (13346, 0, "c") , (13347, 0, "a") , (13348, 0, "n") , (13349, 0, "'") , (13350, 0, "t") , (13351, 0, " ") , (13352, 0, "o") , (13353, 0, "u") , (13354, 0, "t") , (13355, 0, "l") , (13356, 0, "i") , (13357, 0, "v") , (13358, 0, "e") , (13359, 0, " ") , (13360, 0, "t") , (13361, 0, "h") , (13362, 0, "e") , (13363, 0, " ") , (13364, 0, "s") , (13365, 0, "k") , (13366, 0, "i") , (13367, 0, "p") , (13368, 0, "l") , (13369, 0, "i") , (13370, 0, "s") , (13371, 0, "t") , (13372, 0, ".") , (13425, 0, "'") , (13426, 0, "a") , (13427, 0, ",") , (13428, 0, " ") , (13451, 0, "'") , (13452, 0, "a") , (13453, 0, " ") , (13453, 1, "") , (13453, 0, ",") , (13454, 0, " ") , (15936, 0, "'") , (15937, 0, "a") , (15938, 0, " ") , (16158, 0, "'") , (16159, 0, "a") , (16160, 0, " ") , (16487, 0, "'") , (16488, 0, "a") , (16489, 0, ",") , (16490, 0, " ") , (16527, 0, "'") , (16528, 0, "a") , (16529, 0, " ") , (16529, 1, "") , (16529, 0, ",") , (16530, 0, " ") , (17182, 0, "'") , (17183, 0, "a") , (17184, 0, ",") , (17185, 0, " ") , (17215, 0, "'") , (17216, 0, "a") , (17217, 0, ",") , (17218, 0, " ") , (17231, 0, "'") , (17232, 0, "a") , (17233, 0, ",") , (17234, 0, " ") , (17272, 0, "'") , (17273, 0, "a") , (17274, 0, ",") , (17275, 0, " ") , (27721, 0, "\n ") , (27734, 0, "_") , (27735, 0, "m") , (27736, 0, "a") , (27737, 0, "r") , (27738, 0, "k") , (27739, 0, "e") , (27740, 0, "r") , (27741, 0, ":") , (27742, 0, " ") , (27743, 0, "P") , (27744, 0, "h") , (27745, 0, "a") , (27746, 0, "n") , (27743, 4, "PhantomData") , (27754, 0, ",") , (29701, 0, "\n ") , (29714, 0, "_") , (29715, 0, "m") , (29716, 0, "a") , (29717, 0, "r") , (29718, 0, "k") , (29714, 5, "_marker") , (29721, 0, ":") , (29722, 0, " ") , (29723, 0, "P") , (29724, 0, "h") , (29725, 0, "a") , (29726, 0, "n") , (29723, 4, "PhantomData") , (53762, 0, "\n }") , (53751, 8, " ") , (53716, 12, " ") , (53696, 12, " ") , (53640, 8, " ") , (53639, 0, " ") , (53629, 10, "") , ( 53812 , 0 , "\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);" ) , (53538, 91, "") , ( 53721 , 0 , "\n cursor.update_offsets(self.head.height as usize, usersize_delta);" ) , (53460, 78, "") , (53643, 0, "\n if usersize_delta != 0 {") , (53620, 20, " ") , (53573, 24, " ") , (53541, 24, " ") , (53473, 20, " ") , (53460, 12, " ") , (53427, 33, "") , (53571, 16, " ") , (53528, 20, " ") , (53500, 20, " ") , (53436, 16, " ") , (53427, 8, " ") , (53555, 12, " ") , (53516, 16, " ") , (53492, 16, " ") , (53432, 12, " ") , (53427, 4, "") , (53550, 0, "\n ") , (53551, 8, "") , (52573, 0, "// ") , (52573, 3, "") , (52573, 0, "// ") , (52573, 3, "") , (12621, 0, ",") , (12622, 0, " ") , (12623, 0, "S") , (12624, 0, ":") , (12625, 0, " ") , (12626, 0, "&") , (12626, 1, "") , (12625, 1, "") , (12624, 1, "") , (12623, 1, "") , (12622, 1, "") , (12621, 1, "") , (12621, 0, ",") , (12622, 0, " ") , (12623, 0, "S") , (12624, 0, ":") , (12625, 0, " ") , (12626, 0, "S") , (12627, 0, "k") , (12628, 0, "i") , (12629, 0, "p") , (12626, 4, "SkipList") , (12634, 0, "<") , (12635, 0, "c") , (12636, 0, "'") , (12636, 1, "") , (12635, 1, "") , (12635, 0, "C") , (12636, 0, ">") , (12626, 0, "&") , (12638, 0, "'") , (12626, 0, "'") , (12627, 12, "a") , (12628, 1, "") , (12628, 0, " ") , (12629, 0, "+") , (12630, 0, " ") , (12631, 0, "S") , (12632, 0, "k") , (12633, 0, "i") , (12634, 0, "p") , (12631, 4, "SkipList") , (12639, 0, "<") , (12640, 0, "C") , (12641, 0, ">") , (12628, 14, "") , (12625, 0, " + SkipList") , (12639, 0, " ") , (12640, 0, "+") , (12627, 1, "") , (12626, 1, "") , (12625, 1, "") , (12625, 0, " ") , (12625, 1, "") , (12625, 0, " + ") , (12639, 2, "") , (12625, 14, "") , (12628, 0, " + SkipList") , (12628, 14, "") , (12625, 0, " + SkipList") , (12639, 0, " +") , (12625, 3, "") , (12625, 0, " ") , (12626, 0, "&") , (12621, 22, "") , (13378, 0, "// ") , (12604, 4, "") , (13368, 1, "") , (13368, 0, ",") , (13369, 0, " ") , (13370, 0, "b") , (13371, 0, "u") , (13372, 0, "t") , (13373, 0, " ") , (13374, 0, "d") , (13375, 0, "o") , (13376, 0, "i") , (13377, 0, "n") , (13378, 0, "g") , (13379, 0, " ") , (13380, 0, "t") , (13381, 0, "h") , (13382, 0, "i") , (13383, 0, "s") , (13384, 0, " ") , (13385, 0, "m") , (13386, 0, "a") , (13387, 0, "k") , (13388, 0, "e") , (13389, 0, "s") , (13390, 0, " ") , (13391, 0, "i") , (13392, 0, "t") , (13393, 0, " ") , (13394, 0, "t") , (13395, 0, "r") , (13396, 0, "i") , (13397, 0, "c") , (13398, 0, "k") , (13399, 0, "y") , (13400, 0, " ") , (13401, 0, "t") , (13402, 0, "o") , (13403, 0, " ") , (13404, 0, "a") , (13405, 0, "p") , (13406, 0, "s") , (13407, 0, "s") , (13404, 4, "p") , (13405, 0, "a") , (13406, 0, "s") , (13407, 0, "s") , (13408, 0, " ") , (13409, 0, "c") , (13410, 0, "u") , (13411, 0, "r") , (13412, 0, "s") , (13413, 0, "o") , (13414, 0, "r") , (13415, 0, "s") , (13416, 0, " ") , (13417, 0, "a") , (13418, 0, "r") , (13419, 0, "o") , (13420, 0, "u") , (13421, 0, "n") , (13422, 0, "d") , (13423, 0, " ") , (13424, 0, "i") , (13425, 0, "n") , (13426, 0, "t") , (13427, 0, " ") , (13428, 0, "h") , (13429, 0, "e") , (13430, 0, " ") , (13424, 7, "i") , (13425, 0, "n") , (13426, 0, " ") , (13427, 0, "t") , (13428, 0, "h") , (13429, 0, "e") , (13430, 0, " ") , (13431, 0, "S") , (13432, 0, "k") , (13433, 0, "i") , (13434, 0, "p") , (13435, 0, "l") , (13436, 0, "i") , (13437, 0, "s") , (13438, 0, "t") , (13439, 0, " ") , (13440, 0, "t") , (13441, 0, "y") , (13442, 0, "p") , (13443, 0, "e") , (13444, 0, ".") , (13445, 0, " ") , (13446, 0, "I") , (13447, 0, "'") , (13446, 2, "T") , (13447, 0, "h") , (13448, 0, "e") , (13449, 0, "r") , (13450, 0, "e") , (13451, 0, "'") , (13452, 0, "s") , (13453, 0, " ") , (13454, 0, "p") , (13455, 0, "r") , (13456, 0, "o") , (13457, 0, "b") , (13458, 0, "a") , (13459, 0, "b") , (13460, 0, "l") , (13461, 0, "y") , (13462, 0, " ") , (13463, 0, "a") , (13464, 0, " ") , (13465, 0, "w") , (13466, 0, "a") , (13467, 0, "y") , (13468, 0, " ") , (13469, 0, "o") , (13470, 0, "u") , (13471, 0, "t") , (13472, 0, " ") , (13473, 0, "o") , (13474, 0, "f") , (13475, 0, " ") , (13476, 0, "t") , (13477, 0, "h") , (13478, 0, "i") , (13479, 0, "s") , (13480, 0, " ") , (13481, 0, "m") , (13482, 0, "e") , (13483, 0, "s") , (13484, 0, "s") , (13485, 0, ",") , (13486, 0, " ") , (13487, 0, "b") , (13488, 0, "u") , (13489, 0, "t") , (13490, 0, " ") , (13491, 0, "I") , (13492, 0, "'") , (13493, 0, "m") , (13494, 0, " ") , (13495, 0, "n") , (13496, 0, "o") , (13497, 0, "t") , (13498, 0, " ") , (13499, 0, "g") , (13500, 0, "o") , (13501, 0, "o") , (13502, 0, "d") , (13503, 0, " ") , (13504, 0, "e") , (13505, 0, "n") , (13506, 0, "o") , (13507, 0, "u") , (13508, 0, "g") , (13509, 0, "h") , (13510, 0, " ") , (13511, 0, "a") , (13512, 0, "t") , (13513, 0, " ") , (13514, 0, "R") , (13515, 0, "u") , (13516, 0, "s") , (13517, 0, "t") , (13518, 0, " ") , (13514, 5, "r") , (13515, 0, "u") , (13516, 0, "s") , (13517, 0, "t") , (13518, 0, " ") , (13519, 0, "t") , (13520, 0, "o") , (13521, 0, " ") , (13522, 0, "f") , (13523, 0, "i") , (13524, 0, "g") , (13525, 0, "u") , (13526, 0, "r") , (13527, 0, "e") , (13528, 0, " ") , (13529, 0, "i") , (13530, 0, "t") , (13531, 0, " ") , (13532, 0, "o") , (13533, 0, "u") , (13534, 0, "t") , (13535, 0, ".") , (13536, 0, "\n ") , (13537, 4, "") , (13331, 0, "T") , (13332, 0, "O") , (13333, 0, "D") , (13334, 0, "O") , (13335, 0, ":") , (13336, 0, " ") , ( 13324 , 218 , " // TODO: The cursor can't outlive the skiplist, but doing this makes it\n // tricky to pass cursors around in the Skiplist type. There's probably a\n // way out of this mess, but I'm not good enough at rust to figure it out." ) , (13556, 1, "") , (13640, 1, "") , (13639, 1, "") , (13638, 1, "") , (13637, 1, "") , (16712, 1, "") , (16711, 1, "") , (16710, 1, "") , (16709, 1, "") , (17453, 1, "") , (17396, 1, "") , (17451, 1, "") , (17395, 1, "") , (17449, 1, "") , (17394, 1, "") , (17447, 1, "") , (17393, 1, "") , (27904, 0, "// ") , (29887, 0, "// ") , (53603, 124, "") , ( 53816 , 0 , "\n notify(std::slice::from_ref(item), ItemMarker {\n ptr: e,\n _phantom: PhantomData,\n });\n" ) , (13614, 1, "") , (13613, 1, "") , (13612, 1, "") , (13611, 1, "") , (16115, 1, "") , (16115, 0, "s") , (16116, 0, "t") , (16117, 0, "a") , (16118, 0, "t") , (16119, 0, "i") , (16120, 0, "c") , (16342, 1, "") , (16342, 0, "s") , (16343, 0, "t") , (16344, 0, "a") , (16345, 0, "t") , (16346, 0, "i") , (16347, 0, "c") , (16342, 6, "") , (16342, 0, "a") , (16115, 6, "") , (16115, 0, "a") , (13611, 0, "'a, ") , (52155, 0, "p") , (52156, 0, "u") , (52157, 0, "b") , (52158, 0, " ") , (17405, 4, "") , (17360, 4, "") , (16669, 4, "") , (11778, 5885, "") , ( 11778 , 0 , "\n/// This is a set of pointers with metadata into a location in the list needed\n/// to skip ahead, delete and insert in items. A cursor is reasonably heavy\n/// weight - we fill in and maintain as many entries as the height of the list\n/// dictates.\n///\n/// This is not needed for simply iterating sequentially through nodes and data.\n/// For that look at NodeIter.\n///\n/// Note most/all methods using cursors are unsafe. This is because cursors use\n/// raw mutable pointers into the list, so when used the following rules have to\n/// be followed:\n///\n/// - Whenever a write happens (insert/remove/replace), any cursor not passed to\n/// the write function is invalid.\n/// - While a cursor is held the SkipList struct should be considered pinned and\n/// must not be moved or deleted\n#[derive(Copy, Clone)]\npub struct Cursor {\n /// The global user position of the cursor in the entire list. This is used\n /// for when the max seen height increases, so we can populate previously\n /// unused entries in the cursor and in the head node.\n ///\n /// This field isn't strictly necessary - earlier versions tacked this on to\n /// the last item in entries... I'm still not sure the cleanest way to do\n /// this.\n userpos: usize,\n\n /// When the userpos of an entry is 0 (totally valid and useful), a cursor\n /// becomes ambiguous with regard to where exactly its pointing in the\n /// current entry. This is used to resolve that ambiguity.\n local_index: usize,\n\n entries: [SkipEntry; MAX_HEIGHT],\n\n // TODO: The cursor can't outlive the skiplist, but doing this makes it\n // tricky to pass cursors around in the Skiplist type. There's probably a\n // way out of this mess, but I'm not good enough at rust to figure it out.\n // _marker: PhantomData<&'a SkipList>,\n}\n\nimpl<'a, C: ListConfig> Cursor {\n fn update_offsets(&mut self, height: usize, by: isize) {\n for i in 0..height {\n unsafe {\n // This is weird but makes sense when you realise the nexts in\n // the cursor are pointers into the elements that have the\n // actual pointers.\n // Also adding a usize + isize is awful in rust :/\n let skip = &mut (*self.entries[i].node).nexts_mut()[i].skip_usersize;\n *skip = skip.wrapping_add(by as usize);\n }\n }\n }\n\n /// Move a cursor to the start of the next node. Returns the new node (or a\n /// nullptr if this is the end of the list).\n fn advance_node(&mut self) -> *mut Node {\n unsafe {\n let SkipEntry { node: e, skip_usersize: offset } = self.entries[0];\n // offset tells us how far into the current element we are (in\n // usersize). We need to increment the offsets by the entry's\n // remaining length to get to the start of the next node.\n let advance_by = (*e).get_userlen() - offset;\n let next = (*e).get_next_ptr();\n let height = (*next).height as usize;\n\n for i in 0..height {\n self.entries[i] = SkipEntry {\n node: next,\n skip_usersize: 0\n };\n }\n\n for i in height..self.entries.len() {\n self.entries[i].skip_usersize += advance_by;\n }\n\n self.userpos += advance_by;\n self.local_index = 0;\n\n next\n }\n }\n\n fn is_at_node_end(&self) -> bool {\n self.local_index == unsafe { (*self.here_ptr()).num_items } as usize\n }\n\n fn advance_item(&mut self, height: u8) {\n if self.is_at_node_end() { self.advance_node(); }\n let usersize = C::get_usersize(unsafe { self.current_item() });\n\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize += usersize;\n }\n self.userpos += usersize;\n self.local_index += 1;\n }\n\n fn advance_by_items(&mut self, num: usize, height: u8) {\n for _ in 0..num { self.advance_item(height); }\n }\n\n fn move_to_item_start(&mut self, height: u8, offset: usize) {\n for entry in &mut self.entries[0..height as usize] {\n entry.skip_usersize -= offset;\n }\n self.userpos -= offset;\n }\n\n unsafe fn current_item(&mut self) -> &'a C::Item {\n let node = &*self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &*(node.items[self.local_index].as_ptr())\n }\n\n unsafe fn current_item_mut(&mut self) -> &'a mut C::Item {\n let node = &mut *self.here_ptr();\n debug_assert!(node.num_items as usize >= self.local_index);\n &mut *(node.items[self.local_index].as_mut_ptr())\n }\n\n /// Get the pointer to the cursor's current node\n fn here_ptr(&self) -> *mut Node {\n self.entries[0].node\n }\n}\n\nimpl PartialEq for Cursor {\n /// Warning: This returns false if one cursor is at the end of a node, and\n /// the other at the start of the next node. Almost all code in this library\n /// leaves cursors at the end of nodes, so this shouldn't matter too much in\n /// practice.\n fn eq(&self, other: &Self) -> bool {\n if self.userpos != other.userpos\n || self.local_index != other.local_index {return false; }\n\n for i in 0..MAX_HEIGHT {\n let a = &self.entries[i];\n let b = &other.entries[i];\n if a.node != b.node || a.skip_usersize != b.skip_usersize { return false; }\n }\n true\n }\n}\nimpl Eq for Cursor {}\n\nimpl fmt::Debug for Cursor {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_struct(\"Cursor\")\n .field(\"userpos\", &self.userpos)\n .field(\"local_index\", &self.local_index)\n .finish()\n }\n}\n" ) , (1835, 0, "// ") , (1790, 1, "") , (1789, 1, "") , (1788, 1, "") , (1787, 1, "") , (36084, 0, "// ") , (39905, 0, "// ") , (51076, 0, "// ") , (53905, 0, "// ") , (30972, 0, "u") , (30973, 0, "n") , (30974, 0, "s") , (30975, 0, "a") , (30976, 0, "f") , (30977, 0, "e") , (30978, 0, " ") , (30972, 7, "") , (30976, 0, "u") , (30977, 0, "n") , (30978, 0, "s") , (30979, 0, "a") , (30980, 0, "f") , (30981, 0, "e") , (30982, 0, " ") , (31183, 17, "") , (31754, 12, " ") , (31661, 12, " ") , (31646, 12, " ") , (31628, 16, " ") , (31575, 20, " ") , (31550, 16, " ") , (31523, 20, " ") , (31480, 20, " ") , (31437, 20, " ") , (31366, 16, " ") , (31295, 12, " ") , (31255, 12, " ") , (31216, 12, " ") , (31183, 12, " ") , (31752, 10, "") , (30967, 0, "\n ") , (30972, 0, "/") , (30973, 0, "/") , (30974, 0, "/") , (30975, 0, " ") , (30976, 0, "S") , (30977, 0, "A") , (30978, 0, "F") , (30979, 0, "E") , (30980, 0, "T") , (30981, 0, "Y") , (30982, 0, ":") , (30983, 0, " ") , (30984, 0, "T") , (30985, 0, "h") , (30986, 0, "e") , (30987, 0, " ") , (30988, 0, "m") , (30988, 1, "") , (30984, 4, "S") , (30985, 0, "e") , (30986, 0, "l") , (30987, 0, "f") , (30988, 0, " ") , (30989, 0, "m") , (30990, 0, "u") , (30991, 0, "s") , (30992, 0, "t") , (30993, 0, " ") , (30994, 0, "o") , (30995, 0, "u") , (30996, 0, "t") , (30997, 0, "l") , (30998, 0, "a") , (30999, 0, "s") , (31000, 0, " ") , (31001, 0, "t") , (31001, 1, "") , (31000, 1, "") , (31000, 0, "t") , (31001, 0, " ") , (31002, 0, "t") , (31003, 0, "h") , (31004, 0, "e") , (31005, 0, " ") , (31006, 0, "l") , (31007, 0, "i") , (31008, 0, "f") , (31009, 0, "e") , (31010, 0, "t") , (31011, 0, "i") , (31012, 0, "m") , (31013, 0, "e") , (31006, 8, "m") , (31007, 0, "a") , (31008, 0, "r") , (31009, 0, "k") , (31010, 0, "e") , (31011, 0, "r") , (31012, 0, " ") , (31013, 0, "a") , (31014, 0, "n") , (31015, 0, "d") , (31016, 0, " ") , (31017, 0, "n") , (31018, 0, "o") , (31019, 0, "t") , (31020, 0, " ") , (31021, 0, "h") , (31022, 0, "a") , (31023, 0, "v") , (31024, 0, "e") , (31025, 0, " ") , (31026, 0, "b") , (31027, 0, "e") , (31028, 0, "e") , (31029, 0, "n") , (31030, 0, " ") , (31031, 0, "m") , (31032, 0, "o") , (31033, 0, "v") , (31034, 0, "e") , (31035, 0, "d") , (31036, 0, " ") , (31037, 0, "s") , (31038, 0, "i") , (31039, 0, "n") , (31040, 0, "c") , (31041, 0, "e") , (31042, 0, " ") , (31043, 0, "t") , (31044, 0, "h") , (31045, 0, "e") , (31046, 0, " ") , (31047, 0, "m") , (31048, 0, "a") , (31049, 0, "r") , (31050, 0, "k") , (31051, 0, "e") , (31052, 0, "r") , (31053, 0, " ") , (31054, 0, "w") , (31055, 0, "a") , (31056, 0, "s") , (31057, 0, " ") , (31058, 0, "c") , (31059, 0, "r") , (31060, 0, "e") , (31061, 0, "a") , (31062, 0, "t") , (31063, 0, "e") , (31064, 0, "d") , (31065, 0, ".") , (31066, 0, " ") , (31067, 0, "S") , (31068, 0, "e") , (31069, 0, "l") , (31070, 0, "f") , (31071, 0, " ") , (31072, 0, "s") , (31073, 0, "h") , (31074, 0, "o") , (31075, 0, "u") , (31076, 0, "l") , (31077, 0, "d") , (31078, 0, " ") , (31079, 0, "r") , (31080, 0, "e") , (31081, 0, "a") , (31082, 0, "l") , (31083, 0, "l") , (31084, 0, "y") , (31085, 0, " ") , (31086, 0, "b") , (31087, 0, "e") , (31088, 0, " ") , (31089, 0, "P") , (31090, 0, "i") , (31091, 0, "n") , (31092, 0, "<") , (31093, 0, "*") , (31093, 1, "") , (31093, 0, "&") , (31093, 1, "") , (31093, 0, ">") , (31094, 0, "!") , ( 30968 , 127 , " /// SAFETY: Self must outlast the marker and not have been moved since the\n /// marker was created. Self should really be Pin<>!" ) , (1764, 0, "\n") , (1765, 0, "#") , (1766, 0, "[") , (1767, 0, "d") , (1768, 0, "e") , (1769, 0, "r") , (1770, 0, "i") , (1771, 0, "v") , (1772, 0, "e") , (1773, 0, "(") , (1774, 0, "C") , (1774, 1, "Clone") , (1779, 0, ",") , (1780, 0, " ") , (1780, 1, "") , (1780, 0, " ") , (1781, 0, "C") , (1782, 0, "o") , (1783, 0, "p") , (1784, 0, "y") , (1785, 0, ")") , (1786, 0, "]") , (53052, 0, "// ") , (53135, 0, "\n ") , (53144, 0, "s") , (53145, 0, "e") , (53146, 0, "l") , (53147, 0, "f") , (53148, 0, ".") , (53149, 0, "m") , (53150, 0, "o") , (53151, 0, "d") , (53152, 0, "i") , (53153, 0, "f") , (53149, 5, "modify_at(userpos: usize, mut notify: Notify, modify_fn: F)") , (53159, 14, "s") , (53160, 0, "t") , (53161, 0, "a") , (53162, 0, "r") , (53163, 0, "t") , (53164, 0, "_") , (53165, 0, "u") , (53166, 0, "s") , (53167, 0, "e") , (53168, 0, "r") , (53169, 0, "p") , (53170, 0, "o") , (53171, 0, "s") , (53174, 18, "S") , (53175, 0, "e") , (53176, 0, "l") , (53177, 0, "f") , (53178, 0, ":") , (53179, 0, ":") , (53180, 0, "N") , (53180, 1, "") , (53180, 0, "n") , (53181, 0, "o") , (53180, 2, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (53190, 18, "") , (53190, 1, "") , (53189, 1, "") , (53189, 24, "") , (53191, 12, "") , (53191, 0, "|") , (53192, 0, "i") , (53193, 0, "t") , (53194, 0, "e") , (53195, 0, "m") , (53196, 0, ",") , (53197, 0, " ") , (53198, 0, "o") , (53199, 0, "f") , (53200, 0, "f") , (53201, 0, "s") , (53202, 0, "e") , (53203, 0, "t") , (53204, 0, "|") , (53205, 0, " ") , (53206, 0, "{") , (53207, 0, "\n ") , (53220, 0, "\n ") , (53221, 8, " }") , (53220, 0, "a") , (53221, 0, "s") , (53222, 0, "s") , (53220, 3, "assert_eq!") , (53230, 0, "(") , (53231, 0, "o") , (53232, 0, "f") , (53233, 0, "f") , (53234, 0, "s") , (53235, 0, "e") , (53236, 0, "t") , (53237, 0, ",") , (53238, 0, " ") , (53239, 0, "0") , (53240, 0, ",") , (53241, 0, " ") , (53242, 0, "\"") , (53243, 0, "r") , (53244, 0, "e") , (53245, 0, "p") , (53246, 0, "l") , (53247, 0, "a") , (53248, 0, "c") , (53249, 0, "e") , (53250, 0, "_") , (53251, 0, "a") , (53252, 0, "t") , (53253, 0, " ") , (53254, 0, "c") , (53255, 0, "a") , (53256, 0, "n") , (53257, 0, "n") , (53258, 0, "o") , (53259, 0, "t") , (53260, 0, " ") , (53254, 7, "m") , (53255, 0, "u") , (53256, 0, "s") , (53257, 0, "t") , (53258, 0, " ") , (53259, 0, "m") , (53260, 0, "o") , (53261, 0, "d") , (53262, 0, "i") , (53263, 0, "f") , (53264, 0, "y") , (53265, 0, " ") , (53266, 0, "t") , (53267, 0, "h") , (53268, 0, "e") , (53269, 0, " ") , (53270, 0, "e") , (53271, 0, "n") , (53272, 0, "t") , (53273, 0, "i") , (53274, 0, "r") , (53275, 0, "e") , (53276, 0, " ") , (53277, 0, "i") , (53278, 0, "t") , (53279, 0, "e") , (53280, 0, "m") , (53281, 0, "\"") , (53282, 0, ")") , (53283, 0, ";") , (53284, 0, "\n ") , (53297, 0, "*") , (53298, 0, "i") , (53299, 0, "t") , (53300, 0, "e") , (53301, 0, "m") , (53302, 0, " ") , (53303, 0, " ") , (53303, 1, "") , (53303, 0, "=") , (53304, 0, " ") , (53136, 180, "") , (53135, 1, "") , (53052, 3, "") , (51850, 0, "// ") , (51920, 0, "\n ") , (51929, 0, "\n ") , (51921, 8, "") , ( 51930 , 0 , " self.modify_at(start_userpos, Self::no_notify, |item, offset| {\n assert_eq!(offset, 0, \"replace_at must modify the entire item\");\n *item = \n })" ) , (51922, 16, " ") , (51922, 8, " ") , (51922, 16, " ") , (52100, 0, "// ") , (52079, 0, "// ") , (52002, 0, "// ") , (51930, 0, "// ") , (51850, 3, "") , (54399, 1, "") , (54399, 0, "\n ") , (54404, 0, "where Notify: FnMut(&[C::Item], ItemMarker), ") , (54452, 6, "") , (54383, 0, "mut notify: Notify, ") , (54349, 0, "N") , (54350, 0, "o") , (54351, 0, "t") , (54352, 0, "i") , (54353, 0, "f") , (54354, 0, "y") , (54355, 0, ",") , (54356, 0, " ") , (54391, 19, "") , (54390, 1, "") , (54406, 0, "mut notify: Notify,") , (54424, 1, "") , (54406, 0, ",") , (54407, 0, " ") , (55993, 0, ",") , (55994, 0, " ") , (55995, 0, "S") , (55996, 0, "e") , (55997, 0, "l") , (55998, 0, "f") , (55999, 0, ":") , (56000, 0, ":") , (56001, 0, "n") , (56002, 0, "o") , (56001, 2, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (56011, 18, "") , (56011, 1, "") , (56011, 1, "") , (56011, 1, "") , (56011, 1, "") , (56011, 1, "") , (56011, 1, "") , (56011, 1, "") , (56011, 17, "") , (56010, 1, "") , (56010, 1, "") , (55784, 20, "&") , (55608, 20, "&") , (55399, 20, "&") , (54847, 20, "&") , (55728, 0, "n") , (55571, 0, "n") , (55381, 0, "n") , (54848, 0, "n") , (55732, 0, "o") , (55574, 0, "o") , (55383, 0, "o") , (54849, 0, "o") , (55736, 0, "t") , (55577, 0, "t") , (55385, 0, "t") , (54850, 0, "t") , (55740, 0, "i") , (55580, 0, "i") , (55387, 0, "i") , (54851, 0, "i") , (55744, 0, "f") , (55583, 0, "f") , (55389, 0, "f") , (54852, 0, "f") , (55748, 0, "y") , (55586, 0, "y") , (55391, 0, "y") , (54853, 0, "y") , (55746, 0, "m") , (55583, 0, "m") , (55387, 0, "m") , (54848, 0, "m") , (55750, 0, "u") , (55586, 0, "u") , (55389, 0, "u") , (54849, 0, "u") , (55754, 0, "t") , (55589, 0, "t") , (55391, 0, "t") , (54850, 0, "t") , (55758, 0, " ") , (55592, 0, " ") , (55393, 0, " ") , (54851, 0, " ") , (21405, 0, ",") , (21406, 0, " ") , (21407, 0, "S") , (21408, 0, "e") , (21409, 0, "l") , (21410, 0, "f") , (21411, 0, ":") , (21412, 0, ":") , (21413, 0, "n") , (21414, 0, "o") , (21413, 2, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (21422, 44, "") , (56641, 0, "\n ") , (56646, 0, "\n ") , (56642, 4, "") , (56647, 0, "p") , (56648, 0, "u") , (56649, 0, "b") , (56650, 0, " ") , (56651, 0, "f") , (56652, 0, "n") , (56653, 0, " ") , (56654, 0, "e") , (56655, 0, "i") , (56656, 0, "d") , (56656, 1, "") , (56655, 1, "") , (56655, 0, "d") , (56656, 0, "i") , (56657, 0, "t") , (56658, 0, "(") , (56659, 0, "&") , (56660, 0, "m") , (56661, 0, "u") , (56662, 0, "t") , (56663, 0, " ") , (56664, 0, "s") , (56665, 0, "e") , (56666, 0, "l") , (56667, 0, "f") , (56668, 0, ")") , (56668, 0, ",") , (56669, 0, " ") , (56658, 0, "<") , (56659, 0, "R") , (56660, 0, ">") , (56674, 0, " ") , (56675, 0, "-") , (56676, 0, ">") , (56677, 0, " ") , (56678, 0, "R") , (56659, 0, "F") , (56660, 0, ",") , (56661, 0, " ") , (56676, 0, "f") , (56677, 0, ":") , (56678, 0, " ") , (56679, 0, "F") , (56686, 0, " ") , (56686, 1, "") , (56686, 0, "\n ") , (56691, 0, "w") , (56692, 0, "h") , (56693, 0, "e") , (56694, 0, "r") , (56695, 0, "e") , (56696, 0, " ") , (56697, 0, "F") , (56698, 0, ":") , (56699, 0, " ") , (56700, 0, "F") , (56701, 0, "n") , (56702, 0, "O") , (56703, 0, "n") , (56700, 4, "FnOnce") , (56706, 0, "(") , (56707, 0, "E") , (56708, 0, "d") , (56709, 0, "i") , (56710, 0, "t") , (56711, 0, "<") , (56712, 0, "C") , (56713, 0, ">") , (56714, 0, ")") , (56707, 0, "&") , (56708, 0, "m") , (56709, 0, "u") , (56710, 0, "t") , (56711, 0, " ") , (56720, 0, " ") , (56721, 0, "{") , (56722, 0, "\n ") , (56731, 0, "\n ") , (56723, 8, "") , (56724, 8, " }") , (56723, 0, " ") , (56723, 8, "") , (56675, 0, " ") , (56676, 0, "u") , (56677, 0, "s") , (56678, 0, "e") , (56679, 0, "r") , (56680, 0, "p") , (56681, 0, "o") , (56682, 0, "s") , (56683, 0, ":") , (56684, 0, " ") , (56685, 0, "u") , (56686, 0, "s") , (56687, 0, "i") , (56688, 0, "z") , (56689, 0, "e") , (56690, 0, ",") , (57754, 0, "\n") , (57755, 0, "\n") , (57756, 0, "\n") , (57757, 0, "\n") , (57758, 0, "\n") , (57755, 0, "s") , (57756, 0, "t") , (57757, 0, "r") , (57758, 0, "u") , (57759, 0, "c") , (57760, 0, "t") , (57761, 0, " ") , (57762, 0, "E") , (57763, 0, "d") , (57764, 0, "i") , (57765, 0, "t") , (57766, 0, " ") , (57755, 0, "p") , (57756, 0, "u") , (57757, 0, "b") , (57758, 0, " ") , (57771, 0, "{") , (57772, 0, "\n ") , (57777, 0, "\n ") , (57773, 4, "") , (57774, 4, "}") , (57773, 0, " ") , (57777, 0, "&") , (57777, 1, "") , (57777, 0, "l") , (57778, 0, "i") , (57779, 0, "s") , (57780, 0, "t") , (57781, 0, ":") , (57782, 0, " ") , (57783, 0, "&") , (57784, 0, "m") , (57785, 0, "u") , (57786, 0, "t") , (57787, 0, " ") , (57770, 0, "<") , (57771, 0, "'") , (57772, 0, "a") , (57773, 0, ">") , (57788, 0, "'") , (57789, 0, "a") , (57790, 0, " ") , (57795, 0, "C") , (57796, 0, "R") , (57797, 0, "D") , (57798, 0, "T") , (57795, 4, "S") , (57796, 0, "k") , (57797, 0, "i") , (57798, 0, "l") , (57795, 4, "SkipList") , (57773, 0, ",") , (57774, 0, " ") , (57775, 0, "C") , (57776, 0, ":") , (57777, 0, " ") , (57778, 0, "L") , (57779, 0, "i") , (57780, 0, "s") , (57778, 3, "ListConfig") , (57818, 0, "<") , (57819, 0, "C") , (57820, 0, ">") , (57821, 0, ",") , (57822, 0, "\n ") , (57827, 0, "c") , (57828, 0, "u") , (57829, 0, "r") , (57830, 0, "s") , (57831, 0, "o") , (57832, 0, "r") , (57833, 0, ":") , (57834, 0, " ") , (57835, 0, "C") , (57836, 0, "u") , (57837, 0, "r") , (57835, 3, "Cursor") , (57841, 0, "<") , (57842, 0, "C") , (57843, 0, ">") , (57844, 0, ",") , (57845, 0, "\n ") , (57850, 0, "l") , (57851, 0, "o") , (57852, 0, "c") , (57853, 0, "a") , (57854, 0, "l") , (57855, 0, "_") , (57856, 0, "o") , (57857, 0, "f") , (57858, 0, "f") , (57859, 0, "s") , (57860, 0, "e") , (57861, 0, "t") , (57862, 0, ":") , (57863, 0, " ") , (57864, 0, "u") , (57865, 0, "s") , (57866, 0, "i") , (57867, 0, "z") , (57868, 0, "e") , (57869, 0, ",") , (57870, 0, " ") , (57871, 0, "/") , (57872, 0, "/") , (57873, 0, " ") , (57874, 0, "O") , (57875, 0, "f") , (57876, 0, "f") , (57877, 0, "s") , (57878, 0, "e") , (57879, 0, "t") , (57880, 0, " ") , (57881, 0, "i") , (57882, 0, "n") , (57883, 0, "t") , (57884, 0, "o") , (57885, 0, " ") , (57886, 0, "t") , (57887, 0, "h") , (57888, 0, "e") , (57889, 0, " ") , (57890, 0, "c") , (57891, 0, "u") , (57892, 0, "r") , (57893, 0, "r") , (57894, 0, "e") , (57895, 0, "n") , (57896, 0, "t") , (57897, 0, " ") , (57898, 0, "i") , (57899, 0, "t") , (57900, 0, "e") , (57901, 0, "m") , (57902, 0, ".") , (57907, 0, "i") , (57908, 0, "m") , (57909, 0, "p") , (57910, 0, "l") , (57911, 0, " ") , (57912, 0, "E") , (57913, 0, "d") , (57914, 0, "i") , (57915, 0, "t") , (57911, 0, "<") , (57912, 0, "'") , (57913, 0, "a") , (57914, 0, ",") , (57915, 0, " ") , (57916, 0, "C") , (57917, 0, ":") , (57918, 0, " ") , (57919, 0, "L") , (57920, 0, "i") , (57921, 0, "s") , (57922, 0, "t") , (57919, 4, "ListConfig") , (57929, 0, ">") , (57935, 0, "<") , (57936, 0, "'") , (57937, 0, "a") , (57938, 0, ",") , (57939, 0, " ") , (57940, 0, "C") , (57941, 0, ">") , (57942, 0, " ") , (57943, 0, "{") , (57944, 0, "\n ") , (57949, 0, "\n ") , (57945, 4, "") , (57946, 4, "}") , (56739, 0, " ") , (56747, 0, "l") , (56748, 0, "e") , (56749, 0, "t") , (56750, 0, " ") , (56751, 0, "e") , (56752, 0, "d") , (56753, 0, "i") , (56754, 0, "t") , (56755, 0, " ") , (56756, 0, "=") , (56757, 0, " ") , (56758, 0, "E") , (56759, 0, "d") , (56760, 0, "i") , (56761, 0, "t") , (56762, 0, " ") , (56763, 0, "{") , (56764, 0, "\n ") , (56765, 12, " }") , (56764, 0, "\n ") , (56777, 0, "l") , (56778, 0, "i") , (56779, 0, "s") , (56780, 0, "t") , (56781, 0, ":") , (56782, 0, " ") , (56783, 0, "s") , (56784, 0, "e") , (56785, 0, "l") , (56786, 0, "f") , (56787, 0, ",") , (56788, 0, "\n ") , (56801, 0, "c") , (56802, 0, "u") , (56803, 0, "r") , (56804, 0, "s") , (56805, 0, "o") , (56806, 0, "r") , (56807, 0, ":") , (56808, 0, " ") , (56809, 0, "c") , (56810, 0, "u") , (56811, 0, "r") , (56812, 0, "s") , (56809, 4, "t") , (56810, 0, "h") , (56811, 0, "i") , (56812, 0, "s") , (56813, 0, ".") , (56814, 0, "c") , (56809, 6, "s") , (56810, 0, "e") , (56811, 0, "l") , (56812, 0, "f") , (56813, 0, ".") , (56814, 0, "c") , (56815, 0, "u") , (56816, 0, "r") , (56816, 1, "") , (56815, 1, "") , (56738, 0, "\n ") , (56747, 0, "l") , (56748, 0, "e") , (56749, 0, "t") , (56750, 0, " ") , (56751, 0, "(") , (56752, 0, "c") , (56753, 0, "u") , (56754, 0, "r") , (56755, 0, "s") , (56756, 0, "o") , (56757, 0, "r") , (56758, 0, ",") , (56759, 0, " ") , (56760, 0, "o") , (56761, 0, "f") , (56762, 0, "f") , (56763, 0, "s") , (56764, 0, "e") , (56765, 0, "t") , (56766, 0, ")") , (56767, 0, " ") , (56768, 0, "=") , (56769, 0, " ") , (56770, 0, "s") , (56771, 0, "e") , (56772, 0, "l") , (56773, 0, "f") , (56774, 0, ".") , (56775, 0, "i") , (56776, 0, "t") , (56777, 0, "e") , (56778, 0, "r") , (56779, 0, "_") , (56775, 5, "iter_at_userpos(target_userpos: usize)") , (56791, 21, "u") , (56792, 0, "s") , (56793, 0, "e") , (56794, 0, "r") , (56795, 0, "p") , (56796, 0, "o") , (56797, 0, "s") , (56799, 0, ";") , (56871, 6, "c") , (56872, 0, "u") , (56873, 0, "r") , (56874, 0, "s") , (56875, 0, "o") , (56876, 0, "r") , (56877, 0, ",") , (56878, 0, "\n ") , (56891, 0, "l") , (56892, 0, "o") , (56893, 0, "c") , (56894, 0, "a") , (56895, 0, "l") , (56891, 5, "local_offset") , (56903, 0, ":") , (56904, 0, " ") , (56905, 0, "o") , (56906, 0, "f") , (56907, 0, "f") , (56908, 0, "s") , (56909, 0, "e") , (56910, 0, "t") , (56921, 0, ";") , (56922, 0, "\n ") , (56931, 0, "\n ") , (56923, 8, "") , (56932, 0, "f") , (56933, 0, "(") , (56934, 0, "e") , (56935, 0, "d") , (56936, 0, "i") , (56937, 0, "t") , (56938, 0, ")") , (56934, 0, "*") , (56934, 1, "") , (56934, 0, "&") , (56935, 0, "m") , (56936, 0, "u") , (56937, 0, "t") , (56938, 0, " ") , (56736, 0, " ") , (56737, 0, "-") , (56738, 0, ">") , (56739, 0, " ") , (56740, 0, "R") , (56817, 0, " ") , (56818, 0, "m") , (56819, 0, "u") , (56820, 0, "t") , (56821, 0, " ") , (56821, 1, "") , (56932, 0, "\n ") , (56941, 0, "/") , (56942, 0, "/") , (56943, 0, " ") , (56944, 0, "T") , (56945, 0, "O") , (56946, 0, "D") , (56947, 0, "O") , (56948, 0, ":") , (56949, 0, " ") , (56950, 0, "O") , (56951, 0, "r") , (56952, 0, " ") , (56953, 0, "m") , (56954, 0, "a") , (56955, 0, "y") , (56956, 0, "b") , (56957, 0, "e") , (56958, 0, " ") , (56959, 0, "I") , (56960, 0, " ") , (56961, 0, "s") , (56962, 0, "h") , (56963, 0, "o") , (56964, 0, "u") , (56965, 0, "l") , (56966, 0, "d") , (56967, 0, " ") , (56968, 0, "p") , (56969, 0, "a") , (56970, 0, "s") , (56971, 0, "s") , (56972, 0, " ") , (56973, 0, "o") , (56974, 0, "w") , (56975, 0, "n") , (56976, 0, "e") , (56977, 0, "r") , (56978, 0, "s") , (56979, 0, "h") , (56980, 0, "i") , (56981, 0, "p") , (56982, 0, " ") , (56983, 0, "h") , (56984, 0, "e") , (56985, 0, "r") , (56986, 0, "e") , (56987, 0, "?") , (55999, 643, "") , ( 57572 , 0 , "\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.iter_at_userpos(userpos);\n if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n" ) , (57572, 643, "") , ( 55999 , 0 , "\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.iter_at_userpos(userpos);\n if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n" ) , (56640, 0, "// ") , (56630, 0, "// ") , (56557, 0, "// ") , (56500, 0, "// ") , (56464, 0, "// ") , (56402, 0, "// ") , (56333, 0, "// ") , (56267, 0, "// ") , (56228, 0, "// ") , (56168, 0, "// ") , (56125, 0, "// ") , (56073, 0, "// ") , (56004, 0, "// ") , ( 58254 , 0 , "\n pub fn del_at(&mut self, mut userpos: usize, num_items: usize) {\n userpos = min(userpos, self.get_userlen());\n // We can't easily trim num_items.\n // num_items = min(length, self.num_chars() - pos);\n if num_items == 0 { return; }\n\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.del_at_iter(&mut cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.iter_at_userpos(userpos);\n if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n" ) , (58282, 20, "") , (58304, 194, "") , (58304, 66, "") , (58304, 68, "") , ( 58304 , 0 , " assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n" ) , (58323, 0, "s") , (58324, 0, "e") , (58325, 0, "l") , (58326, 0, "f") , (58327, 0, ".") , (58328, 0, "l") , (58329, 0, "o") , (58330, 0, "c") , (58331, 0, "a") , (58332, 0, "l") , (58333, 0, "_") , (58328, 5, "item") , (58159, 5, "item") , (56939, 5, "item") , (58402, 0, ".") , (58403, 0, "l") , (58404, 0, "i") , (58405, 0, "s") , (58406, 0, "t") , (58425, 6, "s") , (58426, 0, "e") , (58427, 0, "l") , (58428, 0, "f") , (58429, 0, ".") , (58430, 0, "c") , (58431, 0, "u") , (58432, 0, "r") , (58433, 0, "s") , (58434, 0, "o") , (58435, 0, "r") , (58515, 4, "s") , (58516, 0, "e") , (58517, 0, "l") , (58518, 0, "f") , (58519, 0, ".") , (58520, 0, "l") , (58521, 0, "i") , (58522, 0, "s") , (58523, 0, "t") , (58541, 7, "s") , (58542, 0, "e") , (58543, 0, "l") , (58544, 0, "f") , (58545, 0, ".") , (58541, 5, "userpos") , (58632, 0, "// ") , (58559, 0, "// ") , (58497, 0, "// ") , (58461, 0, "// ") , (58421, 3, "") , (58421, 1, "") , (43534, 4, "") , (58445, 193, "") , (58444, 1, "") , (58248, 1, "") , (58442, 0, "\n ") , (58451, 0, "\n ") , (58443, 8, "") , (58452, 0, "/") , (58453, 0, "/") , (58454, 0, " ") , (58455, 0, "T") , (58456, 0, "O") , (58457, 0, "D") , (58458, 0, "O") , (58459, 0, ":") , (58460, 0, " ") , (58461, 0, "C") , (58462, 0, "h") , (58463, 0, "e") , (58464, 0, "c") , (58465, 0, "k") , (58466, 0, " ") , (58467, 0, "t") , (58468, 0, "h") , (58469, 0, "e") , (58470, 0, " ") , (58471, 0, "c") , (58472, 0, "u") , (58473, 0, "r") , (58474, 0, "s") , (58475, 0, "o") , (58476, 0, "r") , (58477, 0, " ") , (58478, 0, "i") , (58479, 0, "s") , (58480, 0, " ") , (58481, 0, "s") , (58482, 0, "t") , (58483, 0, "i") , (58484, 0, "l") , (58485, 0, "l") , (58486, 0, " ") , (58487, 0, "v") , (58488, 0, "a") , (58489, 0, "l") , (58490, 0, "i") , (58491, 0, "d") , (58492, 0, "?") , (56676, 0, "\n ") , (56681, 0, "\n ") , (56677, 4, "") , ( 56682 , 0 , "pub fn del_at(&mut self, mut userpos: usize, num_items: usize)" ) , (56744, 0, " ") , (56745, 0, "{") , (56746, 0, "\n ") , (56755, 0, "\n ") , (56747, 8, "") , (56748, 8, " }") , (56747, 0, " ") , (56755, 0, "s") , (56756, 0, "e") , (56757, 0, "l") , (56758, 0, "f") , (56759, 0, ".") , (56760, 0, "e") , (56761, 0, "d") , (56762, 0, "i") , (56763, 0, "t") , (56764, 0, "(") , (56765, 0, "u") , (56766, 0, "s") , (56767, 0, "e") , (56768, 0, "r") , (56769, 0, "p") , (56770, 0, "o") , (56771, 0, "s") , (56772, 0, ",") , (56773, 0, " ") , (56774, 0, "|") , (56775, 0, "e") , (56776, 0, "d") , (56777, 0, "i") , (56778, 0, "t") , (56779, 0, "|") , (56780, 0, " ") , (56781, 0, "{") , (56782, 0, "\n ") , (56795, 0, "\n ") , (56783, 12, "") , (56784, 12, " }") , (56793, 0, ")") , (56783, 0, " ") , (56795, 0, "e") , (56796, 0, "d") , (56797, 0, "i") , (56798, 0, "t") , (56799, 0, ".") , (56800, 0, "d") , (56801, 0, "e") , (56802, 0, "l") , (56803, 0, "_") , (56804, 0, "a") , (56805, 0, "t") , (56806, 0, "(") , (56807, 0, "n") , (56808, 0, "u") , (56809, 0, "m") , (56810, 0, "_") , (56811, 0, "i") , (56812, 0, "t") , (56813, 0, "e") , (56814, 0, "m") , (56815, 0, "s") , (56816, 0, ")") , (56817, 0, ";") , (56707, 3, "") , (56707, 1, "") , (58598, 0, "\n ") , ( 58607 , 0 , "\n // if cfg!(debug_assertions) {\n // let (c2, _) = self.iter_at_userpos(userpos);\n // if &cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n // }" ) , (58599, 8, "") , (58779, 3, "") , (58703, 3, "") , (58643, 3, "") , (58604, 3, "") , (58683, 0, "s") , (58684, 0, "e") , (58685, 0, "l") , (58686, 0, "f") , (58687, 0, ".") , (58688, 0, "c") , (58689, 0, "u") , (58690, 0, "r") , (58691, 0, "s") , (58692, 0, "o") , (58693, 0, "r") , (58694, 0, ".") , (58666, 0, ".") , (58667, 0, "l") , (58668, 0, "i") , (58669, 0, "s") , (58670, 0, "t") , (58671, 0, ".") , (58671, 1, "") , (58726, 0, "s") , (58727, 0, "e") , (58728, 0, "l") , (58729, 0, "f") , (58730, 0, ".") , (58597, 1, "") , (58797, 50, "") , (55995, 682, "") , (55813, 0, "// ") , (55802, 0, "// ") , (55788, 0, "// ") , (55703, 0, "// ") , (55622, 0, "// ") , (55543, 0, "// ") , (55503, 0, "// ") , (55422, 0, "// ") , (55353, 0, "// ") , (55280, 0, "// ") , (55211, 0, "// ") , (55181, 0, "// ") , (55110, 0, "// ") , (55038, 0, "// ") , (54980, 0, "// ") , (54959, 0, "// ") , (54879, 0, "// ") , (54800, 0, "// ") , (54771, 0, "// ") , (54754, 0, "// ") , (54687, 0, "// ") , (54635, 0, "// ") , (54577, 0, "// ") , (54534, 0, "// ") , (54445, 0, "// ") , (54345, 0, "// ") , (55888, 3, "") , (55874, 3, "") , (55857, 3, "") , (55769, 3, "") , (55685, 3, "") , (55603, 3, "") , (55560, 3, "") , (55476, 3, "") , (55404, 3, "") , (55328, 3, "") , (55256, 3, "") , (55223, 3, "") , (55149, 3, "") , (55074, 3, "") , (55013, 3, "") , (54989, 3, "") , (54906, 3, "") , (54824, 3, "") , (54792, 3, "") , (54772, 3, "") , (54702, 3, "") , (54647, 3, "") , (54586, 3, "") , (54540, 3, "") , (54448, 3, "") , (54345, 3, "") , ( 56251 , 0 , "\n pub fn edit(&mut self, userpos: usize, f: F) -> R\n where F: FnOnce(&mut Edit) -> R {" ) , (56215, 0, "// ") , (56155, 0, "// ") , (56306, 0, " ") , (56307, 0, "n") , (56308, 0, "o") , (56309, 0, "t") , (56310, 0, "i") , (56311, 0, "f") , (56312, 0, "y") , (56313, 0, ":") , (56314, 0, " ") , (56315, 0, "N") , (56316, 0, "o") , (56317, 0, "t") , (56318, 0, "i") , (56319, 0, "f") , (56320, 0, "y") , (56321, 0, ",") , (56274, 0, "N") , (56275, 0, "o") , (56276, 0, "t") , (56277, 0, "i") , (56278, 0, "f") , (56279, 0, "y") , (56280, 0, ",") , (56281, 0, " ") , (56346, 0, "where Notify: FnMut(&[C::Item], ItemMarker)") , (56392, 6, " ") , (56392, 1, "") , (56392, 0, ",") , (56393, 0, " ") , (56273, 0, ")") , (56274, 0, "n") , (56275, 0, "o") , (56275, 1, "") , (56274, 1, "") , (56273, 1, "") , (56273, 0, "_") , (56274, 0, "n") , (56275, 0, "o") , (56276, 0, "t") , (56277, 0, "i") , (56278, 0, "f") , (56279, 0, "y") , (56218, 3, "") , (56155, 3, "") , (56251, 0, "\n ") , (56252, 8, " }") , (56251, 0, "\n ") , (56260, 0, "s") , (56261, 0, "e") , (56262, 0, "l") , (56263, 0, "f") , (56264, 0, ".") , (56265, 0, "e") , (56266, 0, "d") , (56267, 0, "i") , (56268, 0, "t") , (56265, 4, "edit_notify(userpos: usize, notify: Notify, f: F)") , (56277, 14, "u") , (56278, 0, "s") , (56279, 0, "e") , (56280, 0, "r") , (56281, 0, "p") , (56282, 0, "o") , (56283, 0, "s") , (56286, 14, "S") , (56287, 0, "e") , (56288, 0, "l") , (56289, 0, "f") , (56290, 0, ":") , (56291, 0, ":") , (56292, 0, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (56301, 50, "") , (56301, 0, ",") , (56302, 0, " ") , (56303, 0, "f") , (56311, 0, "\n ") , (57770, 0, "\n") , (56312, 4, "") , (57767, 0, "where Notify: FnMut(&[C::Item], ItemMarker)") , (57773, 40, "") , (57767, 6, "") , (57766, 1, "") , (57800, 0, ",") , (57801, 0, " ") , (57802, 0, "N") , (57803, 0, "o") , (57804, 0, "t") , (57805, 0, "i") , (57806, 0, "f") , (57807, 0, "y") , (57808, 0, ":") , (57809, 0, " ") , (57810, 0, "Notify: FnMut(&[C::Item], ItemMarker)") , (57810, 40, "") , (57802, 8, "Notify: FnMut(&[C::Item], ItemMarker)") , (57956, 0, "\n ") , (57961, 0, "N") , (57962, 0, "o") , (57963, 0, "t") , (57964, 0, "i") , (57965, 0, "f") , (57966, 0, "y") , (57967, 0, ":") , (57968, 0, " ") , (57961, 0, "n") , (57962, 0, "o") , (57963, 0, "t") , (57964, 0, "i") , (57965, 0, "f") , (57966, 0, "y") , (57967, 0, ":") , (57968, 0, " ") , (57976, 1, "") , (57975, 1, "") , (58001, 0, ",") , (58002, 0, " ") , (58003, 0, "Notify: FnMut(&[C::Item], ItemMarker)") , (58055, 0, ",") , (58056, 0, " ") , (58057, 0, "N") , (58058, 0, "o") , (58059, 0, "t") , (58060, 0, "i") , (58061, 0, "f") , (58062, 0, "y") , (56662, 0, ",") , (56663, 0, "\n ") , (56676, 0, "n") , (56677, 0, "o") , (56678, 0, "t") , (56679, 0, "i") , (56680, 0, "f") , (56681, 0, "y") , (56621, 8, "") , (56648, 0, "item_") , (56508, 0, "item_") , (56651, 13, "") , (56584, 43, " list: self, cursor,") , (56584, 56, " list: self, cursor, item_offset,") , (56584, 63, " list: self, cursor, item_offset, notify") , ( 56554 , 81 , " let mut edit = Edit { list: self, cursor, item_offset, notify" ) , ( 56554 , 80 , " let mut edit = Edit { list: self, cursor, item_offset, notify };" ) , (56477, 0, ",") , (56478, 0, " ") , (56479, 0, "N") , (56480, 0, "o") , (56481, 0, "t") , (56482, 0, "i") , (56483, 0, "f") , (56484, 0, "y") , (56242, 0, ",") , (56243, 0, " ") , (56244, 0, "_") , (56244, 1, "") , (56244, 0, "S") , (56245, 0, "e") , (56246, 0, "l") , (56247, 0, "f") , (56248, 0, ":") , (56249, 0, ":") , (56250, 0, "no_notify(_items: &[C::Item], _marker: ItemMarker)") , (56250, 53, "") , (56250, 0, "n") , (56251, 0, "o") , (56252, 0, "_") , (56253, 0, "n") , (56254, 0, "o") , (56255, 0, "t") , (56256, 0, "i") , (56257, 0, "f") , (56258, 0, "y") , (56244, 15, "") , (56244, 0, "i") , (56245, 0, "m") , (56246, 0, "p") , (56247, 0, "l") , (56247, 1, "") , (56246, 1, "") , (56245, 1, "") , (56244, 1, "") , (56244, 0, "t") , (56245, 0, "y") , (56246, 0, "p") , (56247, 0, "e") , (56248, 0, "o") , (56248, 1, "") , (56248, 0, " ") , (56248, 1, "") , (56248, 0, "o") , (56244, 5, "") , (56244, 0, "impl") , (56244, 4, "") , (56244, 0, "Self::no_notify") , (56244, 0, "t") , (56245, 0, "y") , (56246, 0, "p") , (56247, 0, "e") , (56248, 0, " ") , (56171, 0, ",") , (56172, 0, " ") , (56173, 0, "N") , (56174, 0, "o") , (56175, 0, "t") , (56176, 0, "i") , (56177, 0, "f") , (56178, 0, "y") , (56171, 8, "") , (56167, 0, "N") , (56168, 0, "o") , (56169, 0, "t") , (56170, 0, "i") , (56171, 0, "f") , (56172, 0, "y") , (56173, 0, ",") , (56174, 0, " ") , (56252, 20, "N") , (56253, 0, "o") , (56254, 0, "t") , (56255, 0, "i") , (56256, 0, "f") , (56257, 0, "y") , (56229, 0, "Notify: FnMut(&[C::Item], ItemMarker), ") , (56229, 42, "") , (56252, 6, "type Self::no_notify") , (56174, 1, "") , (56167, 7, "") , (56244, 5, "") , (56244, 4, "") , (56244, 0, "S") , (56245, 0, "k") , (56246, 0, "i") , (56247, 0, "l") , (56244, 4, "SkipList") , (56252, 0, ":") , (56253, 0, ":") , (56254, 0, "<") , (56255, 0, "C") , (56256, 0, ">") , (56253, 1, "") , (56252, 1, "") , (56251, 1, "") , (56251, 0, "t") , (56244, 0, "<") , (56256, 0, ">") , (56256, 0, " ") , (56257, 0, "a") , (56258, 0, "s") , (56259, 0, " ") , (56260, 0, "S") , (56261, 0, "k") , (56262, 0, "i") , (56260, 3, "SkipList") , (56268, 0, "<") , (56269, 0, "C") , (56270, 0, ">") , (56268, 3, "") , (56260, 8, "Ski") , (56259, 4, "") , (56256, 3, "") , (56256, 1, "") , (56244, 1, "") , (20204, 0, "\n") , ( 20205 , 0 , "\n pub fn no_notify(_items: &[C::Item], _marker: ItemMarker) {}\n" ) , (20206, 4, "") , (20222, 0, "<") , (20223, 0, "C") , (20224, 0, ":") , (20225, 0, " ") , (20226, 0, "L") , (20227, 0, "i") , (20228, 0, "s") , (20229, 0, "t") , (20226, 4, "ListConfig") , (20236, 0, ">") , (20222, 0, "_") , (20223, 0, "x") , (56327, 13, "") , (56336, 0, "_") , (56337, 0, "x") , (56338, 0, "<") , (56339, 0, "C") , (56340, 0, ">") , (56385, 15, "rustc --explain E0573") , (56385, 21, "Self::no_notify") , (56385, 15, "n") , (56386, 0, "o") , (56387, 0, "_") , (56388, 0, "n") , (56389, 0, "o") , (56385, 5, "no_notify_x(_items: &[C::Item], _marker: ItemMarker)") , (56415, 0, ">") , (56397, 0, "<") , (56398, 18, "C") , (56399, 0, ">") , (56398, 2, "_items: &[C::Item]") , (56416, 1, "") , (56397, 1, "") , (56396, 44, "") , (56396, 0, "<") , (56397, 0, "C") , (56398, 0, ">") , (56396, 3, "") , (56340, 1, "") , (56339, 1, "") , (56338, 1, "") , (56238, 0, "// ") , (56233, 0, "\n ") , ( 56238 , 0 , " pub fn edit_notify(&mut self, userpos: usize, notify: Notify, f: F) -> R\n where Notify: FnMut(&[C::Item], ItemMarker), F: FnOnce(&mut Edit) -> R {\n" ) , (56234, 8, " ") , (56484, 0, "// ") , (56255, 1, "") , (56254, 1, "") , (56253, 1, "") , (56252, 1, "") , (56251, 1, "") , (56250, 1, "") , (56249, 1, "") , (56289, 16, "") , (56559, 0, "<") , (56560, 0, "C") , (56561, 0, ">") , (56559, 0, ":") , (56560, 0, ":") , (56306, 0, "// ") , (56238, 0, "// ") , (56467, 3, "") , (56404, 3, "") , (56504, 0, ":") , (56505, 0, ":") , (56506, 0, "<") , (56507, 0, "C") , (56508, 0, ">") , (56505, 1, "") , (56504, 1, "") , (56493, 15, "") , (56493, 0, "_") , (56494, 0, ">") , (56493, 1, "") , (56493, 0, "C") , (56493, 1, "") , (56493, 0, "u") , (56494, 0, "2") , (56495, 0, "3") , (56495, 1, "") , (56494, 1, "") , (56494, 0, "3") , (56495, 0, "2") , (56514, 0, "// ") , (56563, 0, "\n ") , ( 56572 , 0 , " let (cursor, item_offset) = self.iter_at_userpos(userpos);\n let mut edit = Edit { list: self, cursor, item_offset, notify };\n\n // TODO: Or maybe I should pass ownership here?\n f(&mut edit)\n" ) , (56564, 16, " ") , (56694, 6, "n") , (56695, 0, "o") , (56696, 0, "_") , (56697, 0, "n") , (56698, 0, "o") , (56694, 5, "no_notify_x(_items: &[C::Item], _marker: ItemMarker)") , (56724, 0, ">") , (56706, 0, "<") , (56725, 1, "") , (56706, 1, "") , (56705, 44, "") , (56705, 0, "<") , (56706, 0, "C") , (56707, 0, ">") , (56705, 0, ":") , (56706, 0, ":") , (56694, 0, "n") , (56695, 0, "o") , (56696, 0, "t") , (56697, 0, "i") , (56698, 0, "f") , (56699, 0, "y") , (56700, 0, ":") , (56701, 0, " ") , ( 56493 , 3 , "for<'r> fn(&'r [::Item], skiplist::ItemMarker) {skiplist::no_notify_x::}" ) , (56570, 28, "") , (56569, 1, "") , (56545, 10, "") , (56515, 10, "") , (56755, 0, "&") , (56549, 0, " ") , (56550, 0, "{no_notify_x::}") , (56493, 0, "&") , (56420, 0, ",") , (56421, 0, " ") , (56422, 0, "N") , (56423, 0, "N") , (56497, 0, "N") , (56498, 0, ")") , (56498, 0, ">") , (56500, 0, ",") , (56501, 0, " ") , (56502, 0, "N") , (56503, 0, ":") , (56504, 0, " ") , (56587, 1, "") , (56586, 1, "") , (56585, 1, "") , (56584, 1, "") , (56583, 1, "") , (56582, 1, "") , (56500, 0, " ") , (56501, 0, "-") , (56502, 0, ">") , (56503, 0, " ") , (56504, 0, "R") , (56506, 1, "") , (56506, 0, "\n ") , (56590, 1, "") , (56514, 1, "") , (56498, 0, "N") , (56512, 0, "N") , (56516, 0, "&") , (56516, 1, "") , (56516, 58, "") , (56532, 1, "") , (56532, 0, "}") , (56516, 0, "for<'r> fn(&'r [::Item], ItemMarker) {") , (56524, 49, "") , (56524, 1, "") , (56540, 1, "") , (56843, 0, "// ") , (56821, 0, "// ") , (56765, 0, "// ") , (56672, 0, "// ") , (56605, 0, "// ") , (56547, 0, "// ") , (56512, 0, "// ") , (56468, 0, "// ") , (56404, 0, "// ") , (57191, 0, ":") , (57192, 0, " ") , (57193, 0, "n") , (57194, 0, "o") , (57193, 2, "no_notify_x(_items: &[C::Item], _marker: ItemMarker)") , (57193, 55, "no") , (57195, 0, "n") , (57195, 1, "") , (57195, 0, "_") , (57196, 0, "n") , (57197, 0, "o") , (57198, 0, "t") , (57199, 0, "i") , (57200, 0, "f") , (57201, 0, "y") , (57202, 0, "_") , (57203, 0, "x") , (57204, 0, "<") , (57205, 0, "C") , (57206, 0, ">") , (57204, 0, ":") , (57205, 0, ":") , (57204, 2, "") , (57195, 12, "") , (57195, 0, "n") , (57195, 1, "") , (57192, 3, "") , (57191, 1, "") , (56867, 3, "") , (56842, 3, "") , (56783, 3, "") , (56687, 3, "") , (56617, 3, "") , (56556, 3, "") , (56518, 3, "") , (56471, 3, "") , (56404, 3, "") , ( 56516 , 24 , "for<'r> fn(&'r [::Item], skiplist::ItemMarker) {skiplist::no_notify_x::}" ) , (56594, 10, "") , (56568, 10, "") , (56538, 10, "") , (56516, 8, "") , (56516, 67, "") , (56516, 0, "i") , (56517, 0, "m") , (56518, 0, "p") , (56519, 0, "l") , (56520, 0, " ") , (56521, 0, "FnMut(&[C::Item], ItemMarker)") , ( 56464 , 91 , " where F: FnOnce(&mut Edit) -> R, NN: impl FnMut(&[C::Item], ItemMarker) {" ) , ( 56464 , 87 , " where F: FnOnce(&mut Edit) -> R,\n NN: impl FnMut(&[C::Item], ItemMarker) {" ) , (56516, 5, "") , (56747, 1, "") , (56423, 1, "") , (56422, 1, "") , (56421, 1, "") , (56420, 1, "") , (56502, 43, "") , (56502, 0, " ") , (56502, 1, "") , (56502, 0, ",\n NN: FnMut(&[C::Item], ItemMarker) ") , (56512, 32, "") , (56508, 4, "") , (56504, 4, "") , (56503, 1, "") , (56502, 1, "") , (56493, 2, "i") , (56494, 0, "m") , (56495, 0, "p") , (56496, 0, "l") , (56497, 0, " ") , (56498, 0, "FnMut(&[C::Item], ItemMarker)") , (56493, 5, "") , (56493, 0, "d") , (56494, 0, "y") , (56495, 0, "n") , (56496, 0, " ") , (56838, 0, "// ") , (56816, 0, "// ") , (56760, 0, "// ") , (56668, 0, "// ") , (56601, 0, "// ") , (56543, 0, "// ") , (56464, 0, "// ") , (56404, 0, "// ") , (58489, 0, "// ") , (58470, 0, "// ") , (58413, 0, "// ") , (58390, 0, "// ") , (58359, 0, "// ") , (58280, 0, "// ") , ( 58280 , 0 , "// pub struct Edit<'a, C: ListConfig, Notify: FnMut(&[C::Item], ItemMarker)> {\n// list: &'a mut SkipList,\n// cursor: Cursor,\n// item_offset: usize, // Offset into the current item.\n// notify: Notify\n// }\n" ) , (58733, 3, "") , (58711, 3, "") , (58651, 3, "") , (58625, 3, "") , (58591, 3, "") , (58509, 3, "") , (58542, 42, "") , (58542, 0, ", Notify: FnMut(&[C::Item], ItemMarker)") , (58542, 42, "") , (58669, 6, ", Notify: FnMut(&[C::Item], ItemMarker)") , (58669, 15, "f") , (58670, 0, "n") , ( 58789 , 0 , "\nimpl<'a, C: ListConfig, Notify: FnMut(&[C::Item], ItemMarker)> Edit<'a, C, Notify> {" ) , (58702, 0, "// ") , (58869, 8, "") , (57269, 0, "// ") , (57248, 0, "// ") , (57192, 0, "// ") , (57118, 0, "// ") , (57051, 0, "// ") , (56960, 0, "// ") , (56869, 0, "// ") , (56859, 3, "") , (56834, 3, "") , (56775, 3, "") , (56680, 3, "") , (56610, 3, "") , (56549, 3, "") , (56467, 3, "") , (56404, 3, "") , (56493, 9, "f") , (56494, 0, "n") , (56491, 31, "") , ( 58831 , 0 , "\nimpl<'a, C: ListConfig, Notify: FnMut(&[C::Item], ItemMarker)> Edit<'a, C> {" ) , (58752, 0, "// ") , (58752, 3, "") , (58831, 80, "") , (58774, 42, "") , (56794, 1, "") , ( 56802 , 0 , " // pub fn edit_notify(&mut self, userpos: usize, notify: Notify, f: F) -> R\n // where Notify: FnMut(&[C::Item], ItemMarker), F: FnOnce(&mut Edit) -> R {\n // let (cursor, item_offset) = self.iter_at_userpos(userpos);\n // let mut edit = Edit { list: self, cursor, item_offset, notify };\n\n // // TODO: Or maybe I should pass ownership here?\n // f(&mut edit)\n // }\n" ) , (57651, 3, "") , (57627, 3, "") , (57568, 3, "") , (57491, 3, "") , (57421, 3, "") , (57327, 3, "") , (57233, 3, "") , (57393, 8, "") , (57252, 8, "") , (57322, 42, "") , (57322, 0, "Notify: FnMut(&[C::Item], ItemMarker), ") , (57252, 0, "Notify, ") , (57338, 5, "f") , (57339, 0, "n") , (57338, 29, "") , (57330, 8, "") , (57330, 1, "") , (57330, 1, "") , (57301, 6, "fn(&[C::Item], ItemMarker)") , (53196, 0, "// ") , (53118, 0, "// ") , (53008, 0, "// ") , (52951, 0, "// ") , (52882, 0, "// ") , (52810, 0, "// ") , (52745, 0, "// ") , (52593, 0, "// ") , (53217, 3, "") , (53136, 3, "") , (53023, 3, "") , (52963, 3, "") , (52891, 3, "") , (52816, 3, "") , (52748, 3, "") , (52593, 3, "") , (60918, 0, "\n ") , (60923, 0, "\n ") , (60919, 4, "") , ( 60924 , 0 , "\n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, mut inserted_content: I) where I: ExactSizeIterator {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n let num_inserted_items = inserted_content.len();\n unsafe { self.replace_at_iter(&mut cursor, removed_items, &mut inserted_content, Self::no_notify); }\n\n self.dbg_check_cursor_at(&cursor, start_userpos, num_inserted_items);\n }" ) , (60920, 4, "") , (60919, 1, "") , (60918, 1, "") , (60918, 0, "\n ") , (60918, 614, "") , ( 59568 , 0 , "\n \n pub fn replace_at(&mut self, mut start_userpos: usize, removed_items: usize, mut inserted_content: I) where I: ExactSizeIterator {\n start_userpos = min(start_userpos, self.get_userlen());\n\n let (mut cursor, offset) = self.iter_at_userpos(start_userpos);\n assert_eq!(offset, 0, \"Splitting nodes not yet supported\");\n\n let num_inserted_items = inserted_content.len();\n unsafe { self.replace_at_iter(&mut cursor, removed_items, &mut inserted_content, Self::no_notify); }\n\n self.dbg_check_cursor_at(&cursor, start_userpos, num_inserted_items);\n }" ) , (59569, 4, "") , (59606, 26, "") , (59652, 1, "") , (59652, 0, "\n ") , (59700, 65, "") , (59700, 72, "") , (59719, 0, "s") , (59720, 0, "e") , (59721, 0, "l") , (59722, 0, "f") , (59723, 0, ".") , (59724, 0, "i") , (59725, 0, "t") , (59726, 0, "e") , (59727, 0, "m") , (59728, 0, "_") , (59857, 0, ".") , (59858, 0, "l") , (59859, 0, "i") , (59860, 0, "s") , (59861, 0, "t") , (59930, 15, "") , (59930, 0, "s") , (59931, 0, "e") , (59932, 0, "l") , (59933, 0, "f") , (59934, 0, ".") , (59935, 0, "n") , (59936, 0, "o") , (59937, 0, "t") , (59938, 0, "i") , (59939, 0, "f") , (59940, 0, "y") , (59884, 0, "s") , (59885, 0, "e") , (59886, 0, "l") , (59887, 0, "f") , (59888, 0, ".") , (59960, 0, "// ") , (59960, 3, "") , (59964, 0, ".") , (59965, 0, "l") , (59966, 0, "i") , (59967, 0, "s") , (59968, 0, "t") , (59991, 0, "s") , (59992, 0, "e") , (59993, 0, "l") , (59994, 0, "f") , (59995, 0, ".") , (60004, 13, "s") , (60005, 0, "e") , (60006, 0, "l") , (60007, 0, "f") , (60008, 0, ".") , (60004, 5, "start_userpos") , (59835, 0, "\n ") , (59844, 0, "l") , (59845, 0, "e") , (59846, 0, "t") , (59847, 0, " ") , (59848, 0, "s") , (59849, 0, "t") , (59850, 0, "a") , (59851, 0, "r") , (59852, 0, "t") , (59853, 0, "_") , (59854, 0, "u") , (59855, 0, "s") , (59856, 0, "e") , (59857, 0, "r") , (59858, 0, "p") , (59859, 0, "o") , (59860, 0, "s") , (59861, 0, " ") , (59862, 0, "=") , (59863, 0, " ") , (59864, 0, "s") , (59865, 0, "e") , (59866, 0, "l") , (59867, 0, "f") , (59868, 0, ".") , (59869, 0, "c") , (59870, 0, "u") , (59871, 0, "r") , (59872, 0, "s") , (59869, 4, "cursor") , (59875, 0, ".") , (59876, 0, "c") , (59877, 0, "u") , (59878, 0, "r") , (59876, 3, "") , (59876, 0, "u") , (59877, 0, "s") , (59878, 0, "e") , (59879, 0, "r") , (59876, 4, "userpos") , (59883, 0, ";") , (59884, 0, "\n ") , (59885, 8, "") , (58994, 0, " notify: fn(&[C::Item], ItemMarker)\n") , (59040, 0, "// ") , (59040, 3, "") , (59040, 0, "// ") , (59040, 3, "") , (59927, 0, " ") , (58994, 42, "") , (59036, 0, "// ") , (58994, 0, "// ") , (58937, 0, "// ") , (58914, 0, "// ") , (58883, 0, "// ") , (58846, 0, "// ") , (58841, 3, "") , (58819, 3, "") , (58759, 3, "") , (58733, 3, "") , (58699, 3, "") , (58617, 3, "") , (59130, 0, "// ") , (59039, 3, "") , (57606, 0, "// ") , (57585, 0, "// ") , (57529, 0, "// ") , (57455, 0, "// ") , (57388, 0, "// ") , (57347, 0, "// ") , (57233, 0, "// ") , (57228, 0, "\n ") , (57233, 0, "\n ") , (57229, 4, "") , (57230, 4, "") , (56491, 0, ",") , (56492, 0, " ") , (56493, 0, "n") , (56494, 0, "o") , (56495, 0, "t") , (56493, 3, "no_notify_x(_items: &[C::Item], _marker: ItemMarker)") , (56493, 55, "not") , (56495, 1, "") , (56495, 0, "_") , (56496, 0, "n") , (56497, 0, "o") , (56498, 0, "t") , (56499, 0, "i") , (56500, 0, "f") , (56501, 0, "y") , (56502, 0, "_") , (56503, 0, "x") , (56504, 0, ":") , (56505, 0, ":") , (56506, 0, "<") , (56507, 0, "C") , (56508, 0, ">") , (56509, 0, " ") , (56510, 0, "a") , (56511, 0, "s") , (56512, 0, " ") , (56513, 0, "FnMut(&[C::Item], ItemMarker)") , (56493, 0, "<") , (56547, 0, ">") , (56547, 1, "") , (56493, 1, "") , (56508, 1, "") , (56507, 1, "") , (56506, 1, "") , (56505, 1, "") , (56504, 1, "") , (56504, 0, "::") , (56509, 36, "") , (56509, 0, " as FnMut(&[C::Item], ItemMarker)") , (56509, 36, "") , (56493, 0, "t") , (56494, 0, "y") , (56495, 0, "p") , (56496, 0, "e") , (56497, 0, "o") , (56498, 0, "f") , (56499, 0, "(") , (56516, 0, ")") , (56493, 7, "") , (56493, 0, "{") , (56510, 1, "") , (56510, 0, "}") , (58703, 5, "f") , (58704, 0, "n") , (58703, 2, "FnMut") , (58869, 0, "// ") , (58850, 0, "// ") , (58793, 0, "// ") , (58770, 0, "// ") , (58739, 0, "// ") , (58660, 0, "// ") , (59094, 3, "") , (59049, 3, "") , (58989, 3, "") , (58963, 3, "") , (58929, 3, "") , (58889, 3, "") , (59082, 0, "// ") , (59173, 3, "") , (56493, 18, "expected type, found function") , (56493, 29, "{no_notify_x::}") , (56493, 18, "") , (56492, 1, "") , (56491, 1, "") , (57224, 3, "") , (57200, 3, "") , (57141, 3, "") , (57064, 3, "") , (56994, 3, "") , (56900, 3, "") , (56806, 3, "") , (56966, 8, "") , (56966, 0, ", Notify") , (57206, 0, "// ") , (57185, 0, "// ") , (57129, 0, "// ") , (57055, 0, "// ") , (56988, 0, "// ") , (56897, 0, "// ") , (56806, 0, "// ") , (57224, 3, "") , (57200, 3, "") , (57141, 3, "") , (57064, 3, "") , (56994, 3, "") , (56900, 3, "") , (56806, 3, "") , (57206, 0, "// ") , (57185, 0, "// ") , (57129, 0, "// ") , (57055, 0, "// ") , (56988, 0, "// ") , (56897, 0, "// ") , (56806, 0, "// ") , (57626, 3, "") , (57602, 3, "") , (57543, 3, "") , (57466, 3, "") , (57396, 3, "") , (57352, 3, "") , (57235, 3, "") , (53122, 0, "// ") , (53012, 0, "// ") , (52955, 0, "// ") , (52886, 0, "// ") , (52814, 0, "// ") , (52749, 0, "// ") , (52740, 0, "\n ") , (52749, 0, "s") , (52750, 0, "e") , (52751, 0, "l") , (52752, 0, "f") , (52753, 0, ".") , (52754, 0, "e") , (52755, 0, "d") , (52756, 0, "i") , (52754, 3, "edit(userpos: usize, f: F)") , (52759, 14, "s") , (52760, 0, "t") , (52761, 0, "a") , (52762, 0, "r") , (52763, 0, "t") , (52764, 0, "_") , (52765, 0, "u") , (52766, 0, "s") , (52767, 0, "e") , (52768, 0, "r") , (52769, 0, "p") , (52770, 0, "o") , (52771, 0, "s") , (52774, 4, "|") , (52775, 0, "e") , (52776, 0, "i") , (52777, 0, "d") , (52778, 0, "t") , (52778, 1, "") , (52777, 1, "") , (52776, 1, "") , (52776, 0, "d") , (52777, 0, "i") , (52778, 0, "t") , (52779, 0, "|") , (52780, 0, " ") , (52781, 0, "{") , (52782, 0, "\n ") , (52783, 12, " }") , (52782, 0, "\n ") , (52795, 0, "e") , (52796, 0, "d") , (52797, 0, "i") , (52798, 0, "t") , (52799, 0, ".") , (52800, 0, "r") , (52801, 0, "e") , (52802, 0, "p") , (52803, 0, "l") , (52804, 0, "a") , (52800, 5, "replace_at") , (52810, 0, "(") , (52811, 0, "r") , (52812, 0, "e") , (52813, 0, "m") , (52814, 0, "o") , (52815, 0, "v") , (52816, 0, "e") , (52817, 0, "d") , (52818, 0, "_") , (52819, 0, "i") , (52820, 0, "t") , (52821, 0, "e") , (52822, 0, "m") , (52823, 0, "s") , (52824, 0, ",") , (52825, 0, " ") , (52826, 0, "i") , (52827, 0, "n") , (52828, 0, "s") , (52829, 0, "e") , (52830, 0, "r") , (52831, 0, "t") , (52832, 0, "e") , (52833, 0, "d") , (52834, 0, "_") , (52835, 0, "c") , (52836, 0, "o") , (52837, 0, "n") , (52838, 0, "t") , (52839, 0, "e") , (52840, 0, "n") , (52841, 0, "t") , (52842, 0, ")") , (52843, 0, ";") , (52625, 4, "") , (52669, 4, "") , (52848, 469, "") , (54077, 0, "// ") , (53977, 0, "// ") , (53964, 0, "// ") , (53926, 0, "// ") , (53906, 0, "// ") , (53850, 0, "// ") , (53839, 0, "// ") , (53748, 0, "// ") , (53670, 0, "// ") , (53637, 0, "// ") , (53560, 0, "// ") , (53509, 0, "// ") , (53476, 0, "// ") , (53426, 0, "// ") , (53369, 0, "// ") , (53334, 0, "// ") , (53268, 0, "// ") , (53183, 0, "// ") , (53090, 0, "// ") , (54131, 3, "") , (54028, 3, "") , (54012, 3, "") , (53971, 3, "") , (53948, 3, "") , (53889, 3, "") , (53875, 3, "") , (53781, 3, "") , (53700, 3, "") , (53664, 3, "") , (53584, 3, "") , (53530, 3, "") , (53494, 3, "") , (53441, 3, "") , (53381, 3, "") , (53343, 3, "") , (53274, 3, "") , (53186, 3, "") , (53090, 3, "") , (58840, 3, "") , (55856, 3, "") , (59240, 3, "") , (52799, 3, "") , (59749, 0, "\n ") , (59754, 0, "\n ") , (59750, 4, "") , (59751, 4, "") , (59216, 1, "") , (59750, 0, " ") , (59754, 0, "p") , (59755, 0, "u") , (59756, 0, "b") , (59757, 0, " ") , (59758, 0, "f") , (59759, 0, "n") , (59760, 0, " ") , (59761, 0, "c") , (59762, 0, "u") , (59763, 0, "r") , (59764, 0, "r") , (59765, 0, "e") , (59766, 0, "n") , (59767, 0, "t") , (59768, 0, "_") , (59769, 0, "i") , (59770, 0, "t") , (59771, 0, "e") , (59772, 0, "m") , (59773, 0, "(") , (59774, 0, ")") , (59774, 0, "&") , (59775, 0, "s") , (59776, 0, "e") , (59777, 0, "l") , (59778, 0, "f") , (59779, 0, ",") , (59780, 0, " ") , (59780, 1, "") , (59779, 1, "") , (59780, 0, " ") , (59781, 0, "-") , (59782, 0, ">") , (59783, 0, " ") , (59784, 0, "C") , (59785, 0, ":") , (59786, 0, ":") , (59787, 0, "I") , (59788, 0, "t") , (59789, 0, "e") , (59790, 0, "m") , (59787, 4, "Item") , (59784, 0, "(") , (59785, 0, "&") , (59793, 0, ",") , (59794, 0, " ") , (59795, 0, "u") , (59796, 0, "s") , (59797, 0, "i") , (59798, 0, "z") , (59799, 0, "e") , (59800, 0, ")") , (59801, 0, " ") , (59802, 0, "{") , (59803, 0, "\n ") , (59812, 0, "\n ") , (59804, 8, "") , (59805, 8, " }") , (59804, 0, " ") , (59812, 0, "s") , (59813, 0, "e") , (59814, 0, "l") , (59815, 0, "f") , (59816, 0, ".") , (59817, 0, "c") , (59818, 0, "u") , (59819, 0, "r") , (59820, 0, "s") , (59821, 0, "o") , (59822, 0, "r") , (59823, 0, ".") , (59812, 0, "// ") , (59812, 3, "") , (59824, 0, "unsafe { cursor.current_item_mut() };") , (59812, 12, "") , (59843, 1, "") , (59842, 1, "") , (59841, 1, "") , (59840, 1, "") , (59844, 1, "") , (59821, 0, "s") , (59822, 0, "e") , (59823, 0, "l") , (59824, 0, "f") , (59825, 0, ".") , (59812, 0, "(") , (59850, 0, ",") , (59851, 0, " ") , (59852, 0, "s") , (59853, 0, "e") , (59854, 0, "l") , (59855, 0, "f") , (59856, 0, ".") , (59857, 0, "i") , (59858, 0, "t") , (59859, 0, "e") , (59860, 0, "m") , (59861, 0, "_") , (59862, 0, "o") , (59863, 0, "f") , (59864, 0, "f") , (59857, 8, "item_offset") , (59868, 0, ")") , (16126, 4, "") , (59871, 0, "\n ") , (59876, 0, "\n ") , (59872, 4, "") , (59877, 0, "p") , (59878, 0, "u") , (59879, 0, "b") , (59880, 0, " ") , (59881, 0, "f") , (59882, 0, "n") , (59883, 0, " ") , (59884, 0, "n") , (59885, 0, "e") , (59886, 0, "x") , (59887, 0, "t") , (59888, 0, "_") , (59889, 0, "i") , (59890, 0, "t") , (59891, 0, "e") , (59892, 0, "m") , (59893, 0, "(") , (59894, 0, ")") , (59894, 0, "&") , (59895, 0, "m") , (59896, 0, "u") , (59897, 0, "t") , (59898, 0, " ") , (59899, 0, "s") , (59900, 0, "e") , (59901, 0, "l") , (59902, 0, "f") , (59904, 0, " ") , (59905, 0, "{") , (59906, 0, "\n ") , (59915, 0, "\n ") , (59907, 8, "") , (59908, 8, " }") , (59907, 0, " ") , (59915, 0, "s") , (59916, 0, "e") , (59917, 0, "l") , (59918, 0, "f") , (59919, 0, ".") , (59920, 0, "c") , (59921, 0, "u") , (59922, 0, "r") , (59923, 0, "s") , (59924, 0, "o") , (59925, 0, "r") , (59926, 0, ".") , (59927, 0, "a") , (59928, 0, "d") , (59929, 0, "v") , (59930, 0, "a") , (59931, 0, "n") , (59927, 5, "advance_item(height: u8)") , (59940, 10, "s") , (59941, 0, "e") , (59942, 0, "l") , (59943, 0, "f") , (59944, 0, ".") , (59945, 0, "list") , (59949, 0, ".") , (59950, 0, "h") , (59951, 0, "e") , (59952, 0, "a") , (59953, 0, "d") , (59954, 0, ".") , (59955, 0, "h") , (59956, 0, "e") , (59957, 0, "i") , (59958, 0, "g") , (59959, 0, "h") , (59960, 0, "t") , (59962, 0, ";") , (59963, 0, "\n ") , (59972, 0, "s") , (59973, 0, "e") , (59974, 0, "l") , (59975, 0, "f") , (59976, 0, ".") , (59977, 0, "i") , (59978, 0, "t") , (59979, 0, "e") , (59980, 0, "m") , (59981, 0, "_") , (59982, 0, "o") , (59983, 0, "f") , (59984, 0, "f") , (59977, 8, "item_offset") , (59988, 0, " ") , (59989, 0, "=") , (59990, 0, " ") , (59991, 0, "0") , (59992, 0, ";") , (59999, 0, "\n ") , (60004, 0, "\n ") , (60000, 4, "") , (60005, 0, "unsafe { cursor.current_item_mut() };") , (60005, 37, "") , ( 60005 , 0 , "\n pub fn modify_at(&mut self, userpos: usize, mut notify: Notify, modify_fn: F)\n where Notify: FnMut(&[C::Item], ItemMarker), F: FnOnce(&mut C::Item, usize) {\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n let e = cursor.here_ptr();\n let item = unsafe { cursor.current_item_mut() };\n let old_usersize = C::get_usersize(item);\n modify_fn(item, offset);\n let new_usersize = C::get_usersize(item);\n\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n cursor.update_offsets(self.head.height as usize, usersize_delta);\n self.num_usercount = self.num_usercount.wrapping_add(usersize_delta as usize);\n }\n\n notify(std::slice::from_ref(item), ItemMarker {\n ptr: e,\n // _phantom: PhantomData,\n });\n\n // cursor.update_offsets(self.head.height as usize, new_size as isize - old_size as isize);\n }" ) , (60025, 1, "") , (60024, 1, "") , (60024, 0, "i") , (60025, 0, "t") , (60026, 0, "e") , (60027, 0, "m") , (60027, 1, "") , (60026, 1, "") , (60025, 1, "") , (60024, 1, "") , (60024, 0, "i") , (60025, 0, "n") , (60026, 0, "_") , (60026, 1, "") , (60025, 1, "") , (60024, 1, "") , (60023, 1, "") , (60024, 8, "") , (60001, 4, "") , (60000, 1, "") , (60049, 20, "") , (60073, 42, "") , ( 60001 , 104 , " pub fn modify(&mut self, userpos: usize, modify_fn: F) where F: FnOnce(&mut C::Item, usize) {" ) , (60102, 66, "") , (60118, 0, "s") , (60119, 0, "e") , (60120, 0, "l") , (60121, 0, "f") , (60122, 0, ".") , (60170, 0, "s") , (60171, 0, "e") , (60172, 0, "l") , (60173, 0, "f") , (60174, 0, ".") , (60278, 0, "s") , (60279, 0, "e") , (60280, 0, "l") , (60281, 0, "f") , (60282, 0, ".") , (60283, 0, "item_offset") , (60294, 6, "") , (60470, 0, "s") , (60471, 0, "e") , (60472, 0, "l") , (60473, 0, "f") , (60474, 0, ".") , (60502, 0, "l") , (60503, 0, "i") , (60504, 0, "s") , (60505, 0, "t") , (60506, 0, ".") , (60563, 0, "l") , (60564, 0, "i") , (60565, 0, "s") , (60566, 0, "t") , (60567, 0, ".") , (60589, 0, "l") , (60590, 0, "i") , (60591, 0, "s") , (60592, 0, "t") , (60593, 0, ".") , (60666, 0, "s") , (60667, 0, "e") , (60668, 0, "l") , (60669, 0, "f") , (60670, 0, ".") , (60677, 0, ")") , (60666, 0, "(") , (60033, 16, "") , (60018, 0, "_") , (60019, 0, "i") , (60020, 0, "t") , (60021, 0, "e") , (60022, 0, "m") , (60780, 101, "") , (60335, 0, "\n ") , (60344, 0, "i") , (60345, 0, "f") , (60346, 0, " ") , (60347, 0, "(") , (60347, 1, "") , (60347, 0, "n") , (60348, 0, "e") , (60349, 0, "w") , (60350, 0, "_") , (60347, 4, "new_usersize") , (60359, 0, " ") , (60360, 0, ">") , (60361, 0, " ") , (60362, 0, "s") , (60363, 0, "e") , (60364, 0, "l") , (60365, 0, "f") , (60366, 0, ".") , (60367, 0, "i") , (60368, 0, "t") , (60369, 0, "e") , (60367, 3, "item_offset") , (60336, 42, "") , (60335, 1, "") , (60635, 0, "\n ") , (60648, 0, "\n ") , (60636, 12, "") , (60649, 0, " if new_usersize > self.item_offset") , (60637, 20, " ") , (60683, 0, " ") , (60684, 0, "{") , (60685, 0, "\n ") , (60702, 0, "\n ") , (60686, 16, "") , (60687, 16, " }") , (60686, 0, " ") , (60702, 0, "s") , (60703, 0, "e") , (60704, 0, "l") , (60705, 0, "f") , (60706, 0, ".") , (60707, 0, "i") , (60708, 0, "t") , (60709, 0, "e") , (60710, 0, "m") , (60711, 0, "_") , (60707, 5, "item_offset") , (60718, 0, " ") , (60719, 0, "=") , (60720, 0, " ") , (60721, 0, "n") , (60722, 0, "e") , (60723, 0, "w") , (60724, 0, "_") , (60725, 0, "u") , (60721, 5, "new_usersize") , (60733, 0, ";") , (60636, 112, "") , ( 60636 , 0 , "\n if new_usersize > self.item_offset {\n self.item_offset = new_usersize;\n }" ) , (60734, 0, " ") , (60735, 0, "/") , (60736, 0, "/") , (60737, 0, " ") , (60737, 1, "") , (60736, 1, "") , (60735, 1, "") , (60734, 1, "") , (60636, 0, "\n ") , (60649, 0, "s") , (60650, 0, "e") , (60651, 0, "l") , (60652, 0, "f") , (60653, 0, ".") , (60654, 0, "i") , (60655, 0, "t") , (60656, 0, "e") , (60657, 0, "m") , (60654, 4, "item_offset") , (60665, 0, " ") , (60666, 0, "=") , (60667, 0, " ") , (60668, 0, "s") , (60669, 0, "e") , (60670, 0, "l") , (60671, 0, "f") , (60672, 0, ".") , (60673, 0, "i") , (60673, 1, "item_offset") , (60684, 0, ".") , (60685, 0, "m") , (60686, 0, "a") , (60685, 2, "") , (60684, 1, "") , (60667, 0, " ") , (60668, 0, "u") , (60669, 0, "s") , (60670, 0, "i") , (60671, 0, "z") , (60672, 0, "e") , (60673, 0, ":") , (60674, 0, ":") , (60675, 0, "m") , (60676, 0, "a") , (60677, 0, "x") , (60678, 0, "(") , (60679, 1, "") , (60695, 0, ",") , (60696, 0, " ") , (60697, 0, "new_usersize") , (60709, 0, ")") , (60710, 0, ";") , (60712, 112, "") , (60635, 1, "") , (53100, 8, "") , (53130, 20, "") , (53154, 42, "") , ( 53079 , 107 , " pub fn modify_at(&mut self, userpos: usize, modify_fn: F) where F: FnOnce(&mut C::Item, usize) {" ) , (53183, 808, "") , (53182, 1, "") , (53182, 0, "\n ") , (53191, 0, "s") , (53192, 0, "e") , (53193, 0, "l") , (53194, 0, "f") , (53195, 0, ".") , (53196, 0, "e") , (53197, 0, "d") , (53198, 0, "i") , (53199, 0, "t") , (53200, 0, "(") , (53201, 0, "s") , (53202, 0, "t") , (53203, 0, "a") , (53204, 0, "r") , (53205, 0, "t") , (53206, 0, "_") , (53207, 0, "u") , (53201, 7, "start_userpos") , (53214, 0, ",") , (53215, 0, " ") , (53216, 0, "|") , (53217, 0, "e") , (53218, 0, "d") , (53219, 0, "i") , (53220, 0, "t") , (53221, 0, "|") , (53201, 1, "") , (53201, 1, "") , (53201, 1, "") , (53201, 1, "") , (53201, 1, "") , (53201, 1, "") , (53216, 0, " ") , (53217, 0, "{") , (53218, 0, "\n ") , (53231, 0, "s") , (53232, 0, "e") , (53232, 1, "") , (53231, 1, "") , (53231, 0, "e") , (53232, 0, "d") , (53233, 0, "i") , (53234, 0, "t") , (53235, 0, ".") , (53236, 0, "m") , (53237, 0, "o") , (53238, 0, "d") , (53239, 0, "i") , (53236, 4, "modify_item") , (53097, 0, "i") , (53098, 0, "t") , (53099, 0, "e") , (53100, 0, "m") , (53101, 0, "_") , (53252, 0, "(") , (53253, 0, "m") , (53254, 0, "o") , (53255, 0, "d") , (53256, 0, "i") , (53257, 0, "f") , (53258, 0, "y") , (53253, 6, "modify_fn") , (53262, 0, ")") , (53263, 0, ";") , (53264, 0, "\n ") , (53265, 12, " }") , (53222, 1, "") , ( 53188 , 75 , " self.edit(userpos, |edit| edit.modify_item(modify_fn);" ) , ( 53188 , 72 , " self.edit(userpos, |edit| edit.modify_item(modify_fn); }" ) , (53250, 1, "") , (53249, 1, "") , (53249, 1, "") , (53249, 0, ")") , (53250, 0, ";") , (58398, 0, "\n ") , (58403, 0, "\n ") , (58399, 4, "") , ( 58404 , 0 , " pub fn insert_at(&mut self, mut userpos: usize, mut contents: I, mut notify: Notify)\n where Notify: FnMut(&[C::Item], ItemMarker), I: ExactSizeIterator {\n if contents.len() == 0 { return; }\n let num_inserted_items = contents.len();\n \n userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n unsafe {\n if offset == 0 {\n self.insert_at_iter(&mut cursor, &mut contents, &mut notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, num_inserted_items);\n } else {\n let current_item = cursor.current_item();\n let (start, end) = C::split_item(current_item, offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n cursor.move_to_item_start(self.head.height, offset);\n // This feels pretty inefficient; but its probably fine.\n self.replace_item(&mut cursor, start, &mut notify);\n\n // TODO: Consider concatenating end into contents then just call\n // insert_at_iter once.\n self.insert_at_iter(&mut cursor, &mut contents, &mut notify);\n\n self.dbg_check_cursor_at(&cursor, userpos, num_inserted_items);\n\n self.insert_at_iter(&mut cursor, &mut iter::once(end), &mut notify);\n }\n }\n\n }" ) , (58400, 8, " ") , (58417, 3, "") , (58418, 8, "") , (58430, 21, "") , (58430, 0, ",") , (58447, 20, "") , (58459, 42, "") , ( 58400 , 95 , " pub fn insert(&mut self, mut contents: I) where I: ExactSizeIterator {" ) , (58593, 118, "") , (58592, 1, "") , (58592, 0, "\n") , ( 58593 , 0 , " userpos = min(userpos, self.get_userlen());\n let (mut cursor, offset) = self.iter_at_userpos(userpos);\n" ) , (58653, 0, "// ") , (58601, 0, "// ") , (58750, 6, "s") , (58751, 0, "e") , (58752, 0, "l") , (58753, 0, "f") , (58754, 0, ".") , (58755, 0, "i") , (58756, 0, "t") , (58757, 0, "e") , (58758, 0, "m") , (58759, 0, "_") , (58755, 5, "item_offset") , (58795, 0, "l") , (58796, 0, "i") , (58797, 0, "s") , (58798, 0, "t") , (58799, 0, ".") , (58820, 0, "s") , (58821, 0, "e") , (58822, 0, "l") , (58823, 0, "f") , (58824, 0, ".") , (58853, 0, "s") , (58854, 0, "e") , (58855, 0, "l") , (58856, 0, "f") , (58857, 0, ".") , (58849, 4, "") , (58848, 1, "") , (58848, 0, "&mut ") , (58849, 4, "") , (58849, 0, "mut ") , (58888, 0, ".") , (58889, 0, "l") , (58890, 0, "i") , (58891, 0, "s") , (58892, 0, "t") , (58915, 0, "s") , (58916, 0, "e") , (58917, 0, "l") , (58918, 0, "f") , (58919, 0, ".") , (58716, 0, "\n ") , (58725, 0, "\n ") , (58717, 8, "") , (58726, 0, "l") , (58727, 0, "e") , (58728, 0, "t") , (58729, 0, " ") , (58730, 0, "i") , (58731, 0, "n") , (58732, 0, "i") , (58733, 0, "t") , (58734, 0, "i") , (58735, 0, "a") , (58736, 0, "_") , (58736, 1, "") , (58736, 0, "l") , (58737, 0, "_") , (58738, 0, "u") , (58739, 0, "s") , (58740, 0, "e") , (58741, 0, "r") , (58742, 0, "p") , (58743, 0, "o") , (58744, 0, "s") , (58745, 0, " ") , (58746, 0, "=") , (58747, 0, " ") , (58748, 0, "s") , (58749, 0, "e") , (58750, 0, "l") , (58751, 0, "f") , (58752, 0, ".") , (58753, 0, "c") , (58754, 0, "u") , (58755, 0, "r") , (58756, 0, "s") , (58757, 0, "o") , (58758, 0, "r") , (58759, 0, ".") , (58760, 0, "u") , (58761, 0, "s") , (58762, 0, "e") , (58763, 0, "r") , (58764, 0, "p") , (58765, 0, "o") , (58766, 0, "s") , (58767, 0, ";") , (58730, 15, "s") , (58731, 0, "t") , (58732, 0, "a") , (58733, 0, "r") , (58734, 0, "t") , (58735, 0, "_") , (58736, 0, "u") , (58737, 0, "s") , (58738, 0, "e") , (58739, 0, "r") , (58740, 0, "p") , (58741, 0, "o") , (58742, 0, "s") , (58978, 7, "start_userpos") , (59070, 0, "s") , (59071, 0, "e") , (59072, 0, "l") , (59073, 0, "f") , (59074, 0, ".") , (59161, 6, "s") , (59162, 0, "e") , (59163, 0, "l") , (59164, 0, "f") , (59165, 0, ".") , (59166, 0, "l") , (59167, 0, "o") , (59168, 0, "c") , (59169, 0, "a") , (59166, 4, "local_offset") , (59166, 12, "loca") , (59161, 9, "offset") , (59161, 6, "self.loca") , (59166, 4, "local_offset") , (59166, 1, "") , (59166, 1, "") , (59166, 1, "") , (59166, 1, "") , (59166, 1, "") , (59166, 0, "i") , (59167, 0, "t") , (59168, 0, "e") , (59169, 0, "m") , (59297, 0, "s") , (59298, 0, "e") , (59299, 0, "l") , (59300, 0, "f") , (59301, 0, ".") , (59332, 0, ".") , (59333, 0, "l") , (59334, 0, "i") , (59335, 0, "s") , (59336, 0, "t") , (59351, 6, "self.item_offset") , (59463, 0, ".") , (59464, 0, "l") , (59465, 0, "i") , (59466, 0, "s") , (59467, 0, "t") , (59486, 0, "s") , (59487, 0, "e") , (59487, 1, "") , (59486, 1, "") , (59487, 0, "s") , (59488, 0, "e") , (59489, 0, "l") , (59490, 0, "f") , (59491, 0, ".") , (59512, 0, "s") , (59513, 0, "e") , (59514, 0, "l") , (59515, 0, "f") , (59516, 0, ".") , (59668, 0, ".") , (59669, 0, "l") , (59670, 0, "i") , (59671, 0, "s") , (59672, 0, "t") , (59694, 0, "s") , (59695, 0, "e") , (59696, 0, "l") , (59697, 0, "f") , (59698, 0, ".") , (59727, 0, "s") , (59728, 0, "e") , (59729, 0, "l") , (59730, 0, "f") , (59731, 0, ".") , (59763, 0, "l") , (59764, 0, "i") , (59765, 0, "s") , (59766, 0, "t") , (59767, 0, ".") , (59789, 0, "s") , (59790, 0, "e") , (59791, 0, "l") , (59792, 0, "f") , (59793, 0, ".") , (59802, 7, "s") , (59803, 0, "t") , (59804, 0, "a") , (59805, 0, "r") , (59802, 4, "userpos") , (59802, 7, "s") , (59803, 0, "t") , (59804, 0, "a") , (59805, 0, "r") , (59802, 4, "start_userpos") , (59860, 0, "l") , (59861, 0, "i") , (59862, 0, "s") , (59863, 0, "t") , (59864, 0, ".") , (59885, 0, "s") , (59886, 0, "e") , (59887, 0, "l") , (59888, 0, "f") , (59889, 0, ".") , (59925, 0, "s") , (59926, 0, "e") , (59927, 0, "l") , (59928, 0, "f") , (59929, 0, ".") , (54724, 0, "// ") , (54710, 0, "// ") , (54625, 0, "// ") , (54544, 0, "// ") , (54465, 0, "// ") , (54425, 0, "// ") , (54344, 0, "// ") , (54275, 0, "// ") , (54202, 0, "// ") , (54133, 0, "// ") , (54103, 0, "// ") , (54032, 0, "// ") , (53960, 0, "// ") , (53902, 0, "// ") , (53881, 0, "// ") , (53801, 0, "// ") , (53722, 0, "// ") , (53693, 0, "// ") , (53676, 0, "// ") , (53609, 0, "// ") , (53557, 0, "// ") , (53499, 0, "// ") , (53456, 0, "// ") , (53447, 0, "\n ") , (53456, 0, "s") , (53457, 0, "e") , (53458, 0, "l") , (53459, 0, "f") , (53460, 0, ".") , (53461, 0, "e") , (53462, 0, "d") , (53463, 0, "i") , ( 53461 , 3 , "edit_notify(userpos: usize, notify: fn(&[C::Item], ItemMarker), f: F)" ) , (53473, 14, "u") , (53474, 0, "s") , (53475, 0, "e") , (53476, 0, "r") , (53477, 0, "p") , (53478, 0, "o") , (53479, 0, "s") , (53482, 37, "") , (53482, 0, "n") , (53483, 0, "o") , (53484, 0, "t") , (53485, 0, "i") , (53486, 0, "f") , (53487, 0, "y") , (53280, 8, "") , (53329, 20, "") , (53341, 42, "") , (53401, 1, "") , (53400, 1, "") , (53399, 1, "") , (53398, 1, "") , (53397, 1, "") , (53396, 1, "") , (53395, 1, "") , (53405, 8, "") , (53405, 5, "") , (53405, 0, "|") , (53406, 0, "e") , (53407, 0, "d") , (53408, 0, "i") , (53409, 0, "t") , (53410, 0, "|") , (53411, 0, " ") , (53412, 0, "e") , (53413, 0, "d") , (53414, 0, "i") , (53415, 0, "t") , (53416, 0, ".") , (53417, 0, "i") , (53418, 0, "n") , (53419, 0, "s") , (53420, 0, "e") , (53421, 0, "r") , (53422, 0, "t") , (53423, 0, "(") , (53424, 0, "c") , (53425, 0, "o") , (53426, 0, "n") , (53427, 0, "t") , (53428, 0, "e") , (53429, 0, "n") , (53430, 0, "t") , (53431, 0, "s") , (53432, 0, ")") , (53433, 0, ")") , (54944, 17, "") , (21484, 17, "") , (1247, 2, "2") , (1247, 1, "10") , (53418, 1347, "") , (53417, 1, "") , (53297, 3, "") , (53277, 3, "") , (53294, 1, "") , (53277, 1, "") , (58628, 1, "") , (58634, 0, "\n ") , (58639, 0, "\n ") , (58635, 4, "") , (58640, 0, "p") , (58641, 0, "u") , (58642, 0, "b") , (58643, 0, " ") , (58644, 0, "f") , (58645, 0, "n") , (58646, 0, " ") , (58647, 0, "i") , (58648, 0, "n") , (58649, 0, "s") , (58650, 0, "e") , (58651, 0, "r") , (58652, 0, "t") , (58653, 0, "_") , (58654, 0, "s") , (58655, 0, "l") , (58656, 0, "i") , (58657, 0, "c") , (58658, 0, "e") , (58659, 0, "(") , (58660, 0, "&") , (58661, 0, "m") , (58662, 0, "u") , (58663, 0, "t") , (58664, 0, " ") , (58665, 0, "s") , (58666, 0, "e") , (58667, 0, "l") , (58668, 0, "f") , (58669, 0, ",") , (58670, 0, " ") , (58671, 0, "&") , (58672, 0, "[") , (58673, 0, "C") , (58674, 0, ":") , (58675, 0, ":") , (58676, 0, "I") , (58677, 0, "t") , (58678, 0, "e") , (58679, 0, "m") , (58680, 0, "]") , (58671, 0, "i") , (58672, 0, "t") , (58673, 0, "e") , (58674, 0, "m") , (58675, 0, "s") , (58676, 0, ":") , (58677, 0, " ") , (58688, 0, ")") , (58689, 0, " ") , (58690, 0, "w") , (58691, 0, "h") , (58692, 0, "e") , (58693, 0, "r") , (58694, 0, "e") , (58695, 0, " ") , (58696, 0, "C") , (58697, 0, ":") , (58698, 0, ":") , (58699, 0, "I") , (58700, 0, "m") , (58700, 1, "") , (58700, 0, "t") , (58701, 0, "e") , (58702, 0, "m") , (58703, 0, ":") , (58704, 0, " ") , (58705, 0, "C") , (58706, 0, "o") , (58707, 0, "p") , (58708, 0, "y") , (58709, 0, " ") , (58710, 0, "{") , (58711, 0, "\n ") , (58720, 0, "\n ") , (58712, 8, "") , (58713, 8, " }") , (58712, 0, " ") , (58720, 0, "s") , (58721, 0, "e") , (58722, 0, "l") , (58723, 0, "f") , (58724, 0, ".") , (58725, 0, "i") , (58726, 0, "n") , (58727, 0, "s") , (58728, 0, "e") , (58729, 0, "r") , (58730, 0, "t") , (58731, 0, "(") , (58732, 0, "i") , (58733, 0, "t") , (58734, 0, "e") , (58735, 0, "m") , (58736, 0, "s") , (58737, 0, ".") , (58738, 0, "i") , (58739, 0, "t") , (58740, 0, "e") , (58741, 0, "r") , (58742, 0, "(") , (58743, 0, ")") , (58744, 0, ".") , (58745, 0, "c") , (58746, 0, "l") , (58746, 1, "") , (58746, 0, "o") , (58747, 0, "p") , (58748, 0, "e") , (58749, 0, "i") , (58749, 1, "") , (58748, 1, "") , (58748, 0, "i") , (58749, 0, "e") , (58750, 0, "d") , (58751, 0, "(") , (58752, 0, ")") , (58753, 0, ")") , (58754, 0, ";") , (58731, 0, "_iter") , (57083, 0, "_iter") , (53398, 0, "_iter") , (57069, 0, "\n ") , (57074, 0, "\n ") , (57070, 4, "") , (57075, 0, "p") , (57076, 0, "u") , (57077, 0, "b") , (57078, 0, " ") , (57079, 0, "f") , (57080, 0, "n") , (57081, 0, " ") , (57082, 0, "i") , (57083, 0, "n") , (57084, 0, "s") , (57085, 0, "e") , (57086, 0, "r") , (57087, 0, "t") , (57088, 0, "(") , (57088, 1, "") , (57088, 0, "(") , (57089, 0, "&") , (57090, 0, "m") , (57091, 0, "u") , (57092, 0, "t") , (57093, 0, " ") , (57094, 0, "s") , (57095, 0, "e") , (57096, 0, "l") , (57097, 0, "f") , (57098, 0, ",") , (57099, 0, " ") , (57100, 0, "i") , (57101, 0, "t") , (57102, 0, "e") , (57103, 0, "m") , (57104, 0, ":") , (57105, 0, " ") , (57106, 0, "C") , (57107, 0, ":") , (57108, 0, ":") , (57109, 0, "I") , (57110, 0, "t") , (57111, 0, "e") , (57109, 3, "Item") , (57113, 0, ")") , (57114, 0, " ") , (57115, 0, "{") , (57116, 0, "\n ") , (57125, 0, "\n ") , (57117, 8, "") , (57118, 8, " }") , (57117, 0, " ") , (57125, 0, "s") , (57126, 0, "e") , (57127, 0, "l") , (57128, 0, "f") , (57129, 0, ".") , (57130, 0, "i") , (57131, 0, "n") , (57132, 0, "s") , (57133, 0, "e") , (57134, 0, "r") , (57130, 5, "insert_iter(mut contents: I)") , (57142, 15, "i") , (57143, 0, "t") , (57144, 0, "e") , (57145, 0, "r") , (57146, 0, ":") , (57147, 0, ":") , (57148, 0, "o") , (57149, 0, "n") , (57148, 2, "once(value: T)") , (57153, 8, "i") , (57154, 0, "t") , (57155, 0, "e") , (57156, 0, "m") , (57159, 0, ";") , (57069, 97, "") , ( 58644 , 0 , "\n\n pub fn insert(&mut self, item: C::Item) {\n self.insert_iter(iter::once(item));\n }" ) , (51993, 193, "") , (51992, 1, "") , (51992, 0, "\n") , ( 51993 , 0 , "\n // self.modify_at(start_userpos, Self::no_notify, |item, offset| {\n // assert_eq!(offset, 0, \"replace_at must modify the entire item\");\n // *item = \n // })" ) , (60521, 0, "\n ") , (60526, 0, "\n ") , (60522, 4, "") , (60527, 0, "p") , (60528, 0, "u") , (60529, 0, "b") , (60530, 0, " ") , (60531, 0, "f") , (60532, 0, "n") , (60533, 0, " ") , (60534, 0, "r") , (60535, 0, "e") , (60536, 0, "p") , (60537, 0, "l") , (60538, 0, "a") , (60539, 0, "c") , (60540, 0, "e") , (60541, 0, "_") , (60542, 0, "i") , (60543, 0, "t") , (60544, 0, "e") , (60545, 0, "m") , (60546, 0, "(") , (60547, 0, "&") , (60548, 0, "s") , (60549, 0, "e") , (60550, 0, "l") , (60551, 0, "f") , (60552, 0, ",") , (60553, 0, " ") , (60554, 0, "r") , (60555, 0, "e") , (60556, 0, "p") , (60557, 0, "l") , (60558, 0, "a") , (60559, 0, "c") , (60560, 0, "e") , (60561, 0, "m") , (60562, 0, "e") , (60563, 0, "n") , (60564, 0, "t") , (60565, 0, ":") , (60566, 0, " ") , (60567, 0, "C") , (60568, 0, ":") , (60569, 0, ":") , (60570, 0, "I") , (60571, 0, "t") , (60572, 0, "e") , (60573, 0, "m") , (60574, 0, ")") , (60575, 0, " ") , (60576, 0, "{") , (60577, 0, "\n ") , (60586, 0, "\n ") , (60578, 8, "") , (60579, 8, " }") , (60578, 0, " ") , (60586, 0, "s") , (60587, 0, "e") , (60588, 0, "l") , (60589, 0, "f") , (60590, 0, ".") , (60591, 0, "m") , (60592, 0, "o") , (60593, 0, "d") , (60594, 0, "i") , (60591, 4, "modify_item(modify_fn: F)") , (60603, 12, "") , (60603, 0, "|") , (60604, 0, "e") , (60604, 1, "") , (60604, 0, "o") , (60605, 0, "l") , (60606, 0, "d") , (60607, 0, "|") , (60608, 0, " ") , (60609, 0, "*") , (60610, 0, "o") , (60611, 0, "l") , (60612, 0, "d") , (60613, 0, " ") , (60614, 0, "=") , (60615, 0, " ") , (60616, 0, "r") , (60617, 0, "e") , (60618, 0, "p") , (60619, 0, "l") , (60620, 0, "a") , (60621, 0, "c") , (60622, 0, "e") , (60623, 0, "m") , (60624, 0, "e") , (60625, 0, "n") , (60626, 0, "t") , (60628, 0, ";") , (60607, 0, ",") , (60608, 0, " ") , (60609, 0, "o") , (60610, 0, "f") , (60611, 0, "f") , (60612, 0, "s") , (60613, 0, "e") , (60614, 0, "t") , (60617, 0, "{") , (60617, 1, "") , (60609, 0, "_") , (60577, 0, "\n ") , (60577, 9, "") , (60548, 0, "m") , (60549, 0, "u") , (60550, 0, "t") , (60551, 0, " ") , (52193, 304, "") , (52192, 1, "") , (56367, 0, "\n ") , ( 56372 , 0 , "\n fn dbg_check_cursor_at(&self, cursor: &Cursor, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.head.height);\n assert_eq!(cursor, &c2);\n }\n }" ) , (56368, 4, "") , (56672, 0, "\n ") , (56673, 4, "") , (56367, 1, "") , (56400, 20, "") , (56509, 0, ".") , (56510, 0, "l") , (56511, 0, "i") , (56512, 0, "s") , (56513, 0, "t") , (56589, 0, ".") , (56590, 0, "l") , (56591, 0, "i") , (56592, 0, "s") , (56593, 0, "t") , (56632, 0, "s") , (56633, 0, "e") , (56634, 0, "l") , (56635, 0, "f") , (56636, 0, ".") , (59319, 5, "") , (58433, 5, "") , (57609, 5, "") , (59309, 0, ".list") , (58428, 0, ".list") , (57609, 0, ".list") , (59345, 14, "") , (58459, 14, "") , (57635, 14, "") , (59292, 5, "") , (58420, 5, "") , (57610, 5, "") , (56632, 0, "&") , (53999, 428, "") , (53998, 1, "") , (53431, 166, "") , (53430, 1, "") , (53430, 0, "\n ") , (53431, 4, "") , (53379, 1, "") , (53345, 67, " self.edit(userpos, |edit| edit.del(num_items);") , (53345, 65, " self.edit(userpos, |edit| edit.del(num_items); })") , (53398, 1, "") , (53399, 1, "") , (53398, 1, "") , (53832, 8, "") , (58752, 0, "I") , (58753, 0, "o") , (58754, 0, "t") , (58755, 0, "u") , (58756, 0, "i") , (58752, 5, "O") , (58753, 0, "p") , (58754, 0, "t") , (58755, 0, "i") , (58756, 0, "o") , (58757, 0, "n") , (58758, 0, "<") , (58776, 0, ">") , (58779, 0, "\n ") , (58788, 0, "i") , (58789, 0, "f") , (58790, 0, " ") , (58791, 0, "s") , (58792, 0, "e") , (58793, 0, "l") , (58794, 0, "f") , (58795, 0, ".") , (58796, 0, "c") , (58797, 0, "u") , (58798, 0, "r") , (58799, 0, "s") , (58800, 0, "o") , (58801, 0, "r") , (58802, 0, ".") , (58803, 0, "u") , (58804, 0, "s") , (58805, 0, "e") , (58806, 0, "r") , (58807, 0, "p") , (58808, 0, "o") , (58809, 0, "s") , (58810, 0, " ") , (58811, 0, "=") , (58812, 0, "=") , (58813, 0, " ") , (58814, 0, "0") , (58815, 0, " ") , (58816, 0, "7") , (58816, 1, "") , (58816, 0, "&") , (58817, 0, "&") , (58818, 0, " ") , (58819, 0, "s") , (58820, 0, "e") , (58821, 0, "l") , (58822, 0, "f") , (58823, 0, ".") , (58824, 0, "i") , (58825, 0, "t") , (58826, 0, "e") , (58824, 3, "item_offset") , (58835, 0, " ") , (58836, 0, "=") , (58837, 0, "=") , (58838, 0, " ") , (58839, 0, "0") , (58840, 0, " ") , (58841, 0, "{") , (58842, 0, " ") , (58843, 0, "N") , (58844, 0, "o") , (58845, 0, "n") , (58846, 0, "e") , (58847, 0, " ") , (58848, 0, "}") , (58849, 0, "\n ") , (58858, 0, "e") , (58859, 0, "l") , (58860, 0, "s") , (58861, 0, "e") , (58862, 0, " ") , (58863, 0, "{") , (58864, 0, " ") , ( 58850 , 81 , " else { (unsafe { self.cursor.current_item() }, self.item_offset)" ) , (58865, 0, "S") , (58866, 0, "o") , (58867, 0, "m") , (58868, 0, "e") , (58869, 0, "(") , (58927, 0, ")") , (58928, 0, " ") , (58929, 0, "}") , (16234, 1, "") , (16235, 16, "") , (16234, 1, "") , (16233, 1, "") , (16232, 1, "") , (16209, 0, "self.local_index") , (16225, 0, " ") , (16226, 0, "<") , (16227, 0, " ") , ( 29278 , 79 , " if usersize >= offset { break; } // We're in the middle of an item.\n" ) , ( 29278 , 80 , " if usersize offset { break; } // We're in the middle of an item.\n" ) , ( 29278 , 78 , " if usersize > offset { break; } // We're in the middle of an item.\n" ) , ( 58717 , 254 , " pub fn prev_item(&self) -> Option<(&C::Item, usize)> {\n if self.item_offset == 0 {\n assert!(self.cursor.userpos == 0, \"Invalid cursor\");\n None\n } else {\n Some((unsafe { self.cursor.current_item() }, self.item_offset))\n }\n }\n\n pub fn advance_item(&mut self) {\n" ) , ( 16098 , 0 , " unsafe fn prev_item(&self) -> &'a C::Item {\n let node = &*self.here_ptr();\n assert!(self.local_index > 0);\n debug_assert!(self.local_index < node.num_items as usize);\n &*(node.items[self.local_index - 1].as_ptr())\n }\n\n" ) , ( 59163 , 76 , " Some((unsafe { self.cursor.prev_item() }, self.item_offset))\n" ) , (59235, 0, "\n } else {") , (59146, 17, "") , (59063, 0, "\n ") , (59076, 0, "i") , (59077, 0, "f") , (59078, 0, " ") , (59079, 0, "s") , (59080, 0, "e") , (59081, 0, "l") , (59082, 0, "f") , (59083, 0, ".") , (59084, 0, "c") , (59085, 0, "u") , (59086, 0, "r") , (59087, 0, "s") , (59088, 0, "o") , (59089, 0, "r") , (59090, 0, ".") , (59091, 0, "i") , (59092, 0, "n") , (59093, 0, "d") , (59094, 0, "e") , (59095, 0, "x") , (59091, 5, "local_index") , (59102, 0, " ") , (59103, 0, "=") , (59104, 0, "=") , (59105, 0, " ") , (59106, 0, "0") , (59107, 0, " ") , (59108, 0, "{") , (59122, 0, " ") , (59191, 0, " ") , (59199, 0, "\n ") , (59200, 16, " }") , (59213, 0, " ") , (59214, 0, "e") , (59215, 0, "l") , (59216, 0, "s") , (59217, 0, "e") , (59218, 0, " ") , (59219, 0, "{") , (59233, 0, " ") , (59297, 0, "\n ") , (59298, 16, " }") , (59298, 13, " ") , (59298, 16, " }") , (59328, 0, "\n ") , (59341, 0, "Some((unsafe { self.cursor.prev_item() }, self.item_offset))") , (59368, 9, "n") , (59369, 0, "e") , (59369, 1, "") , (59368, 1, "") , (59368, 0, "c") , (59369, 0, "u") , (59370, 0, "r") , (59371, 0, "r") , (59368, 4, "current_item()") , (59381, 1, "") , (59380, 1, "") , (16263, 0, "=") , (20455, 80, "") , (20454, 1, "") , (20453, 1, "") , (20452, 1, "") , (53884, 1, "") , (53883, 1, "") , (53883, 5, "") , (53874, 0, "S") , (53875, 0, "e") , (53876, 0, "l") , (53877, 0, "f") , (53878, 0, ":") , (53879, 0, ":") , (1897, 0, "\n") , (1898, 0, "\n") , (1899, 0, "\n") , (1899, 1, "") , (1899, 0, "i") , (1900, 0, "m") , (1901, 0, "p") , (1902, 0, "l") , (1903, 0, " ") , (1904, 0, "I") , (1905, 0, "t") , (1906, 0, "e") , (1907, 0, "m") , (1904, 4, "ItemMarker") , (1914, 0, " ") , (1915, 0, "{") , (1916, 0, "\n ") , (1921, 0, "\n ") , (1917, 4, "") , (1918, 4, "}") , (1917, 0, " ") , (1921, 0, "n") , (1922, 0, "u") , (1923, 0, "l") , (1924, 0, "l") , (1921, 0, "f") , (1922, 0, "n") , (1923, 0, " ") , (1928, 0, ")") , (1929, 0, "(") , (1929, 1, "") , (1928, 1, "") , (1928, 0, "(") , (1929, 0, ")") , (1930, 0, " ") , (1931, 0, "-") , (1932, 0, ">") , (1933, 0, " ") , (1934, 0, "I") , (1935, 0, "t") , (1936, 0, "e") , (1937, 0, "m") , (1934, 4, "ItemMarker") , (1944, 0, " ") , (1945, 0, "{") , (1946, 0, "\n ") , (1955, 0, "I") , (1956, 0, "t") , (1957, 0, "e") , (1958, 0, "m") , (1959, 0, "M") , (1955, 5, "ItemMarker") , (1965, 0, " ") , (1966, 0, "{") , (1967, 0, " ") , (1968, 0, "p") , (1969, 0, "t") , (1970, 0, "r") , (1971, 0, ":") , (1972, 0, " ") , (1973, 0, "P") , (1974, 0, "t") , (1975, 0, "r") , (1975, 1, "") , (1974, 1, "") , (1973, 1, "") , (1973, 0, "p") , (1974, 0, "t") , (1975, 0, "r") , (1976, 0, ":") , (1977, 0, ":") , (1978, 0, "n") , (1979, 0, "u") , (1980, 0, "l") , (1978, 3, "null()") , (1984, 0, " ") , (1985, 0, "}") , (1986, 0, " ") , (1986, 1, "") , (1986, 0, "\n ") , (1987, 8, " }") , (1903, 0, "<") , (1904, 0, "C") , (1905, 0, ">") , (1917, 0, "<") , (1918, 0, "C") , (1919, 0, ">") , (1950, 0, "<") , (1951, 0, "C") , (1952, 0, ">") , (1905, 0, ":") , (1906, 0, " ") , (1907, 0, "L") , (1908, 0, "i") , (1909, 0, "s") , (1910, 0, "t") , (1907, 4, "ListConfig") , (2003, 0, "_") , (2004, 0, "m") , (2005, 0, "u") , (2006, 0, "t") , (1939, 0, "p") , (1940, 0, "u") , (1941, 0, "b") , (1942, 0, " ") , ( 1935 , 0 , " pub fn null() -> ItemMarker {\n ItemMarker { ptr: ptr::null_mut() }\n }\n" ) , (2033, 0, "i") , (2034, 0, "s") , (2035, 0, "_") , (2041, 0, "I") , (2042, 0, "T") , (2041, 2, "ItemMarker") , (2051, 0, "<") , (2052, 0, "C") , (2053, 0, ">") , (2041, 13, "&") , (2042, 0, "s") , (2043, 0, "e") , (2044, 0, "l") , (2045, 0, "f") , (2051, 13, "b") , (2052, 0, "o") , (2053, 0, "o") , (2054, 0, "l") , (2066, 35, "") , (2066, 0, "p") , (2067, 0, "t") , (2068, 0, "r") , (2069, 0, ":") , (2070, 0, ":") , (2071, 0, "i") , (2072, 0, "s") , (2072, 1, "") , (2071, 1, "") , (2070, 1, "") , (2070, 0, ":") , (2066, 5, "") , (2066, 0, "s") , (2067, 0, "e") , (2068, 0, "l") , (2069, 0, ".") , (2069, 1, "") , (2069, 0, "f") , (2070, 0, ".") , (2071, 0, "p") , (2072, 0, "t") , (2073, 0, "r") , (2074, 0, ".") , (2075, 0, "i") , (2076, 0, "s") , (2077, 0, "_") , (2078, 0, "n") , (2079, 0, "u") , (2080, 0, "l") , (2081, 0, "l") , (2082, 0, "(") , (2083, 0, ")") , (2041, 1, "") , (2021, 0, "\n ") , (54174, 0, "// ") , (54153, 0, "// ") , (54097, 0, "// ") , (54006, 0, "// ") , (53939, 0, "// ") , (53881, 0, "// ") , (53840, 0, "// ") , (53780, 0, "// ") , (2022, 4, "") , ( 53772 , 0 , " // pub fn edit(&mut self, userpos: usize, f: F) -> R\n // where F: FnOnce(&mut Edit) -> R {\n // // self.edit_notify(userpos, no_notify_x::, f)\n // let (cursor, item_offset) = self.iter_at_userpos(userpos);\n // let mut edit = Edit { list: self, cursor, item_offset, notify: Self::no_notify };\n\n // // TODO: Or maybe I should pass ownership here?\n // f(&mut edit)\n // }\n" ) , (54615, 3, "") , (54591, 3, "") , (54532, 3, "") , (54438, 3, "") , (54368, 3, "") , (54307, 3, "") , (54263, 3, "") , (54200, 3, "") , (54211, 6, "") , (54237, 6, "") , (54242, 1, "") , (54242, 0, "E") , (54243, 0, "d") , (54244, 0, "i") , (54245, 0, "t") , (54246, 0, "<") , (54247, 0, "C") , (54248, 0, ">") , (54249, 39, "") , (54249, 0, " ") , (54249, 1, "") , (54532, 12, "") , (54385, 15, "") , (54452, 65, "") , (54451, 1, "") , (54450, 1, "") , (53735, 14, "") , (53438, 14, "") , (53256, 14, "") , (53707, 0, ")") , (53424, 0, ")") , (53256, 0, ")") , (53710, 0, ".") , (53426, 0, ".") , (53257, 0, ".") , (53727, 1, "") , (53449, 1, "") , (53281, 1, "") , (53280, 1, "") , (52803, 0, ")") , (52804, 0, ".") , (52805, 28, "") , (52846, 11, "") , (54403, 6, "") , (53694, 424, "") , (54005, 51, "") , (54005, 0, ")") , (54006, 0, " ") , (54007, 0, "-") , (54008, 0, ">") , (54009, 0, " ") , (54010, 0, "E") , (54011, 0, "d") , (54012, 0, "i") , (54013, 0, "t") , (54014, 0, "<") , (54015, 0, "C") , (54016, 0, ">") , (54017, 40, "") , (54017, 0, " ") , (54160, 77, "") , (54159, 1, "") , (54158, 1, "") , (54158, 0, ";\n") , ( 54160 , 0 , "\n // TODO: Or maybe I should pass ownership here?\n f(&mut edit)" ) , (54017, 1, "") , (54017, 0, "\n where F: FnOnce(&mut Edit) -> R ") , (54009, 8, "") , (54006, 3, "") , (54005, 1, "") , (54005, 0, ", notify: fn(&[C::Item], ItemMarker), f: F) -> R") , ( 53694 , 0 , "\n // pub fn edit(&mut self, userpos: usize, f: F) -> R\n // where F: FnOnce(&mut Edit) -> R {\n // // self.edit_notify(userpos, no_notify_x::, f)\n // let (cursor, item_offset) = self.iter_at_userpos(userpos);\n // let mut edit = Edit { list: self, cursor, item_offset, notify: Self::no_notify };\n\n // // TODO: Or maybe I should pass ownership here?\n // f(&mut edit)\n // }" ) , (53694, 424, "") , (54005, 51, "") , (54005, 0, ", notify: fn(&[C::Item], ItemMarker), f: F) -> R") , (54049, 1, "") , (54048, 1, "") , (54047, 1, "") , (54046, 1, "") , (54045, 1, "") , (54044, 1, "") , (54049, 1, "") , (54049, 26, "") , (54056, 6, "") , (54044, 1, "") , (54044, 0, ")") , (54199, 77, "") , (54198, 1, "") , (54197, 1, "") , (54134, 15, "") , (58866, 0, "\n ") , (58883, 0, "/") , (58884, 0, "/") , (58885, 0, " ") , (58886, 0, "C") , (58953, 0, " ") , (58954, 0, "a") , (58955, 0, "t") , (58956, 0, " ") , (58957, 0, "s") , (58958, 0, "t") , (58959, 0, "a") , (58960, 0, "r") , (58961, 0, "t") , (58962, 0, " ") , (58963, 0, "o") , (58964, 0, "f") , (58965, 0, " ") , (58966, 0, "n") , (58967, 0, "o") , (58968, 0, "d") , (58969, 0, "e") , (58947, 0, "s") , (58948, 0, "t") , (58949, 0, "a") , (58950, 0, "t") , (58951, 0, "e") , (58952, 0, ":") , (58953, 0, " ") , (58954, 1, "") , (58954, 0, "C") , (58867, 20, "") , (58866, 1, "") , (58866, 0, "\n ") , (58883, 0, "/") , (58884, 0, "/") , (58885, 0, " ") , (58886, 0, "C") , (58887, 0, "u") , (58888, 0, "r") , (58889, 0, "s") , (58890, 0, "o") , (58891, 0, "r") , (58892, 0, "s") , (58893, 0, " ") , (58894, 0, "s") , (58895, 0, "h") , (58896, 0, "o") , (58897, 0, "u") , (58898, 0, "l") , (58899, 0, "d") , (58900, 0, " ") , (58901, 0, "a") , (58902, 0, "l") , (58903, 0, "w") , (58904, 0, "a") , (58905, 0, "y") , (58906, 0, "s") , (58907, 0, " ") , (58908, 0, "b") , (58909, 0, "e") , (58910, 0, " ") , (58911, 0, "a") , (58912, 0, "t") , (58913, 0, " ") , (58914, 0, "t") , (58915, 0, "h") , (58916, 0, "e") , (58917, 0, " ") , (58918, 0, "e") , (58919, 0, "n") , (58920, 0, "d") , (58921, 0, " ") , (58922, 0, "o") , (58923, 0, "f") , (58924, 0, " ") , (58925, 0, "t") , (58926, 0, "h") , (58927, 0, "e") , (58928, 0, " ") , (58929, 0, "i") , (58930, 0, "t") , (58931, 0, "e") , (58932, 0, "m") , (58933, 0, " ") , (58886, 48, "") , (58886, 0, "C") , (58887, 0, "u") , (58888, 0, "r") , (58889, 0, "s") , (58890, 0, "o") , (58891, 0, "r") , (58892, 0, "s") , (58893, 0, " ") , (58894, 0, "s") , (58895, 0, "h") , (58896, 0, "o") , (58897, 0, "u") , (58898, 0, "l") , (58899, 0, "d") , (58900, 0, " ") , (58894, 7, "s") , (58895, 0, "t") , (58896, 0, "i") , (58897, 0, "c") , (58898, 0, "k") , (58899, 0, " ") , (58900, 0, "t") , (58901, 0, "o") , (58902, 0, " ") , (58903, 0, "t") , (58904, 0, "h") , (58905, 0, "e") , (58906, 0, " ") , (58907, 0, "e") , (58908, 0, "n") , (58909, 0, "e") , (58909, 1, "") , (58909, 0, "d") , (58910, 0, " ") , (58911, 0, "o") , (58912, 0, "f") , (58913, 0, " ") , (58914, 0, "a") , (58915, 0, " ") , (58916, 0, "n") , (58917, 0, "o") , (58918, 0, "d") , (58919, 0, "e") , (58894, 0, "a") , (58895, 0, "t") , (58896, 0, " ") , (58897, 0, "t") , (58898, 0, "h") , (58899, 0, "e") , (58900, 0, " ") , (58901, 0, "e") , (58902, 0, "n") , (58903, 0, "d") , (58904, 0, " ") , (58905, 0, "o") , (58906, 0, "f") , (58907, 0, " ") , (58908, 0, "a") , (58909, 0, " ") , (58910, 0, "n") , (58911, 0, "o") , (58912, 0, "d") , (58913, 0, "e") , (58914, 0, " ") , (58920, 21, "") , (58915, 5, "d") , (58916, 0, "o") , (58917, 0, "n") , (58918, 0, "'") , (58919, 0, "t") , (58920, 0, " ") , (58921, 0, "m") , (58922, 0, "o") , (58923, 0, "v") , (58924, 0, "e") , (58925, 0, " ") , (58926, 0, "t") , (58927, 0, "o") , (58928, 0, " ") , (58929, 0, "t") , (58930, 0, "h") , (58931, 0, "e") , (58932, 0, " ") , (58933, 0, "n") , (58934, 0, "e") , (58935, 0, "x") , (58936, 0, "t") , (58937, 0, " ") , (58938, 0, "n") , (58939, 0, "o") , (58940, 0, "d") , (58941, 0, "e") , (58886, 56, "") , (58886, 0, "W") , (58887, 0, "h") , (58888, 0, "e") , (58889, 0, "n") , (58890, 0, " ") , (58890, 1, "") , (58890, 0, " ") , (58886, 5, "T") , (58887, 0, "h") , (58888, 0, "e") , (58889, 0, " ") , (58890, 0, "o") , (58891, 0, "n") , (58892, 0, "l") , (58893, 0, "y") , (58894, 0, " ") , (58895, 0, "t") , (58896, 0, "i") , (58897, 0, "m") , (58898, 0, "e") , (58899, 0, " ") , (58900, 0, "a") , (58901, 0, " ") , (58902, 0, "c") , (58903, 0, "u") , (58904, 0, "r") , (58905, 0, "s") , (58906, 0, "o") , (58907, 0, "r") , (58908, 0, " ") , (58909, 0, "i") , (58910, 0, "s") , (58911, 0, " ") , (58912, 0, "r") , (58913, 0, "i") , (58914, 0, "g") , (58915, 0, "h") , (58916, 0, "t") , (58917, 0, " ") , (58918, 0, "a") , (58919, 0, "t") , (58920, 0, " ") , (58921, 0, "t") , (58922, 0, "h") , (58923, 0, "e") , (58924, 0, " ") , (58925, 0, "s") , (58926, 0, "t") , (58927, 0, "a") , (58928, 0, "r") , (58929, 0, "t") , (58930, 0, " ") , (58931, 0, "o") , (58932, 0, "f") , (58933, 0, " ") , (58934, 0, "n") , (58935, 0, "o") , (58935, 1, "") , (58934, 1, "") , (58934, 0, "t") , (58935, 0, "h") , (58936, 0, "e") , (58937, 0, " ") , (58938, 0, "n") , (58939, 0, "o") , (58940, 0, "d") , (58941, 0, "e") , (58942, 0, ",") , (58943, 0, " ") , (58943, 1, "") , (58942, 1, "") , (58942, 0, " ") , (58943, 0, "i") , (58944, 0, "s") , (58945, 0, " ") , (58946, 0, "w") , (58947, 0, "h") , (58948, 0, "e") , (58949, 0, "n") , (58950, 0, " ") , (58951, 0, "t") , (58952, 0, "h") , (58953, 0, "e") , (58954, 0, " ") , (58955, 0, "c") , (58956, 0, "u") , (58957, 0, "r") , (58958, 0, "s") , (58959, 0, "o") , (58960, 0, "r") , (58961, 0, " ") , (58962, 0, "s") , (58962, 1, "") , (58962, 0, "i") , (58963, 0, "s") , (58964, 0, " ") , (58965, 0, "r") , (58966, 0, "i") , (58967, 0, "g") , (58968, 0, "h") , (58965, 4, "a") , (58966, 0, "t") , (58967, 0, " ") , (58968, 0, "t") , (58969, 0, "h") , (58970, 0, "e") , (58971, 0, " ") , (58972, 0, "s") , (58973, 0, "t") , (58974, 0, "a") , (58975, 0, "r") , (58976, 0, "t") , (58977, 0, " ") , (58978, 0, "o") , (58979, 0, "f") , (58980, 0, " ") , (58981, 0, "t") , (58982, 0, "n") , (58982, 1, "") , (58982, 0, "h") , (58983, 0, "e") , (58984, 0, " ") , (58985, 0, "e") , (58986, 0, "n") , (58987, 0, "t") , (58988, 0, "i") , (58989, 0, "r") , (58990, 0, "e") , (58991, 0, " ") , (58992, 0, "l") , (58993, 0, "i") , (58994, 0, "s") , (58995, 0, "t") , (58996, 0, ".") , ( 58867 , 130 , " // The only time a cursor is right at the start of the node is\n // when the cursor is at the start of the entire list." ) , (58909, 2, "s") , (58910, 0, "h") , (58911, 0, "o") , (58912, 0, "u") , (58913, 0, "l") , (58914, 0, "d") , (58915, 0, " ") , (58916, 0, "b") , (58917, 0, "e") , (58919, 5, "") , (58918, 1, "") , (1897, 0, "\n") , (1898, 0, "\n") , (1899, 0, "i") , (1900, 0, "m") , (1901, 0, "p") , (1902, 0, "l") , (1903, 0, " ") , (1904, 0, "C") , (1905, 0, "o") , (1906, 0, "p") , (1907, 0, "y") , (1908, 0, " ") , (1909, 0, "f") , (1910, 0, "o") , (1911, 0, "r") , (1912, 0, " ") , (1913, 0, "I") , (1914, 0, "t") , (1915, 0, "e") , (1916, 0, "m") , (1917, 0, "M") , (1913, 5, "ItemMarker") , (1923, 0, " ") , (1924, 0, "{") , (1925, 0, "}") , (1903, 0, "<") , (1904, 0, "C") , (1905, 0, ":") , (1906, 0, " ") , (1907, 0, "L") , (1908, 0, "i") , (1909, 0, "s") , (1910, 0, "t") , (1907, 4, "ListConfig") , (1917, 0, ">") , (1938, 0, "<") , (1939, 0, "C") , (1940, 0, ">") , (1779, 6, "") , (1892, 0, "\n") , (1893, 0, "i") , (1894, 0, "m") , (1895, 0, "p") , (1896, 0, "l") , (1943, 0, "\nimpl Copy for ItemMarker {}") , (1893, 4, "") , (1892, 1, "") , (1913, 4, "C") , (1914, 0, "l") , (1915, 0, "o") , (1916, 0, "n") , (1917, 0, "e") , (1764, 17, "") , (1921, 0, "\n \n") , (1926, 0, "f") , (1927, 0, "n") , (1928, 0, " ") , (1929, 0, "c") , (1930, 0, "l") , (1931, 0, "o") , (1929, 3, "clone()") , (1926, 0, "// ") , (1926, 13, "fn clone(&self) -> Self;") , (1949, 1, "") , (1949, 0, " ") , (1950, 0, "{") , (1951, 0, " ") , (1952, 0, "*") , (1953, 0, "s") , (1954, 0, "e") , (1955, 0, "l") , (1956, 0, "f") , (1957, 0, " ") , (1958, 0, "}") , (1875, 0, "\n") , (1876, 0, "/") , (1877, 0, "/") , (1878, 0, " ") , (1879, 0, "D") , (1880, 0, "e") , (1881, 0, "r") , (1882, 0, "i") , (1883, 0, "v") , (1884, 0, "e") , (1885, 0, " ") , (1886, 0, "t") , (1887, 0, "r") , (1888, 0, "a") , (1889, 0, "i") , (1890, 0, "t") , (1891, 0, "s") , (1892, 0, " ") , (1893, 0, "d") , (1894, 0, "o") , (1895, 0, "n") , (1896, 0, "'") , (1897, 0, "t") , (1898, 0, " ") , (1899, 0, "w") , (1900, 0, "o") , (1901, 0, "r") , (1902, 0, "k") , (1903, 0, " ") , (1904, 0, "h") , (1905, 0, "e") , (1906, 0, "r") , (1907, 0, "e") , (1908, 0, ".") , (54159, 2, "F") , (54160, 0, "n") , (54161, 0, "M") , (54162, 0, "u") , (54163, 0, "t") , (54159, 0, "i") , (54160, 0, "m") , (54161, 0, "p") , (54162, 0, "l") , (54163, 0, " ") , (55769, 0, "// ") , (55727, 0, "// ") , (55670, 0, "// ") , (55647, 0, "// ") , (55616, 0, "// ") , (55579, 0, "// ") , (55574, 3, "") , (55552, 3, "") , (55492, 3, "") , (55466, 3, "") , (55432, 3, "") , (55350, 3, "") , (55559, 0, "// ") , (55540, 0, "// ") , (55483, 0, "// ") , (55460, 0, "// ") , (55429, 0, "// ") , (55350, 0, "// ") , (55784, 3, "") , (55739, 3, "") , (55679, 3, "") , (55653, 3, "") , (55619, 3, "") , (55579, 3, "") , (55727, 0, " notify: fn(&[C::Item], ItemMarker)\n") , (55773, 0, "// ") , (55739, 2, "i") , (55740, 0, "m") , (55741, 0, "p") , (55742, 0, "l") , (55743, 0, " ") , (55744, 0, "F") , (55745, 0, "n") , (55746, 0, "M") , (55747, 0, "u") , (55748, 0, "t") , (55743, 6, "") , (55739, 4, "fn") , (55773, 3, "") , (55727, 42, "") , (55769, 0, "// ") , (55727, 0, "// ") , (55670, 0, "// ") , (55647, 0, "// ") , (55616, 0, "// ") , (55579, 0, "// ") , (55574, 3, "") , (55552, 3, "") , (55492, 3, "") , (55466, 3, "") , (55432, 3, "") , (55350, 3, "") , (54098, 0, "// ") , (54024, 0, "// ") , (53957, 0, "// ") , (53899, 0, "// ") , (53843, 0, "// ") , (54138, 0, "<") , (54139, 0, "N") , (54140, 0, ":") , (54141, 0, " ") , (54142, 0, "FnMut(&[C::Item], ItemMarker)") , (54174, 0, ">") , (54259, 0, ",") , (54260, 0, " ") , (54261, 0, "N") , (54211, 37, "N") , (54110, 3, "") , (54033, 3, "") , (53963, 3, "") , (53902, 3, "") , (53843, 3, "") , (53891, 0, ",") , (53892, 0, " ") , (53893, 0, "i") , (53894, 0, "m") , (53895, 0, "p") , (53896, 0, "l") , (53897, 0, " ") , (53898, 0, "FnMut(&[C::Item], ItemMarker)") , (55928, 0, ",") , (55929, 0, " ") , (55930, 0, "FnMut(&[C::Item], ItemMarker)") , (55930, 0, "N") , (55931, 0, ":") , (55932, 0, " ") , (55977, 0, ",") , (55978, 0, " ") , (55979, 0, "N") , (49409, 0, "&") , (52104, 5, "") , (49410, 0, "m") , (49411, 0, "u") , (49412, 0, "t") , (49413, 0, " ") , (49397, 4, "") , (52318, 0, "&") , (52319, 0, "m") , (52320, 0, "u") , (52321, 0, "t") , (52322, 0, " ") , (58870, 0, "&") , (58871, 0, "m") , (58872, 0, "u") , (58873, 0, "t") , (58874, 0, " ") , (59452, 16, "") , (59452, 0, "C") , (59453, 0, ":") , (59454, 0, ":") , (59455, 0, "get_usersize(_item: &Self::Item)") , (59393, 0, "\n ") , (59410, 0, "l") , (59411, 0, "e") , (59412, 0, "t") , (59413, 0, " ") , (59414, 0, "p") , (59415, 0, "r") , (59416, 0, "e") , (59417, 0, "v") , (59418, 0, "_") , (59419, 0, "i") , (59420, 0, "t") , (59421, 0, "e") , (59422, 0, "m") , (59423, 0, " ") , (59424, 0, "=") , (59425, 0, " ") , (59458, 23, "") , (59458, 0, "self.cursor.prev_item()") , (59449, 34, "") , (59426, 0, "unsafe { self.cursor.prev_item() }") , (59460, 0, ";") , (59484, 0, "p") , (59485, 0, "r") , (59486, 0, "e") , (59487, 0, "v") , (59488, 0, "_") , (59484, 5, "prev_item") , (59511, 18, "p") , (59512, 0, "r") , (59513, 0, "e") , (59514, 0, "v") , (59511, 4, "prev_item") , (55393, 5375, "") , (56742, 0, "\n") , (56743, 0, "\n") , (56744, 0, "\n") , (56745, 0, "\n") , ( 56746 , 0 , "\npub struct Edit<'a, C: ListConfig, Notify: FnMut(&[C::Item], ItemMarker)> {\n list: &'a mut SkipList,\n cursor: Cursor,\n item_offset: usize, // Offset into the current item.\n notify: Notify\n}\n// pub struct Edit<'a, C: ListConfig> {\n// list: &'a mut SkipList,\n// cursor: Cursor,\n// item_offset: usize, // Offset into the current item.\n// notify: fn(&[C::Item], ItemMarker)\n// }\n\n// impl<'a, C: ListConfig, Notify: FnMut(&[C::Item], ItemMarker)> Edit<'a, C, Notify> {\nimpl<'a, C: ListConfig, N: FnMut(&[C::Item], ItemMarker)> Edit<'a, C, N> {\n fn dbg_check_cursor_at(&self, userpos: usize, plus_items: usize) {\n if cfg!(debug_assertions) {\n let (mut c2, _) = self.list.iter_at_userpos(userpos);\n c2.advance_by_items(plus_items, self.list.head.height);\n assert_eq!(&self.cursor, &c2);\n }\n }\n\n pub fn del(&mut self, num_items: usize) {\n assert_eq!(self.item_offset, 0, \"Splitting nodes not yet supported\");\n\n unsafe { self.list.del_at_iter(&self.cursor, num_items); }\n\n if cfg!(debug_assertions) {\n let (c2, _) = self.list.iter_at_userpos(self.cursor.userpos);\n if &self.cursor != &c2 { panic!(\"Invalid cursor after delete\"); }\n }\n }\n\n pub fn insert_iter(&mut self, mut contents: I) where I: ExactSizeIterator {\n if contents.len() == 0 { return; }\n let num_inserted_items = contents.len();\n \n // userpos = min(userpos, self.get_userlen());\n // let (mut cursor, offset) = self.iter_at_userpos(userpos);\n\n let start_userpos = self.cursor.userpos;\n\n unsafe {\n if self.item_offset == 0 {\n self.list.insert_at_iter(&mut self.cursor, &mut contents, &mut self.notify);\n\n self.dbg_check_cursor_at(start_userpos, num_inserted_items);\n } else {\n let current_item = self.cursor.current_item();\n let (start, end) = C::split_item(current_item, self.item_offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n self.cursor.move_to_item_start(self.list.head.height, self.item_offset);\n // This feels pretty inefficient; but its probably fine.\n self.list.replace_item(&mut self.cursor, start, &mut self.notify);\n\n // TODO: Consider concatenating end into contents then just call\n // insert_at_iter once.\n self.list.insert_at_iter(&mut self.cursor, &mut contents, &mut self.notify);\n\n self.dbg_check_cursor_at(start_userpos, num_inserted_items);\n\n self.list.insert_at_iter(&mut self.cursor, &mut iter::once(end), &mut self.notify);\n }\n }\n }\n\n pub fn insert(&mut self, item: C::Item) {\n self.insert_iter(iter::once(item));\n }\n\n pub fn insert_slice(&mut self, items: &[C::Item]) where C::Item: Copy {\n self.insert_iter(items.iter().copied());\n }\n\n pub fn replace(&mut self, removed_items: usize, mut inserted_content: I)\n where I: ExactSizeIterator {\n assert_eq!(self.item_offset, 0, \"Splitting nodes not yet supported\");\n\n let num_inserted_items = inserted_content.len();\n let start_userpos = self.cursor.userpos;\n \n unsafe { self.list.replace_at_iter(&mut self.cursor, removed_items, &mut inserted_content, &mut self.notify); }\n\n self.dbg_check_cursor_at(start_userpos, num_inserted_items);\n }\n\n pub fn prev_item(&self) -> Option<(&C::Item, usize)> {\n if self.item_offset == 0 {\n if self.cursor.local_index == 0 {\n // The only time a cursor should be at the start of the node is\n // when the cursor is at the start of the entire list.\n assert!(self.cursor.userpos == 0, \"Invalid state: Cursor at start of node\");\n None\n } else {\n let prev_item = unsafe { self.cursor.prev_item() };\n Some((prev_item, C::get_usersize(prev_item)))\n }\n } else {\n Some((unsafe { self.cursor.current_item() }, self.item_offset))\n }\n }\n\n pub fn advance_item(&mut self) {\n self.cursor.advance_item(self.list.head.height);\n self.item_offset = 0;\n }\n\n pub fn modify_item(&mut self, modify_fn: F) where F: FnOnce(&mut C::Item, usize) {\n let e = self.cursor.here_ptr();\n let item = unsafe { self.cursor.current_item_mut() };\n let old_usersize = C::get_usersize(item);\n modify_fn(item, self.item_offset);\n let new_usersize = C::get_usersize(item);\n\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n self.cursor.update_offsets(self.list.head.height as usize, usersize_delta);\n self.list.num_usercount = self.list.num_usercount.wrapping_add(usersize_delta as usize);\n self.item_offset = usize::max(self.item_offset, new_usersize);\n }\n\n (self.notify)(std::slice::from_ref(item), ItemMarker {\n ptr: e,\n // _phantom: PhantomData,\n });\n }\n\n pub fn replace_item(&mut self, replacement: C::Item) {\n self.modify_item(|old, _offset| *old = replacement);\n }\n}\n" ) , (56743, 0, "\n") , (56744, 0, "i") , (56745, 0, "m") , (56746, 0, "p") , (56747, 0, "l") , (56748, 0, "<") , (56749, 0, "C") , (56750, 0, ":") , (56751, 0, " ") , (56752, 0, "L") , (56753, 0, "i") , (56754, 0, "s") , (56755, 0, "t") , (56752, 4, "ListConfig") , (56762, 0, ">") , (56763, 0, " ") , (56764, 0, "D") , (56765, 0, "e") , (56766, 0, "b") , (56767, 0, "u") , (56768, 0, "g") , (56764, 0, "f") , (56765, 0, "m") , (56766, 0, "t") , (56767, 0, ":") , (56768, 0, ":") , (56769, 0, "Debug") , (56769, 5, "") , (56774, 0, " ") , (56775, 0, "f") , (56776, 0, "o") , (56777, 0, "r") , (56778, 0, " ") , (56779, 0, "S") , (56780, 0, "k") , (56781, 0, "i") , (56782, 0, "l") , (56779, 4, "SkipList") , (56787, 0, "<") , (56788, 0, "C") , (56789, 0, ">") , (56790, 0, " ") , (56791, 0, "{") , (56792, 0, "\n ") , (56797, 0, "\n ") , (56793, 4, "") , (56794, 4, "}") , (56793, 0, " ") , (56797, 0, "n") , (56797, 1, "") , (56797, 0, "f") , (56798, 0, "n") , (56799, 0, " ") , (56800, 0, "f") , (56801, 0, "m") , (56802, 0, "t") , (56803, 0, "(") , (56804, 0, "&") , (56805, 0, "s") , (56806, 0, "e") , (56807, 0, "l") , (56808, 0, "f") , (56809, 0, ",") , (56810, 0, " ") , (56811, 0, "f") , (56812, 0, ":") , (56813, 0, " ") , (56814, 0, "&") , (56815, 0, "m") , (56816, 0, "u") , (56817, 0, "t") , (56818, 0, " ") , (56819, 0, "F") , (56820, 0, "o") , (56821, 0, "r") , (56822, 0, "m") , (56823, 0, "a") , (56824, 0, "t") , (56825, 0, "t") , (56826, 0, "e") , (56827, 0, "r") , (56819, 9, "Formatter") , (56828, 0, "<") , (56829, 0, "'") , (56830, 0, "_") , (56831, 0, "'") , (56831, 1, "") , (56831, 0, ">") , (56832, 0, ")") , (56833, 0, " ") , (56834, 0, "-") , (56835, 0, ">") , (56836, 0, " ") , (56837, 0, "R") , (56838, 0, "e") , (56839, 0, "s") , (56840, 0, "u") , (56841, 0, "l") , (56842, 0, "t") , (56843, 0, " ") , (56844, 0, "{") , (56845, 0, "\n ") , (56854, 0, "\n ") , (56846, 8, "") , (56847, 8, " }") , (56792, 0, "\n ") , (56797, 0, "u") , (56798, 0, "s") , (56799, 0, "e") , (56800, 0, " ") , (56801, 0, "s") , (56802, 0, "t") , (56803, 0, "d") , (56804, 0, ":") , (56805, 0, ":") , (56806, 0, "f") , (56807, 0, "m") , (56808, 0, "t") , (56809, 0, ":") , (56810, 0, ":") , (56811, 0, "F") , (56812, 0, "o") , (56813, 0, "r") , (56811, 3, "") , (56811, 0, "*") , (56812, 0, ";") , (56811, 1, "") , (56811, 0, "F") , (56812, 0, "o") , (56813, 0, "r") , (56814, 0, "m") , (56811, 4, "Formatter") , (56848, 0, "s") , (56849, 0, "t") , (56850, 0, "d") , (56851, 0, ":") , (56852, 0, ":") , (56853, 0, "f") , (56854, 0, "m") , (56855, 0, "t") , (56856, 0, ":") , (56857, 0, ":") , (56793, 28, "") , (56792, 1, "") , (56819, 5, "") , (56851, 0, " ") , (56859, 0, "f") , (56860, 0, ".") , (56861, 0, "d") , (56862, 0, "e") , (56863, 0, "b") , (56864, 0, "u") , (56865, 0, "g") , (56861, 5, "debug_list()") , (56873, 0, ".") , (56874, 0, "e") , (56875, 0, "n") , (56876, 0, "t") , (56877, 0, "r") , (56878, 0, "i") , (56879, 0, "e") , (56880, 0, "s") , (56881, 0, "(") , (56882, 0, "s") , (56883, 0, "e") , (56884, 0, "l") , (56885, 0, "f") , (56886, 0, ".") , (56894, 0, "// ") , (56888, 0, "// ") , (56851, 0, "// ") , (56793, 0, "// ") , (56744, 0, "// ") , (56743, 0, "\n") , (56744, 0, "\n") , (56744, 0, "i") , (56745, 0, "m") , (56746, 0, "p") , (56747, 0, "l") , (56748, 0, " ") , (56744, 5, "") , (56743, 1, "") , (56796, 0, "\n// impl fmt::Debug for SkipList {") , (56796, 0, "\n") , (56744, 1, "") , (56795, 0, "\n") , (56743, 1, "") , (56794, 1, "") , (56743, 0, "\n") , (56744, 3, "") , (56764, 10, "I") , (56765, 0, "t") , (56766, 0, "e") , (56767, 0, "r") , (56768, 0, "a") , (56769, 0, "t") , (56770, 0, "o") , (56771, 0, "r") , (56790, 0, "\n ") , (56795, 0, "\n ") , (56791, 4, "") , (56792, 4, "}") , (56791, 0, " ") , (56795, 0, "t") , (56796, 0, "y") , (56797, 0, "p") , (56798, 0, "e") , (56799, 0, " ") , (56800, 0, "I") , (56801, 0, "t") , (56802, 0, "e") , (56803, 0, "m") , (56804, 0, " ") , (56805, 0, "=") , (56806, 0, " ") , (56807, 0, "C") , (56808, 0, ":") , (56809, 0, ":") , (56810, 0, "I") , (56811, 0, "t") , (56812, 0, "e") , (56813, 0, "m") , (56810, 4, "Item") , (56814, 0, ";") , (56815, 0, "\n ") , (56820, 0, "\n ") , (56816, 4, "") , (56821, 0, "f") , (56822, 0, "n") , (56823, 0, " ") , (56824, 0, "n") , (56825, 0, "e") , (56826, 0, "x") , (56827, 0, "t") , (56828, 0, "(") , (56817, 12, "") , (56816, 1, "") , (56744, 74, "/") , ( 56744 , 1 , "impl Iterator for SkipList {\n type Item = C::Item;\n\n}" ) , (56817, 0, "// ") , (56791, 0, "// ") , (56744, 0, "// ") , (56743, 0, "\n") , ( 56744 , 0 , "\nstruct NodeIter<'a, C: ListConfig>(Option<&'a Node>);\nimpl<'a, C: ListConfig> Iterator for NodeIter<'a, C> {\n type Item = &'a Node;\n\n fn next(&mut self) -> Option<&'a Node> {\n let prev = self.0;\n if let Some(n) = self.0 {\n *self = NodeIter(unsafe { n.first_skip_entry().node.as_ref() });\n }\n prev\n }\n}\n" ) , (57104, 0, "\n") , (56752, 4, "L") , (56753, 0, "i") , (56754, 0, "s") , (56755, 0, "t") , (56799, 0, ",") , (56800, 0, " ") , (56801, 0, "u") , (56802, 0, "s") , (56803, 0, "i") , (56804, 0, "z") , (56805, 0, "e") , (56846, 8, "L") , (56847, 0, "i") , (56848, 0, "s") , (56849, 0, "t") , (56850, 0, "I") , (56851, 0, "t") , (56852, 0, "e") , (56853, 0, "r") , (56880, 11, "C") , (56881, 0, ":") , (56882, 0, ":") , (56883, 0, "Item") , (56927, 7, "C") , (56928, 0, ":") , (56929, 0, ":") , (56930, 0, "I") , (56927, 4, "S") , (56928, 0, "e") , (56929, 0, "l") , (56930, 0, "f") , (56931, 0, ":") , (56932, 0, ":") , (56933, 0, "I") , (56934, 0, "t") , (56935, 0, "e") , (56936, 0, "m") , (56927, 10, "C::I") , (56927, 4, "Node") , (56927, 7, "C::I") , (56927, 4, "Self::Item") , (56926, 1, "") , (56925, 1, "") , (56924, 1, "") , (56880, 0, "&") , (56881, 0, "'") , (56882, 0, "a") , (56883, 0, " ") , (56928, 0, "'") , (56929, 0, "a") , (56930, 0, " ") , (57101, 0, "// ") , (57091, 0, "// ") , (57014, 0, "// ") , (56980, 0, "// ") , (56953, 0, "// ") , (56944, 0, "\n ") , (56953, 0, "u") , (56954, 0, "n") , (56955, 0, "i") , (56956, 0, "m") , (56957, 0, "p") , (56953, 5, "unimplemented") , (56966, 0, "(") , (56967, 0, ")") , (56968, 0, ";") , (56968, 1, "") , (56966, 0, "!") , (56927, 4, "") , (56941, 24, "") , (56940, 1, "") , (56940, 0, "\n ") , (56949, 0, "i") , (56950, 0, "f") , (56951, 0, " ") , (56941, 11, "") , (56940, 1, "") , (56779, 1, "") , (56779, 0, " ") , (56780, 0, "{") , (56781, 0, "\n ") , (56786, 0, "n") , (56787, 0, "o") , (56788, 0, "d") , (56789, 0, "e") , (56790, 0, ":") , (56791, 0, " ") , (56812, 1, "") , (56811, 1, "") , (56811, 0, ",") , (56812, 0, "\n ") , (56817, 0, "i") , (56818, 0, "n") , (56819, 0, "d") , (56820, 0, "e") , (56821, 0, "x") , (56822, 0, ":") , (56823, 0, " ") , (56829, 1, "") , (56829, 0, "\n ") , (56830, 4, "}") , (56831, 1, "") , (56963, 0, "\n ") , (56972, 0, "i") , (56973, 0, "f") , (56974, 0, " ") , (56975, 0, "s") , (56976, 0, "e") , (56977, 0, "l") , (56978, 0, "f") , (56979, 0, ".") , (56980, 0, "n") , (56981, 0, "o") , (56982, 0, "d") , (56983, 0, "e") , (56984, 0, " ") , (56984, 1, "") , (56984, 0, ".") , (56985, 0, "i") , (56986, 0, "s") , (56987, 0, "_") , (56972, 16, "") , (56972, 0, "i") , (56973, 0, "f") , (56974, 0, " ") , (56975, 0, "l") , (56976, 0, "e") , (56977, 0, "t") , (56978, 0, " ") , (56979, 0, "S") , (56980, 0, "o") , (56981, 0, "m") , (56982, 0, "e") , (56983, 0, "(") , (56984, 0, "n") , (56985, 0, "o") , (56986, 0, "d") , (56987, 0, "e") , (56988, 0, ")") , (56989, 0, " ") , (56990, 0, "=") , (56991, 0, " ") , (56992, 0, "s") , (56993, 0, "e") , (56994, 0, "l") , (56995, 0, "f") , (56996, 0, ".") , (56997, 0, "n") , (56998, 0, "o") , (56999, 0, "d") , (57000, 0, "e") , (57001, 0, " ") , (57002, 0, "{") , (57003, 0, "\n ") , (57016, 0, "\n ") , (57004, 12, "") , (57005, 12, " }") , (57014, 0, " ") , (57015, 0, "e") , (57016, 0, "l") , (57017, 0, "s") , (57018, 0, "e") , (57019, 0, " ") , (57020, 0, "{") , (57021, 0, " ") , (57022, 0, "N") , (57023, 0, "o") , (57024, 0, "n") , (57025, 0, "e") , (57026, 0, " ") , (57027, 0, "}") , (57004, 0, " ") , (57016, 0, "l") , (57017, 0, "e") , (57018, 0, "t") , (57019, 0, " ") , (57020, 0, "i") , (57021, 0, "t") , (57022, 0, "e") , (57020, 3, "c") , (57021, 0, "u") , (57022, 0, "r") , (57023, 0, "r") , (57024, 0, "e") , (57025, 0, "n") , (57026, 0, "t") , (57027, 0, " ") , (57028, 0, "=") , (57029, 0, " ") , (57030, 0, "n") , (57031, 0, "o") , (57032, 0, "d") , (57033, 0, "e") , (57034, 0, "[") , (57034, 1, "") , (57034, 0, ".") , (57035, 0, "i") , (57036, 0, "t") , (57037, 0, "e") , (57038, 0, "m") , (57039, 0, "s") , (57040, 0, "[") , (57041, 0, "s") , (57042, 0, "e") , (57043, 0, "l") , (57044, 0, "f") , (57045, 0, ".") , (57046, 0, "i") , (57047, 0, "n") , (57048, 0, "d") , (57049, 0, "e") , (57050, 0, "x") , (57051, 0, "]") , (57052, 0, ";") , (57053, 0, "\n ") , (57066, 0, "\n ") , (57054, 12, "") , (57067, 0, "c") , (57068, 0, "u") , (57069, 0, "r") , (57070, 0, "r") , (57071, 0, "e") , (57072, 0, "n") , (57073, 0, "t") , (57074, 0, ".") , (57067, 0, "u") , (57068, 0, "n") , (57069, 0, "s") , (57070, 0, "a") , (57071, 0, "f") , (57072, 0, "e") , (57073, 0, " ") , (57074, 0, "{") , (57075, 0, " ") , (57084, 0, "g") , (57085, 0, "e") , (57086, 0, "t") , (57087, 0, "_") , (57088, 0, "r") , (57089, 0, "e") , (57090, 0, "f") , (57091, 0, "(") , (57092, 0, ")") , (57093, 0, " ") , (57094, 0, "}") , (57067, 0, "S") , (57068, 0, "o") , (57069, 0, "m") , (57070, 0, "e") , (57071, 0, "(") , (57100, 0, ")") , (57089, 7, "a") , (57090, 0, "s") , (57091, 0, "_") , (57092, 0, "p") , (57093, 0, "t") , (57094, 0, "r") , (57081, 0, "*") , (57081, 0, "&") , (57030, 0, "&") , (57054, 0, "\n ") , (57067, 0, "i") , (57068, 0, "f") , (57069, 0, " ") , (57070, 0, "s") , (57071, 0, "e") , (57072, 0, "l") , (57073, 0, "f") , (57074, 0, ".") , (57075, 0, "i") , (57076, 0, "n") , (57077, 0, "d") , (57078, 0, "e") , (57079, 0, "x") , (57080, 0, " ") , (57081, 0, "+") , (57082, 0, " ") , (57083, 0, "1") , (57083, 1, "") , (57082, 1, "") , (57081, 1, "") , (57067, 14, "s") , (57068, 0, "e") , (57069, 0, "l") , (57070, 0, "f") , (57071, 0, ".") , (57072, 0, "i") , (57073, 0, "n") , (57074, 0, "d") , (57075, 0, "e") , (57076, 0, "x") , (57077, 0, " ") , (57078, 0, "+") , (57079, 0, "=") , (57080, 0, " ") , (57081, 0, "1") , (57082, 0, ";") , (57083, 0, "\n ") , (57096, 0, "i") , (57097, 0, "f") , (57098, 0, " ") , (57099, 0, "s") , (57100, 0, "e") , (57101, 0, "l") , (57102, 0, "f") , (57103, 0, ".") , (57104, 0, "i") , (57105, 0, "n") , (57106, 0, "d") , (57107, 0, "e") , (57108, 0, "x") , (57109, 0, " ") , (57110, 0, "=") , (57111, 0, "=") , (57112, 0, " ") , (57112, 1, "") , (57111, 1, "") , (57110, 1, "") , (57110, 0, "=") , (57111, 0, "=") , (57112, 0, " ") , (57113, 0, "n") , (57114, 0, "o") , (57115, 0, "d") , (57116, 0, "e") , (57117, 0, ".") , (57118, 0, "l") , (57119, 0, "e") , (57120, 0, "n") , (57120, 1, "") , (57119, 1, "") , (57118, 1, "") , (57117, 1, "") , (57117, 0, ".") , (57118, 0, "n") , (57119, 0, "u") , (57120, 0, "m") , (57118, 3, "num_items") , (57127, 0, " ") , (57128, 0, "{") , (57129, 0, "\n ") , (57130, 16, " }") , (57129, 0, "\n ") , (57146, 0, "s") , (57147, 0, "e") , (57148, 0, "l") , (57149, 0, "f") , (57150, 0, ".") , (57151, 0, "i") , (57152, 0, "n") , (57153, 0, "d") , (57154, 0, "e") , (57155, 0, "x") , (57156, 0, " ") , (57157, 0, "=") , (57158, 0, " ") , (57159, 0, "0") , (57160, 0, ";") , (57161, 0, "\n ") , (57178, 0, "s") , (57179, 0, "e") , (57180, 0, "l") , (57181, 0, "f") , (57182, 0, ".") , (57183, 0, "n") , (57184, 0, "o") , (57185, 0, "d") , (57186, 0, "e") , (57187, 0, " ") , (57188, 0, "=") , (57189, 0, " ") , (57190, 0, "s") , (57191, 0, "e") , (57192, 0, "l") , (57193, 0, "f") , (57194, 0, ".") , (57195, 0, "n") , (57196, 0, "o") , (57197, 0, "d") , (57198, 0, "e") , (57199, 0, ".") , (57200, 0, "n") , (57200, 1, "") , (57199, 1, "") , (57199, 0, ".") , (57200, 0, "n") , (57201, 0, "e") , (57202, 0, "x") , (57203, 0, "t") , (57204, 0, "_") , (57205, 0, "n") , (57206, 0, "o") , (57207, 0, "d") , (57208, 0, "e") , (57209, 0, "(") , (57210, 0, ")") , (57211, 0, ";") , (57190, 0, "unsafe { n.first_skip_entry().node.as_ref() }") , (57235, 22, "") , (57235, 0, ";") , (57200, 0, "o") , (57201, 0, "d") , (57202, 0, "e") , (57127, 0, " ") , (57128, 0, "a") , (57129, 0, "s") , (57130, 0, " ") , (57131, 0, "u") , (57132, 0, "s") , (57133, 0, "i") , (57134, 0, "z") , (57135, 0, "e") , (11448, 0, "\n ") , (11453, 0, "\n ") , (11449, 4, "") , (11454, 0, "self.node.next_node();") , (11454, 22, "") , (11449, 5, "") , (11449, 0, " ") , (11448, 5, "") , (57213, 23, "") , (57213, 0, "g") , (57214, 0, "e") , (57215, 0, "t") , (57216, 0, "_") , (57217, 0, "n") , (57213, 5, "get_next_ptr()") , (12071, 23, "") , (12071, 0, "g") , (12072, 0, "e") , (12073, 0, "t") , (12074, 0, "n") , (12071, 4, "get_next_ptr()") , (57318, 176, "") , (57575, 3, "") , (57566, 3, "") , (57526, 3, "") , (57465, 3, "") , (57413, 3, "") , (57459, 0, " ") , (57460, 0, "w") , (57461, 0, "h") , (57462, 0, "e") , (57463, 0, "r") , (57464, 0, "e") , (57465, 0, " ") , (57466, 0, "C") , (57467, 0, ":") , (57468, 0, ":") , (57469, 0, "I") , (57470, 0, "t") , (57471, 0, "e") , (57472, 0, "m") , (57473, 0, ":") , (57474, 0, " ") , (57475, 0, "f") , (57476, 0, "m") , (57477, 0, "t") , (57478, 0, ":") , (57479, 0, " ") , (57479, 1, "") , (57479, 0, ":") , (57480, 0, " ") , (57480, 1, "") , (57480, 0, "D") , (57481, 0, "e") , (57482, 0, "b") , (57483, 0, "u") , (57484, 0, "g") , (57537, 0, "f") , (57538, 0, "t") , (57539, 0, ":") , (57540, 0, ":") , (57540, 1, "") , (57539, 1, "") , (57538, 1, "") , (57538, 0, "m") , (57539, 0, "t") , (57540, 0, ":") , (57541, 0, ":") , (57594, 0, "// ") , (57588, 0, "// ") , (57551, 0, "// ") , (57488, 0, "// ") , (57413, 0, "// ") , (55381, 0, "\n ") , (55386, 0, "\n ") , (55382, 4, "") , (55387, 0, "p") , (55388, 0, "u") , (55389, 0, "b") , (55390, 0, " ") , (55391, 0, "f") , (55392, 0, "n") , (55393, 0, " ") , (55394, 0, "i") , (55395, 0, "t") , (55396, 0, "e") , (55397, 0, "m") , (55398, 0, "_") , (55399, 0, "i") , (55400, 0, "t") , (55401, 0, "e") , (55402, 0, "r") , (55403, 0, "(") , (55404, 0, "&") , (55405, 0, "s") , (55406, 0, "e") , (55407, 0, "l") , (55408, 0, "f") , (55409, 0, ")") , (55410, 0, " ") , (55411, 0, "-") , (55412, 0, ">") , (55413, 0, " ") , (55414, 0, "L") , (55415, 0, "i") , (55416, 0, "s") , (55417, 0, "t") , (55418, 0, "I") , (55414, 5, "ListIter") , (55422, 0, "<") , (55423, 0, "C") , (55424, 0, ">") , (55425, 0, " ") , (55426, 0, "{") , (55427, 0, "\n ") , (55436, 0, "\n ") , (55428, 8, "") , (55429, 8, " }") , (55428, 0, " ") , (55436, 0, "L") , (55437, 0, "i") , (55438, 0, "s") , (55439, 0, "t") , (55440, 0, "I") , (55436, 5, "ListIter") , (55444, 0, " ") , (55445, 0, "{") , (55446, 0, "\n ") , (55459, 0, "n") , (55460, 0, "o") , (55461, 0, "d") , (55462, 0, "e") , (55463, 0, ":") , (55464, 0, " ") , (55465, 0, "S") , (55466, 0, "o") , (55467, 0, "m") , (55468, 0, "e") , (55469, 0, "(") , (55470, 0, "s") , (55471, 0, "e") , (55472, 0, "l") , (55473, 0, "f") , (55474, 0, ".") , (55475, 0, "h") , (55476, 0, "e") , (55477, 0, "a") , (55475, 3, "head") , (55479, 0, ")") , (55470, 0, "&") , (55481, 0, ",") , (55482, 0, "\n ") , (55495, 0, "i") , (55496, 0, "n") , (55497, 0, "d") , (55498, 0, "e") , (55499, 0, "x") , (55500, 0, ":") , (55501, 0, " ") , (55502, 0, "0") , (55503, 0, "\n ") , (55504, 12, " }") , (56874, 0, "p") , (56875, 0, "u") , (56876, 0, "b") , (56877, 0, " ") , (55382, 137, "") , (55381, 1, "") , (22276, 0, "\n ") , (22277, 4, "") , (22276, 0, "\n ") , ( 22281 , 0 , "\n pub fn item_iter(&self) -> ListIter {\n ListIter {\n node: Some(&self.head),\n index: 0\n }\n }" ) , (22277, 4, "") , (22276, 1, "") , (55028, 0, "node_") , (23928, 0, "node_") , (22214, 0, "node_") , (22293, 5, "") , (55737, 0, "n") , (55738, 0, "o") , (55739, 0, "d") , (55740, 0, "e") , (55741, 0, "_") , (56786, 0, "n") , (56787, 0, "o") , (56788, 0, "d") , (56789, 0, "e") , (56790, 0, "_") , (57029, 0, "mIte") , (56912, 0, "mIte") , (22337, 0, "mIte") , (22315, 0, "mIte") , (56996, 0, "\n") , (57785, 3, "") , (57776, 3, "") , (57736, 3, "") , (57670, 3, "") , (57592, 3, "") , (57766, 0, "i") , (57767, 0, "t") , (57768, 0, "e") , (57769, 0, "r") , (57770, 0, "(") , (57771, 0, ")") , (57772, 0, ")") , (57773, 0, ".") , (57774, 0, "f") , (57775, 0, "i") , (57776, 0, "n") , (57777, 0, "i") , (57778, 0, "s") , (57779, 0, "h") , (57780, 0, "(") , (57781, 0, ")") , (57505, 86, "") , (57504, 1, "") , (57504, 0, "\n") , (57702, 0, "\n ") , (57707, 0, "\n ") , (57703, 4, "") , (57708, 0, "f") , (57709, 0, "n") , (57710, 0, " ") , (57711, 0, "s") , (57711, 1, "") , (57710, 1, "") , (57709, 1, "") , (57708, 1, "") , (57704, 4, "") , (57703, 1, "") , (57702, 1, "") , (57502, 0, "\n ") , (57507, 0, "\n ") , (57503, 4, "") , (57508, 0, "f") , (57509, 0, "n") , (57510, 0, " ") , (57511, 0, "s") , (57512, 0, "i") , (57513, 0, "z") , (57511, 3, "size_hint()") , (57522, 0, " ") , (57523, 0, "-") , (57524, 0, ">") , (57525, 0, " ") , (57526, 0, "(") , (57527, 0, "u") , (57528, 0, "s") , (57529, 0, "i") , (57530, 0, "z") , (57531, 0, "e") , (57532, 0, ",") , (57533, 0, " ") , (57534, 0, "O") , (57535, 0, "p") , (57536, 0, "t") , (57537, 0, "i") , (57538, 0, "o") , (57539, 0, "n") , (57540, 0, "(") , (57541, 0, "u") , (57542, 0, "s") , (57543, 0, "i") , (57544, 0, "z") , (57545, 0, "e") , (57546, 0, ")") , (57547, 0, " ") , (57547, 1, "") , (57547, 0, ")") , (57548, 0, " ") , (57549, 0, "{") , (57550, 0, "\n ") , (57551, 8, " }") , (57550, 0, "\n ") , (57559, 0, "u") , (57560, 0, "n") , (57561, 0, "i") , (57562, 0, "m") , (57563, 0, "p") , (57564, 0, "l") , (57559, 6, "unimplemented") , (57572, 0, "!") , (57573, 0, "(") , (57574, 0, ")") , (57521, 0, "&") , (57522, 0, "s") , (57523, 0, "e") , (57524, 0, "l") , (57525, 0, "f") , (57545, 1, "") , (57545, 0, "<") , (57551, 1, "") , (57551, 0, ">") , (56994, 0, ",") , (56995, 0, "\n ") , (57000, 0, "r") , (57001, 0, "e") , (57002, 0, "m") , (57003, 0, "a") , (57004, 0, "i") , (57005, 0, "n") , (57006, 0, "i") , (57007, 0, "n") , (57008, 0, "g") , (57009, 0, "_") , (57010, 0, "i") , (57011, 0, "t") , (57012, 0, "e") , (57013, 0, "m") , (57014, 0, "s") , (57015, 0, ":") , (57016, 0, " ") , (57017, 0, "u") , (57018, 0, "s") , (57019, 0, "i") , (57020, 0, "z") , (57021, 0, "e") , (57022, 0, " ") , (57023, 0, "/") , (57024, 0, "/") , (57025, 0, " ") , (57026, 0, "F") , (57027, 0, "o") , (57028, 0, "r") , (57029, 0, "e") , (57030, 0, " ") , (57030, 1, "") , (57029, 1, "") , (57029, 0, " ") , (57030, 0, "s") , (57031, 0, "i") , (57032, 0, "z") , (57033, 0, "e") , (57034, 0, "_") , (57035, 0, "h") , (57036, 0, "i") , (57037, 0, "n") , (57038, 0, "t") , (57039, 0, ".") , (57610, 16, "") , (57610, 0, "(") , (57611, 0, "r") , (57612, 0, "e") , (57613, 0, "m") , (57614, 0, "a") , (57615, 0, "i") , (57616, 0, "n") , (57611, 6, "remain") , (57617, 0, "i") , (57618, 0, "n") , (57619, 0, "g") , (57611, 9, "remaining_items") , (57626, 0, ",") , (57627, 0, " ") , (57628, 0, "S") , (57629, 0, "o") , (57630, 0, "m") , (57631, 0, "z") , (57632, 0, "e") , (57633, 0, "(") , (57633, 1, "") , (57632, 1, "") , (57631, 1, "") , (57631, 0, "m") , (57631, 1, "") , (57631, 0, "e") , (57632, 0, "(") , (57633, 0, "r") , (57634, 0, "e") , (57626, 0, "s") , (57627, 0, "e") , (57628, 0, "l") , (57629, 0, "f") , (57629, 1, "") , (57628, 1, "") , (57627, 1, "") , (57626, 1, "") , (57611, 0, "s") , (57612, 0, "e") , (57613, 0, "l") , (57614, 0, "f") , (57615, 0, ".") , (57638, 0, "s") , (57639, 0, "e") , (57640, 0, "l") , (57641, 0, "f") , (57642, 0, ".") , (57645, 0, "m") , (57646, 0, "a") , (57647, 0, "i") , (57648, 0, "n") , (57649, 0, "i") , (57650, 0, "n") , (57643, 8, "remaining_items") , (57658, 0, ")") , (57659, 0, ")") , (22405, 0, ",") , (22406, 0, "\n ") , (22419, 0, "r") , (22420, 0, "e") , (22421, 0, "m") , (22422, 0, "a") , (22423, 0, "i") , (22424, 0, "n") , (22419, 6, "remaining_items") , (22434, 0, ":") , (22435, 0, " ") , (22436, 0, "s") , (22437, 0, "e") , (22438, 0, "l") , (22439, 0, "f") , (22440, 0, ".") , (22441, 0, "l") , (22442, 0, "e") , (22443, 0, "n") , (22441, 3, "len_items()") , (54748, 3, "") , (54742, 1, "n") , (54740, 1, "l") , (27931, 3, "") , (27925, 1, "n") , (27923, 1, "l") , (26884, 3, "") , (26878, 1, "n") , (26876, 1, "l") , (22151, 3, "") , (22145, 1, "n") , (22143, 1, "l") , (22203, 262, "") , (22202, 1, "") , (22280, 0, "\n ") , ( 22285 , 0 , "\n fn node_iter(&self) -> NodeIter { NodeIter(Some(&self.head)) }\n \n pub fn iter(&self) -> ListItemIter {\n ListItemIter {\n node: Some(&self.head),\n index: 0,\n remaining_items: self.len_items()\n }\n }" ) , (22281, 4, "") , (22544, 0, "\n ") , (22545, 4, "") , (22544, 0, "\n ") , (22549, 0, "f") , (22550, 0, "n") , (22551, 0, " ") , (22552, 0, "h") , (22553, 0, "e") , (22554, 0, "i") , (22555, 0, "g") , (22556, 0, "h") , (22557, 0, "t") , (22558, 0, "(") , (22559, 0, ")") , (22559, 0, "&") , (22560, 0, "s") , (22561, 0, "m") , (22561, 1, "") , (22560, 1, "") , (22560, 0, "m") , (22561, 0, "u") , (22562, 0, "t") , (22563, 0, " ") , (22564, 0, "s") , (22565, 0, "e") , (22566, 0, "l") , (22567, 0, "f") , (22569, 0, " ") , (22570, 0, "-") , (22571, 0, ">") , (22572, 0, " ") , (22573, 0, "u") , (22574, 0, "s") , (22575, 0, "i") , (22576, 0, "z") , (22577, 0, "e") , (22578, 0, " ") , (22579, 0, "{") , (22580, 0, "\n ") , (22589, 0, "\n ") , (22581, 8, "") , (22582, 8, " }") , (22581, 0, " ") , (22589, 0, "s") , (22590, 0, "e") , (22591, 0, "l") , (22592, 0, "f") , (22593, 0, ".") , (22594, 0, "h") , (22595, 0, "e") , (22596, 0, "a") , (22597, 0, "d") , (22598, 0, ".") , (22599, 0, "h") , (22600, 0, "e") , (22601, 0, "i") , (22599, 3, "height") , (22605, 0, " ") , (22606, 0, "a") , (22607, 0, "s") , (22608, 0, " ") , (22609, 0, "u") , (22610, 0, "s") , (22611, 0, "i") , (22612, 0, "z") , (22613, 0, "e") , (22544, 0, "\n ") , (22549, 0, "#") , (22550, 0, "[") , (22551, 0, "i") , (22552, 0, "n") , (22553, 0, "l") , (22554, 0, "i") , (22555, 0, "n") , (22551, 5, "inline") , (22557, 0, "=") , (22558, 0, "a") , (22559, 0, "l") , (22560, 0, "w") , (22561, 0, "a") , (22558, 4, "always") , (22564, 0, "]") , (22557, 1, "") , (22557, 0, "(") , (22564, 0, ")") , (66235, 21, ".") , (62885, 21, ".") , (51797, 21, ".") , (51372, 21, ".") , (49261, 21, ".") , (42201, 21, ".") , (40541, 21, ".") , (40234, 21, ".") , (34225, 21, ".") , (28107, 21, ".") , (26593, 21, ".") , (22615, 21, ".") , (66016, 0, "h") , (62686, 0, "h") , (51618, 0, "h") , (51213, 0, "h") , (49122, 0, "h") , (42082, 0, "h") , (40442, 0, "h") , (40155, 0, "h") , (34166, 0, "h") , (28068, 0, "h") , (26574, 0, "h") , (22616, 0, "h") , (66028, 0, "e") , (62697, 0, "e") , (51628, 0, "e") , (51222, 0, "e") , (49130, 0, "e") , (42089, 0, "e") , (40448, 0, "e") , (40160, 0, "e") , (34170, 0, "e") , (28071, 0, "e") , (26576, 0, "e") , (22617, 0, "e") , (66040, 0, "i") , (62708, 0, "i") , (51638, 0, "i") , (51231, 0, "i") , (49138, 0, "i") , (42096, 0, "i") , (40454, 0, "i") , (40165, 0, "i") , (34174, 0, "i") , (28074, 0, "i") , (26578, 0, "i") , (22618, 0, "i") , (66052, 0, "g") , (62719, 0, "g") , (51648, 0, "g") , (51240, 0, "g") , (49146, 0, "g") , (42103, 0, "g") , (40460, 0, "g") , (40170, 0, "g") , (34178, 0, "g") , (28077, 0, "g") , (26580, 0, "g") , (22619, 0, "g") , (66064, 0, "h") , (62730, 0, "h") , (51658, 0, "h") , (51249, 0, "h") , (49154, 0, "h") , (42110, 0, "h") , (40466, 0, "h") , (40175, 0, "h") , (34182, 0, "h") , (28080, 0, "h") , (26582, 0, "h") , (22620, 0, "h") , (66076, 0, "t") , (62741, 0, "t") , (51668, 0, "t") , (51258, 0, "t") , (49162, 0, "t") , (42117, 0, "t") , (40472, 0, "t") , (40180, 0, "t") , (34186, 0, "t") , (28083, 0, "t") , (26584, 0, "t") , (22621, 0, "t") , (66088, 0, "(") , (62752, 0, "(") , (51678, 0, "(") , (51267, 0, "(") , (49170, 0, "(") , (42124, 0, "(") , (40478, 0, "(") , (40185, 0, "(") , (34190, 0, "(") , (28086, 0, "(") , (26586, 0, "(") , (22622, 0, "(") , (66100, 0, ")") , (62763, 0, ")") , (51688, 0, ")") , (51276, 0, ")") , (49178, 0, ")") , (42131, 0, ")") , (40484, 0, ")") , (40190, 0, ")") , (34194, 0, ")") , (28089, 0, ")") , (26588, 0, ")") , (22623, 0, ")") , (22582, 4, "") , (22612, 8, "") , (22611, 1, "") , (22611, 0, ".") , (22612, 0, "h") , (22613, 0, "e") , (22614, 0, "a") , (22615, 0, "d") , (22616, 0, ".") , (22617, 0, "h") , (22618, 0, "e") , (22619, 0, "i") , (22620, 0, "g") , (22621, 0, "h") , (22622, 0, "t") , (22623, 0, " ") , (22624, 0, "a") , (22625, 0, "s") , (22626, 0, " ") , (22627, 0, "u") , (22628, 0, "s") , (22629, 0, "i") , (22630, 0, "z") , (22631, 0, "e") , (17047, 1, "") , (57686, 0, "// ") , (57627, 0, "// ") , (57575, 0, "// ") , (57692, 3, "") , (57630, 3, "") , (57575, 3, "") , (62314, 0, " ") , (62315, 0, "w") , (62316, 0, "a") , (62317, 0, "n") , (62318, 0, "t") , (62319, 0, "_") , (62315, 5, "m") , (62316, 0, "o") , (62317, 0, "d") , (62318, 0, "i") , (62319, 0, "f") , (62320, 0, "y") , (62321, 0, "_") , (62322, 0, "n") , (62323, 0, "e") , (62324, 0, "x") , (62325, 0, "t") , (62326, 0, ":") , (62327, 0, " ") , (62328, 0, "b") , (62329, 0, "o") , (62330, 0, "o") , (62331, 0, "l") , (62332, 0, ",") , (62454, 0, " ") , (62455, 0, "i") , (62456, 0, "f") , (62457, 0, " ") , (62457, 1, "") , (62456, 1, "") , (62455, 1, "") , (62454, 1, "") , (62276, 0, "\n ") , (62281, 0, "\n ") , (62277, 4, "") , (62282, 0, "f") , (62283, 0, "n") , (62284, 0, " ") , (62285, 0, "i") , (62286, 0, "s") , (62286, 1, "") , (62285, 1, "") , (62285, 0, "a") , (62286, 0, "t") , (62287, 0, "_") , (62288, 0, "e") , (62289, 0, "n") , (62290, 0, "_") , (62291, 0, "o") , (62292, 0, "f") , (62292, 1, "") , (62291, 1, "") , (62290, 1, "") , (62289, 1, "") , (62289, 0, "d") , (62289, 1, "") , (62289, 0, "n") , (62290, 0, "d") , (62291, 0, "_") , (62292, 0, "o") , (62293, 0, "f") , (62294, 0, "_") , (62295, 0, "n") , (62296, 0, "o") , (62297, 0, "d") , (62298, 0, "e") , (62299, 0, "(") , (62300, 0, "&") , (62301, 0, "s") , (62302, 0, "e") , (62303, 0, "l") , (62304, 0, "f") , (62305, 0, ")") , (62306, 0, " ") , (62307, 0, "-") , (62308, 0, ">") , (62309, 0, " ") , (62310, 0, "b") , (62311, 0, "o") , (62312, 0, "o") , (62313, 0, "l") , (62314, 0, " ") , (62315, 0, "{") , (62316, 0, "\n ") , (62325, 0, "\n ") , (62317, 8, "") , (62318, 8, " }") , (62317, 0, " ") , (62325, 0, "s") , (62326, 0, "e") , (62327, 0, "l") , (62328, 0, "f") , (62329, 0, ".") , (62330, 0, "l") , (62331, 0, "o") , (62332, 0, "c") , (62333, 0, "a") , (62334, 0, "l") , (62335, 0, "_") , (62330, 6, "local_index") , (62330, 0, "c") , (62331, 0, "u") , (62332, 0, "r") , (62333, 0, "s") , (62334, 0, "o") , (62335, 0, "r") , (62336, 0, ".") , (62348, 0, " ") , (62349, 0, "=") , (62350, 0, "=") , (62351, 0, " ") , (62352, 0, "s") , (62353, 0, "e") , (62354, 0, "l") , (62355, 0, "f") , (62356, 0, ".") , (62325, 0, "// ") , (62277, 90, "") , (62386, 0, "\n ") , (62395, 0, "i") , (62396, 0, "f") , (62397, 0, " ") , (62398, 0, "m") , (62399, 0, "o") , (62400, 0, "d") , (62401, 0, "i") , (62398, 4, "modify_next") , (62409, 0, " ") , (62410, 0, "&") , (62411, 0, "&") , (62412, 0, " ") , (62413, 0, "s") , (62414, 0, "e") , (62415, 0, "l") , (62416, 0, "f") , (62417, 0, ".") , (62418, 0, "c") , (62419, 0, "u") , (62420, 0, "r") , (62421, 0, "s") , (62422, 0, "o") , (62423, 0, "r") , (62424, 0, ".") , (62425, 0, "i") , (62426, 0, "s") , (62425, 2, "is_at_node_end()") , (62441, 0, " ") , (62442, 0, "{") , (62443, 0, "\n ") , (62444, 12, " }") , (62443, 0, "\n ") , (62444, 12, "") , (62409, 32, "") , (62398, 0, "!") , (62410, 0, " ") , (62411, 0, "&") , (62412, 0, "&") , (62413, 0, " ") , (62413, 1, "") , (62410, 3, "") , (62398, 1, "") , (62412, 0, " ") , (62409, 0, " && self.cursor.is_at_node_end()") , (62387, 79, "") , (62386, 1, "") , (62296, 0, "p") , (62296, 1, "") , (63225, 0, "prev_") , (62296, 0, "prev_") , (53539, 0, "prev_") , (62323, 19, "") , (63135, 0, "\n ") , (63136, 4, "") , (63136, 0, "\n ") , (63137, 4, "") , ( 63137 , 0 , " pub fn modify_prev_item(&mut self, modify_fn: F) where F: FnOnce(&mut C::Item, usize) {\n" ) , (63141, 0, "// ") , (62458, 16, "p") , (62459, 0, "r") , (62460, 0, "e") , (62461, 0, "v") , (62458, 4, "prev_item()") , (62468, 1, "") , (62467, 1, "") , (62467, 0, "_") , (62468, 0, "m") , (62469, 0, "u") , (62470, 0, "t") , ( 16427 , 0 , "\n unsafe fn prev_item(&self) -> &'a C::Item {\n let node = &*self.here_ptr();\n assert!(self.local_index > 0);\n debug_assert!(self.local_index <= node.num_items as usize);\n &*(node.items[self.local_index - 1].as_ptr())\n }\n" ) , (16705, 0, "_") , (16706, 0, "m") , (16707, 0, "u") , (16708, 0, "t") , (16711, 0, "m") , (16712, 0, "u") , (16713, 0, "t") , (16714, 0, " ") , (16728, 0, " ") , (16728, 1, "") , (16728, 0, "m") , (16729, 0, "u") , (16730, 0, "t") , (16731, 0, " ") , (16934, 0, "m") , (16935, 0, "u") , (16936, 0, "t") , (16937, 0, "_") , (16896, 0, "m") , (16897, 0, "u") , (16898, 0, "t") , (16899, 0, " ") , (16762, 0, ",") , (16763, 0, "u") , (16764, 0, "t") , (16764, 1, "") , (16763, 1, "") , (16762, 1, "") , (16762, 0, "m") , (16763, 0, "u") , (16764, 0, "t") , (16765, 0, " ") , (59838, 0, "-") , (59838, 1, "") , (62723, 0, " ") , (62723, 1, "") , (62723, 0, " ") , (62723, 1, "") , (62723, 1, "") , (62723, 0, "\n ") , (62763, 1, "") , (62763, 0, "\n ") , (62723, 0, "\n ") , (62736, 0, "i") , (62737, 0, "f") , (62738, 0, " ") , (62739, 0, "s") , (62740, 0, "e") , (62741, 0, "l") , (62742, 0, "f") , (62743, 0, ".") , (62744, 0, "item_offset") , (62755, 0, " ") , (62756, 0, ">") , (62757, 0, " ") , (62758, 0, "0") , (62759, 0, " ") , (62760, 0, "{") , (62761, 0, " ") , (62762, 0, "s") , (62763, 0, "e") , (62764, 0, "l") , (62765, 0, "f") , (62766, 0, ".") , (62767, 0, "c") , (62768, 0, "u") , (62769, 0, "r") , (62770, 0, "s") , (62771, 0, "o") , (62772, 0, "r") , (62773, 0, ".") , (62774, 0, "n") , (62775, 0, "e") , (62776, 0, "x") , (62776, 1, "") , (62775, 1, "") , (62774, 1, "") , (62773, 1, "") , (62773, 0, ".") , (62774, 0, "c") , (62775, 0, "u") , (62776, 0, "r") , (62777, 0, "r") , (62774, 4, "current_item_mut()") , (62792, 0, " ") , (62793, 0, "}") , (62807, 0, "e") , (62808, 0, "l") , (62809, 0, "s") , (62810, 0, "e") , (62811, 0, " ") , (62812, 0, "{") , (62813, 0, " ") , (62841, 0, " ") , (62842, 0, "}") , (63516, 3, "") , (63606, 0, "\n ") , (63607, 8, " }") , (63530, 1, "") , (63530, 1, "") , (63530, 1, "") , (63530, 1, "") , (63530, 0, "n") , (63531, 0, "e") , (63532, 0, "x") , (63533, 0, "t") , (63606, 0, "\n ") , (63615, 0, "i") , (63616, 0, "f") , (63617, 0, " ") , (63618, 0, "s") , (63619, 0, "e") , (63620, 0, "l") , (63621, 0, "f") , (63622, 0, ".") , (63623, 0, "c") , (63624, 0, "u") , (63625, 0, "r") , (63626, 0, "s") , (63627, 0, "o") , (63628, 0, "r") , (63629, 0, ".") , (63630, 0, "is_at_node_end()") , (63646, 0, " ") , (63647, 0, "{") , (63648, 0, "\n ") , (63661, 0, "s") , (63662, 0, "e") , (63663, 0, "l") , (63664, 0, "f") , (63665, 0, ".") , (63666, 0, "a") , (63667, 0, "d") , (63668, 0, "v") , (63669, 0, "a") , (63666, 4, "advance_item()") , (63680, 0, ";") , (63681, 0, "\n ") , (63682, 12, " }") , (63691, 0, "\n ") , (63700, 0, "m") , (63701, 0, "o") , (63702, 0, "d") , (63703, 0, "i") , (63704, 0, "f") , (63705, 0, "y") , (63706, 0, "_") , (63707, 0, "p") , (63708, 0, "r") , (63709, 0, "e") , (63710, 0, "v") , (63700, 11, "modify_prev_item") , (63700, 0, "s") , (63701, 0, "e") , (63702, 0, "l") , (63703, 0, "f") , (63704, 0, ".") , (63721, 0, "(") , (63722, 0, "s") , (63723, 0, "e") , (63724, 0, "l") , (63725, 0, "f") , (63726, 0, ",") , (63727, 0, " ") , (63728, 0, "m") , (63729, 0, "o") , (63730, 0, "d") , (63731, 0, "i") , (63732, 0, "f") , (63733, 0, "y") , (63734, 0, "_") , (63735, 0, "f") , (63736, 0, "n") , (63737, 0, ")") , (63738, 0, ";") , (63746, 1, "") , (63722, 6, "") , (63630, 14, "") , (63630, 0, "h") , (63631, 0, "e") , (63632, 0, "r") , (63633, 0, "e") , (63634, 0, "_") , (63630, 5, "here_ptr()") , (63639, 1, "") , (63638, 1, "") , (63638, 0, "()") , (63630, 10, "here_") , (63630, 5, "") , (63630, 0, "is_at_node_end") , (63646, 0, " ") , (63647, 0, "|") , (63647, 1, "") , (63646, 1, "") , (63646, 0, "\n ") , (63655, 0, "|") , (63656, 0, "|") , (63657, 0, " ") , (63658, 0, "*") , (63659, 0, "s") , (63660, 0, "e") , (63661, 0, "l") , (63662, 0, "f") , (63663, 0, ".") , (63658, 1, "") , (63658, 0, "*") , (63658, 1, "") , (63658, 0, "(") , (63664, 0, "c") , (63665, 0, "u") , (63666, 0, "r") , (63667, 0, "s") , (63668, 0, "o") , (63669, 0, "r") , (63670, 0, ".") , (63671, 0, "c") , (63672, 0, "u") , (63673, 0, "r") , (63674, 0, "r") , (63675, 0, "e") , (63676, 0, "n") , (63677, 0, "t") , (63671, 7, "current_item") , (63683, 0, "(") , (63684, 0, ")") , (63659, 0, "C") , (63660, 0, ":") , (63661, 0, ":") , (63662, 0, "get_usersize(_item: &Self::Item)") , (63675, 18, "") , (63675, 1, "") , (63701, 0, ")") , (63702, 0, " ") , (63703, 0, "<") , (63704, 0, "=") , (63705, 0, " ") , (63706, 0, "s") , (63707, 0, "e") , (63708, 0, "l") , (63709, 0, "f") , (63710, 0, ".") , (63711, 0, "l") , (63712, 0, "o") , (63713, 0, "c") , (63714, 0, "a") , (63711, 4, "local_index") , (63711, 11, "i") , (63712, 0, "t") , (63713, 0, "e") , (63714, 0, "m") , (63715, 0, "_") , (63716, 0, "o") , (63717, 0, "f") , (63718, 0, "f") , (63719, 0, "s") , (63720, 0, "e") , (63721, 0, "t") , (63722, 0, ")") , (63675, 0, "u") , (63676, 0, "n") , (63677, 0, "s") , (63678, 0, "a") , (63679, 0, "f") , (63680, 0, "e") , (63681, 0, " ") , (63682, 0, "{") , (63683, 0, " ") , (63710, 0, " ") , (63711, 0, "}") , (63511, 0, "\n ") , (63516, 0, "/") , (63517, 0, "/") , (63518, 0, " ") , (63519, 0, "T") , (63520, 0, "O") , (63521, 0, "D") , (63522, 0, "O") , (63523, 0, ":") , (63524, 0, " ") , (63525, 0, "N") , (63526, 0, "o") , (63527, 0, "t") , (63528, 0, " ") , (63529, 0, "s") , (63530, 0, "u") , (63531, 0, "r") , (63532, 0, "e") , (63533, 0, " ") , (63534, 0, "i") , (63535, 0, "f") , (63536, 0, " ") , (63537, 0, "t") , (63538, 0, "h") , (63539, 0, "i") , (63540, 0, "s") , (63541, 0, " ") , (63542, 0, "f") , (63543, 0, "u") , (63544, 0, "n") , (63545, 0, "c") , (63546, 0, "t") , (63547, 0, "i") , (63548, 0, "o") , (63549, 0, "n") , (63550, 0, " ") , (63551, 0, "i") , (63552, 0, "s") , (63553, 0, " ") , (63554, 0, "c") , (63555, 0, "o") , (63556, 0, "r") , (63557, 0, "r") , (63558, 0, "e") , (63559, 0, "c") , (63560, 0, "t") , (63561, 0, ".") , (63562, 0, " ") , (63563, 0, "N") , (63564, 0, "e") , (63565, 0, "e") , (63566, 0, "d") , (63567, 0, "s") , (63568, 0, " ") , (63569, 0, "t") , (63570, 0, "e") , (63571, 0, "s") , (63572, 0, "t") , (63573, 0, "s") , (63574, 0, "!") , (53820, 1, "") , (53819, 1, "") , (53818, 1, "") , (53817, 1, "") , (53817, 0, "n") , (53818, 0, "e") , (53819, 0, "x") , (53820, 0, "t") , (62565, 4, "") , (62579, 1, "") , (62578, 1, "") , (62577, 1, "") , (62576, 1, "") , (62575, 1, "") , (62575, 0, "prev_") , ( 62651 , 0 , "\n fn modify_prev_item(&mut self, modify_fn: F) where F: FnOnce(&mut C::Item, usize) {" ) , (62651, 0, "\n ") , (62660, 0, "\n ") , (62652, 8, "") , (62653, 8, " }") , (62658, 0, "\n ") , (62659, 4, "") , (62565, 0, "u") , (62566, 0, "n") , (62567, 0, "s") , (62568, 0, "a") , (62569, 0, "f") , (62570, 0, "e") , (62571, 0, " ") , (62586, 1, "") , (62585, 1, "") , (62584, 1, "") , (62583, 1, "") , (62582, 1, "") , (62600, 0, " ") , (62601, 0, "*") , (62601, 1, "") , (62601, 0, "e") , (62602, 0, ":") , (62603, 0, " ") , (62604, 0, "*") , (62605, 0, "m") , (62606, 0, "u") , (62607, 0, "t") , (62608, 0, " ") , (62609, 0, "N") , (62610, 0, "o") , (62611, 0, "d") , (62612, 0, "e") , (62613, 0, "<") , (62614, 0, "C") , (62615, 0, ">") , (62616, 0, ",") , (62617, 0, " ") , (62618, 0, "i") , (62619, 0, "t") , (62620, 0, "e") , (62621, 0, "m") , (62622, 0, ":") , (62623, 0, " ") , (62624, 0, "&") , (62625, 0, "m") , (62626, 0, "u") , (62627, 0, "t") , (62628, 0, " ") , (62629, 0, "C") , (62630, 0, ":") , (62631, 0, ":") , (62632, 0, "I") , (62633, 0, "t") , (62634, 0, "e") , (62635, 0, "m") , (62636, 0, ",") , (62989, 650, "") , ( 62691 , 0 , " let old_usersize = C::get_usersize(item);\n modify_fn(item, self.item_offset);\n let new_usersize = C::get_usersize(item);\n\n let usersize_delta = new_usersize as isize - old_usersize as isize;\n\n if usersize_delta != 0 {\n self.cursor.update_offsets(self.list.height(), usersize_delta);\n self.list.num_usercount = self.list.num_usercount.wrapping_add(usersize_delta as usize);\n self.item_offset = usize::max(self.item_offset, new_usersize);\n }\n\n (self.notify)(std::slice::from_ref(item), ItemMarker {\n ptr: e,\n // _phantom: PhantomData,\n });\n" ) , (63341, 1, "") , (62601, 17, "") , (63430, 31, "") , (62673, 0, "\n ") , (62682, 0, "let e = self.cursor.here_ptr();") , (62682, 0, "// ") , (62693, 23, "") , (63291, 1, "") , (63291, 0, "self.cursor.here_ptr();") , (63313, 1, "") , (62674, 19, "") , (62673, 1, "") , (63887, 16, "") , (63886, 1, "") , (63885, 1, "") , (63884, 1, "") , (63883, 1, "") , (63829, 0, "self.item_offset") , (63845, 0, " ") , (63846, 0, ">") , (63847, 0, " ") , (63847, 1, "") , (63847, 0, "=") , (63848, 0, " ") , (63828, 1, "") , (63902, 1, "") , (63956, 0, "// ") , (63992, 0, "\n ") , (64001, 0, "s") , (64002, 0, "e") , (64003, 0, "l") , (64004, 0, "f") , (64005, 0, ".") , (64006, 0, "m") , (64007, 0, "o") , (64008, 0, "d") , (64009, 0, "i") , (64010, 0, "f") , (64006, 5, "modify_item(item: &mut C::Item, modify_fn: F)") , (64018, 18, "s") , (64019, 0, "e") , (64020, 0, "l") , (64021, 0, "f") , (64022, 0, ".") , (64023, 0, "c") , (64024, 0, "u") , (64025, 0, "r") , (64026, 0, "s") , (64027, 0, "o") , (64028, 0, "r") , (64029, 0, ".") , (64030, 0, "c") , (64031, 0, "u") , (64032, 0, "r") , (64033, 0, "r") , (64030, 4, "current_item_mut()") , (64050, 12, "m") , (64051, 0, "o") , (64052, 0, "d") , (64053, 0, "i") , (64054, 0, "f") , (64055, 0, "y") , (64056, 0, "_") , (64057, 0, "f") , (64058, 0, "n") , (64060, 0, ";") , (64001, 0, "u") , (64002, 0, "n") , (64003, 0, "s") , (64004, 0, "a") , (64005, 0, "f") , (64006, 0, "e") , (64007, 0, " ") , (64008, 0, "{") , (64009, 0, " ") , (64070, 0, " ") , (64071, 0, "}") , (63947, 45, "") , (63947, 0, "\n ") , (63948, 8, "") , (62601, 18, "") , (63930, 0, " ") , (62601, 0, "item: &mut C::Item") , (63948, 8, "") , (62601, 18, "") , (62601, 0, "m") , (62602, 0, "o") , (62603, 0, "d") , (62604, 0, "i") , (62605, 0, "f") , (62606, 0, "y") , (62607, 0, "_") , (62608, 0, "c") , (62609, 0, "u") , (62610, 0, "r") , (62611, 0, "r") , (62612, 0, "e") , (62613, 0, "n") , (62613, 1, "") , (62612, 1, "") , (62611, 1, "") , (62610, 1, "") , (62609, 1, "") , (62608, 1, "") , (62608, 0, "p") , (62609, 0, "r") , (62610, 0, "e") , (62611, 0, "v") , (62612, 0, ":") , (62613, 0, " ") , (62614, 0, "b") , (62615, 0, "o") , (62616, 0, "o") , (62617, 0, "l") , (62672, 0, "\n ") , (63460, 158, "") , (62673, 8, "") , ( 62673 , 0 , " let item = unsafe {\n if self.item_offset > 0 { self.cursor.current_item_mut() }\n else { self.cursor.prev_item_mut() }\n };" ) , (62831, 0, "\n ") , (62832, 8, "") , (62716, 16, "m") , (62717, 0, "o") , (62718, 0, "d") , (62719, 0, "i") , (62720, 0, "f") , (62721, 0, "y") , (62716, 6, "modify_prev") , (62734, 30, "") , (62756, 0, "self.cursor.current_item_mut()") , (62786, 27, "") , (62734, 0, "self.cursor.prev_item_mut()") , (62729, 1, "") , (62729, 1, "") , (62729, 1, "") , (62728, 1, "") , (63975, 30, "") , (63975, 0, "f") , (63976, 0, "a") , (63977, 0, "l") , (63978, 0, "s") , (63979, 0, "e") , (63820, 0, "(") , (63821, 0, "s") , (63822, 0, "e") , (63823, 0, "l") , (63824, 0, "f") , (63825, 0, ".") , (63826, 0, "i") , (63827, 0, "t") , (63828, 0, "e") , (63829, 0, "m") , (63830, 0, "_") , (63831, 0, "o") , (63832, 0, "f") , (63833, 0, "f") , (63834, 0, "s") , (63835, 0, "e") , (63836, 0, "t") , (63837, 0, " ") , (63838, 0, ">") , (63839, 0, " ") , (63840, 0, "0") , (63841, 0, " ") , (63842, 0, "&") , (63843, 0, "&") , (63844, 0, " ") , (63919, 0, ")") , (63601, 1, "") , (63597, 4, "") , (63593, 4, "") , (63592, 1, "") , (63592, 0, "\n ") , (63601, 0, "unsafe { self.modify_item(false, modify_fn); }") , (63627, 5, "t") , (63628, 0, "r") , (63629, 0, "u") , (63630, 0, "e") , (62692, 8, "") , ( 62673 , 78 , " let item = if modify_prev { self.cursor.prev_item_mut() }" ) , (62739, 12, " ") , (62787, 10, "") , (62786, 1, "") , (62786, 0, ";") , (63471, 0, "p") , (63472, 0, "u") , (63473, 0, "b") , (63474, 0, " ") , (54288, 0, "_") , (54289, 0, "m") , (54288, 2, "") , (63314, 1, "") , (63325, 1, "") , (63325, 0, ")") , (63314, 0, "(") , (62962, 0, "0") , (62963, 0, ";") , (62964, 0, " ") , (62965, 0, "/") , (62966, 0, "/") , (62964, 3, "") , (62962, 2, "") , (63232, 0, "// ") , (63232, 3, "") , (63456, 0, "// ") , (63418, 0, "// ") , (63377, 0, "// ") , (63314, 0, "// ") , (63465, 3, "") , (63424, 3, "") , (63380, 3, "") , (63314, 3, "") , (67039, 0, " ") , (67030, 1, "") , (64176, 0, "\n") , (57202, 1, "") , (57103, 0, "i") , (57097, 1, "") , (56878, 0, "\n") , (56796, 1, "") , (56795, 0, "{") , (56753, 1, "") , (56736, 0, ">") , (56734, 1, "") , (56728, 0, ">") , (56724, 1, "") , (56707, 0, "i") , (56706, 1, "") , (56054, 0, "i") , (56048, 1, "") , (55841, 0, "\n") , (58313, 0, "// ") , (54544, 13, "") , (54517, 0, "(") , (54517, 1, "") , (54544, 0, "item_offset, ") , (54806, 13, "") , (54544, 13, "") , (54766, 0, "(") , (54517, 0, "(") , (54803, 0, ",") , (54570, 0, ",") , (54805, 0, " ") , (54571, 0, " ") , (54807, 0, "item_offset, ") , (54572, 0, "item_offset, ") , (54832, 1, "") , (54584, 1, "") , (54830, 1, "") , (54583, 1, "") , (54829, 0, ")") , (54583, 0, ")") , (54335, 0, "(") , (54382, 0, ",") , (54383, 0, " ") , (54384, 0, "u") , (54385, 0, "s") , (54386, 0, "i") , (54387, 0, "z") , (54388, 0, "e") , (54389, 0, ")") , (54702, 0, "(") , (54713, 0, ",") , (54714, 0, " ") , (54715, 0, "u") , (54716, 0, "s") , (54717, 0, "i") , (54718, 0, "z") , (54719, 0, "e") , (54720, 0, ")") , (59138, 78, "") , (59138, 1, "") , (60947, 0, "\n ") , (60952, 0, "\n ") , (60948, 4, "") , (60953, 0, "p") , (60954, 0, "u") , (60955, 0, "b") , (60956, 0, " ") , (60957, 0, "f") , (60958, 0, "n") , (60959, 0, " ") , (60960, 0, "i") , (60961, 0, "n") , (60962, 0, "s") , (60963, 0, "e") , (60964, 0, "r") , (60965, 0, "t") , (60966, 0, "_") , (60967, 0, "b") , (60968, 0, "e") , (60969, 0, "t") , (60970, 0, "w") , (60971, 0, "e") , (60972, 0, "e") , (60973, 0, "n") , ( 60974 , 0 , "(&mut self, mut contents: I) where I: ExactSizeIterator {" ) , (60988, 0, " ") , (60989, 0, "o") , (60990, 0, "f") , (60991, 0, "f") , (60992, 0, "s") , (60993, 0, "e") , (60994, 0, "t") , (60995, 0, ":") , (60996, 0, " ") , (60997, 0, "u") , (60998, 0, "s") , (60999, 0, "i") , (61000, 0, "z") , (61001, 0, "e") , (61002, 0, ",") , (61063, 0, "\n ") , (61072, 0, "\n ") , (61064, 8, "") , (61065, 8, " }") , (59610, 124, "") , (59609, 1, "") , (60939, 0, " ") , (60947, 0, "i") , (60948, 0, "f") , (60949, 0, " ") , (60950, 0, "o") , (60951, 0, "f") , (60952, 0, "f") , (60953, 0, "s") , (60954, 0, "e") , (60955, 0, "t") , (60956, 0, " ") , (60957, 0, "=") , (60958, 0, "=") , (60959, 0, " ") , (60960, 0, "0") , (60961, 0, " ") , (60962, 0, "{") , (60963, 0, " ") , (60964, 0, "r") , (60965, 0, "e") , (60966, 0, "t") , (60967, 0, "u") , (60968, 0, "r") , (60969, 0, "n") , (60970, 0, " ") , (60971, 0, "i") , (60972, 0, "n") , (60972, 1, "") , (60971, 1, "") , (60971, 0, "t") , (60972, 0, "h") , (60973, 0, "i") , (60974, 0, "s") , (60975, 0, ".") , (60976, 0, "i") , (60977, 0, "n") , (60978, 0, "s") , (60979, 0, "e") , (60980, 0, "r") , (60981, 0, "t") , (60982, 0, "_") , (60983, 0, "i") , (60976, 8, "insert_iter") , (60987, 0, "(") , (60988, 0, "c") , (60989, 0, "o") , (60990, 0, "n") , (60991, 0, "t") , (60992, 0, "e") , (60993, 0, "n") , (60994, 0, "t") , (60995, 0, "s") , (60996, 0, ")") , (60997, 0, ";") , (60998, 0, " ") , (60999, 0, "}") , (61000, 0, "\n ") , (61001, 8, "") , (60971, 4, "s") , (60972, 0, "e") , (60973, 0, "l") , (60974, 0, "f") , (59660, 56, "") , (59754, 16, " ") , (59660, 16, " ") , (59750, 12, " ") , (59660, 12, " ") , (59746, 8, " ") , (59660, 8, " ") , (59750, 12, " ") , (59660, 12, " ") , (59660, 0, " unsafe {\n if self.item_offset == 0 {\n") , (59677, 39, "") , (59771, 16, " ") , (59677, 16, " ") , (59840, 21, "") , (59840, 884, "") , (59840, 15, "") , (60034, 0, "\n ") , ( 60043 , 0 , " let current_item = self.cursor.current_item();\n let (start, end) = C::split_item(current_item, self.item_offset);\n // Move the cursor back to the start of the item we're\n // splitting.\n self.cursor.move_to_item_start(self.list.head.height, self.item_offset);\n // This feels pretty inefficient; but its probably fine.\n self.list.replace_item(&mut self.cursor, start, &mut self.notify);\n\n // TODO: Consider concatenating end into contents then just call\n // insert_at_iter once.\n self.list.insert_at_iter(&mut self.cursor, &mut contents, &mut self.notify);\n\n self.dbg_check_cursor_at(start_userpos, num_inserted_items);\n\n self.list.insert_at_iter(&mut self.cursor, &mut iter::once(end), &mut self.notify);" ) , (60828, 16, " ") , (60750, 16, " ") , (60656, 16, " ") , (60616, 16, " ") , (60535, 16, " ") , (60451, 16, " ") , (60378, 16, " ") , (60289, 16, " ") , (60259, 16, " ") , (60188, 16, " ") , (60106, 16, " ") , (60035, 24, " ") , (60311, 16, "o") , (60145, 16, "o") , (60297, 0, "f") , (60146, 0, "f") , (60299, 0, "f") , (60147, 0, "f") , (60301, 0, "s") , (60148, 0, "s") , (60303, 0, "e") , (60149, 0, "e") , (60305, 0, "t") , (60150, 0, "t") , (59605, 4, "") , (59601, 4, "") , (59600, 1, "") , (60025, 0, "\n ") , ( 60034 , 0 , " let num_inserted_items = contents.len();\n let start_userpos = self.cursor.userpos;\n" ) , (60026, 16, " ") , (59873, 0, "_") , (59874, 0, "i") , (59875, 0, "t") , (59876, 0, "e") , (59877, 0, "r") , (61002, 0, "\n ") , (61003, 4, "") , (61002, 0, "\n ") , ( 61007 , 0 , " pub fn insert(&mut self, item: C::Item) {\n self.insert_iter(iter::once(item));\n }" ) , (61003, 8, " ") , (61020, 0, "_") , (61021, 0, "b") , (61022, 0, "e") , (61023, 0, "t") , (61024, 0, "w") , (61025, 0, "e") , (61026, 0, "e") , (61027, 0, "n") , (61039, 0, " ") , (61040, 0, "o") , (61041, 0, "f") , (61042, 0, "f") , (61043, 0, "s") , (61044, 0, "e") , (61045, 0, "t") , (61046, 0, ":") , (61047, 0, " ") , (61048, 0, "u") , (61049, 0, "s") , (61050, 0, "i") , (61051, 0, "z") , (61052, 0, "e") , (61053, 0, ",") , (61092, 0, "b") , (61093, 0, "e") , (61094, 0, "t") , (61095, 0, "w") , (61096, 0, "e") , (61097, 0, "e") , (61098, 0, "n") , (61099, 0, "_") , (61105, 0, "o") , (61106, 0, "f") , (61107, 0, "f") , (61108, 0, "s") , (61109, 0, "e") , (61110, 0, "t") , (61111, 0, ",") , (61112, 0, " ") , (61398, 79, "") , (61769, 35, "") , (62231, 12, " ") , (62169, 16, " ") , (62101, 16, " ") , (62080, 12, " ") , (62059, 16, " ") , (61966, 16, " ") , (61895, 16, " ") , (61815, 16, " ") , (61769, 12, " ") , (62209, 103, "") , (62310, 30, "") , (62617, 18, "") , (62418, 7, "") , (62951, 74, "") , (62950, 1, "") , (63427, 7, "") , (63207, 7, "") , (63464, 112, "") , (63463, 1, "") , (63463, 0, " ") , (63335, 0, "\n ") , (63336, 4, "") , (63335, 1, "") , (63271, 0, "\n ") , (63276, 0, "/") , (63277, 0, "/") , (63278, 0, "/") , (63279, 0, " ") , (63280, 0, "T") , (63281, 0, "h") , (63282, 0, "i") , (63283, 0, "s") , (63284, 0, " ") , (63280, 5, "C") , (63281, 0, "a") , (63282, 0, "v") , (63283, 0, "e") , (63284, 0, "a") , (63285, 0, "t") , (63286, 0, ":") , (63287, 0, " ") , (63288, 0, "T") , (63289, 0, "h") , (63290, 0, "i") , (63291, 0, "s") , (63292, 0, " ") , (63293, 0, "m") , (63294, 0, "o") , (63295, 0, "v") , (63296, 0, "e") , (63297, 0, "s") , (63298, 0, " ") , (63299, 0, "t") , (63300, 0, "h") , (63301, 0, "e") , (63302, 0, " ") , (63303, 0, "c") , (63304, 0, "u") , (63305, 0, "r") , (63306, 0, "s") , (63307, 0, "o") , (63308, 0, "r") , (63309, 0, " ") , (63310, 0, "t") , (63311, 0, "o") , (63312, 0, " ") , (63313, 0, "t") , (63314, 0, "h") , (63315, 0, "e") , (63316, 0, " ") , (63317, 0, "n") , (63318, 0, "e") , (63319, 0, "x") , (63320, 0, "t") , (63321, 0, " ") , (63322, 0, "i") , (63323, 0, "t") , (63324, 0, "e") , (63325, 0, "m") , (17326, 16, "") , (17325, 1, "") , (17324, 1, "") , (17323, 1, "") , (17300, 0, ">") , (17301, 0, " ") , (17301, 1, "") , (17300, 1, "") , (17323, 0, " > ") , (17323, 3, "") , (17300, 0, ">") , (17300, 1, "") , (17300, 0, "<") , (17301, 0, " ") , (17300, 0, "self.local_index") , (17316, 0, " ") , (16462, 0, "O") , (16463, 0, "p") , (16464, 0, "t") , (16465, 0, "i") , (16466, 0, "o") , (16467, 0, "n") , (16479, 0, ">") , (16468, 0, "<") , (16521, 0, "\n ") , (16530, 0, "i") , (16531, 0, "f") , (16532, 0, " ") , (16533, 0, "s") , (16534, 0, "e") , (16535, 0, "l") , (16536, 0, "f") , (16537, 0, ".") , (16538, 0, "l") , (16539, 0, "o") , (16540, 0, "c") , (16541, 0, "a") , (16542, 0, "l") , (16538, 5, "local_index") , (16549, 0, " ") , (16550, 0, "=") , (16551, 0, "=") , (16552, 0, " ") , (16553, 0, "0") , (16554, 0, " ") , (16555, 0, "{") , (16556, 0, "\n ") , (16569, 0, "\n ") , (16557, 12, "") , (16558, 12, " }") , (16557, 0, " ") , (16569, 0, "a") , (16570, 0, "s") , (16571, 0, "s") , (16572, 0, "e") , (16573, 0, "r") , (16569, 5, "assert_eq!") , (16579, 0, "(") , (16580, 0, "s") , (16581, 0, "e") , (16582, 0, "l") , (16583, 0, "f") , (16584, 0, ".") , (16584, 1, "") , (16584, 0, ".") , (16585, 0, "u") , (16586, 0, "s") , (16587, 0, "e") , (16588, 0, "r") , (16589, 0, "p") , (16590, 0, "o") , (16591, 0, "s") , (16592, 0, ",") , (16593, 0, " ") , (16594, 0, "0") , (16595, 0, ")") , (16596, 0, ";") , ( 16522 , 75 , " if self.local_index == 0 { assert_eq!(self.userpos, 0);" ) , ( 16522 , 73 , " if self.local_index == 0 { assert_eq!(self.userpos, 0); }" ) , ( 16522 , 65 , " if self.local_index == 0 { assert_eq!(self.userpos, 0);\n }" ) , ( 16522 , 63 , " if self.local_index == 0 {\n assert_eq!(self.userpos, 0);" ) , (16597, 0, "\n ") , (16610, 0, "N") , (16611, 0, "o") , (16612, 0, "n") , (16613, 0, "e") , (16624, 0, " ") , (16625, 0, "e") , (16626, 0, "l") , (16627, 0, "s") , (16628, 0, "e") , (16629, 0, " ") , (16630, 0, "{") , (16739, 8, " ") , (16671, 8, " ") , (16632, 8, " ") , (16632, 42, "") , (16631, 1, "") , (16761, 0, "\n ") , (16762, 12, " }") , (16715, 0, "S") , (16715, 1, "") , (16716, 0, "S") , (16717, 0, "o") , (16718, 0, "m") , (16719, 0, "e") , (16720, 0, "(") , (16766, 0, ")") , (16845, 8, "\n ") , (16846, 8, "\n ") , ( 16845 , 0 , " let node = &*self.here_ptr();\n if self.local_index == 0 {\n assert_eq!(self.userpos, 0);\n None\n } else {\n debug_assert!(self.local_index <= node.num_items as usize);\n Some(&*(node.items[self.local_index - 1].as_ptr()))\n }\n" ) , (17083, 0, "m") , (17084, 0, "u") , (17085, 0, "t") , (17086, 0, " ") , (16865, 0, "m") , (16866, 0, "u") , (16867, 0, "t") , (16868, 0, " ") , (16827, 0, "O") , (16828, 0, "t") , (16828, 1, "") , (16828, 0, "p") , (16829, 0, "t") , (16830, 0, "i") , (16831, 0, "o") , (16832, 0, "n") , (16833, 0, "<") , (16849, 0, ">") , (17314, 0, "// ") , (17246, 0, "// ") , (17207, 0, "// ") , (17165, 0, "// ") , (17137, 0, "m") , (17138, 0, "u") , (17139, 0, "t") , (17140, 0, " ") , (17140, 1, "") , (17140, 0, "_") , (17159, 225, "") , (17055, 0, ".") , (17055, 1, "") , (17424, 0, "O") , (17203, 0, "O") , (17426, 0, "p") , (17204, 0, "p") , (17428, 0, "t") , (17205, 0, "t") , (17430, 0, "i") , (17206, 0, "i") , (17432, 0, "o") , (17207, 0, "o") , (17434, 0, "n") , (17208, 0, "n") , (17436, 0, "<") , (17209, 0, "<") , (17453, 0, ">") , (17221, 0, ">") , (16929, 0, "\n ") , (16930, 12, "") , (16929, 1, "") , (17271, 0, "// ") , (17262, 0, "\n ") , (17271, 0, "i") , (17272, 0, "f") , (17273, 0, " ") , (17274, 0, "self.local_index < node.num_items") , (17307, 0, " ") , (17308, 0, "a") , (17309, 0, "s") , (17310, 0, " ") , (17311, 0, "u") , (17312, 0, "s") , (17313, 0, "i") , (17314, 0, "z") , (17315, 0, "e") , (17316, 0, " ") , (17317, 0, "{") , (17318, 0, "\n ") , (17331, 0, "\n ") , (17319, 12, "") , (17320, 12, " }") , (17319, 0, " ") , (17331, 0, "/") , (17332, 0, "/") , (17333, 0, " ") , (17334, 0, "O") , (17335, 0, "k") , (17336, 0, " ") , (17337, 0, "-") , (17338, 0, " ") , (17339, 0, "w") , (17340, 0, "e") , (17341, 0, "'") , (17342, 0, "r") , (17343, 0, "e") , (17344, 0, " ") , (17339, 6, "j") , (17340, 0, "u") , (17341, 0, "s") , (17342, 0, "t") , (17343, 0, " ") , (17344, 0, "r") , (17345, 0, "e") , (17346, 0, "t") , (17347, 0, "u") , (17348, 0, "r") , (17349, 0, "n") , (17350, 0, " ") , (17351, 0, "t") , (17352, 0, "h") , (17353, 0, "e") , (17354, 0, " ") , (17355, 0, "c") , (17356, 0, "u") , (17357, 0, "r") , (17358, 0, "r") , (17359, 0, "e") , (17360, 0, "n") , (17361, 0, "t") , (17362, 0, " ") , (17363, 0, "i") , (17364, 0, "t") , (17365, 0, "e") , (17366, 0, "m") , (17367, 0, ".") , (17379, 70, "") , (17428, 0, "\n }") , (17379, 8, " ") , (17369, 10, "") , (17381, 0, "S") , (17382, 0, "o") , (17383, 0, "m") , (17384, 0, "e") , (17385, 0, "(") , (17427, 0, ")") , (17438, 0, " ") , (17439, 0, "e") , (17440, 0, "l") , (17441, 0, "s") , (17442, 0, "e") , (17443, 0, " ") , (17444, 0, "{") , (17445, 0, "\n ") , (17458, 0, "\n ") , (17446, 12, "") , (17447, 12, " }") , (17446, 0, " ") , (17458, 0, "/") , (17459, 0, "/") , (17460, 0, " ") , (17461, 0, "R") , (17462, 0, "e") , (17463, 0, "t") , (17464, 0, "u") , (17465, 0, "r") , (17466, 0, "n") , (17467, 0, " ") , (17468, 0, "t") , (17469, 0, "h") , (17470, 0, "e") , (17471, 0, " ") , (17472, 0, "f") , (17473, 0, "i") , (17474, 0, "r") , (17475, 0, "s") , (17476, 0, "t") , (17477, 0, " ") , (17478, 0, "i") , (17479, 0, "t") , (17480, 0, "e") , (17481, 0, "m") , (17482, 0, " ") , (17483, 0, "i") , (17484, 0, "n") , (17485, 0, " ") , (17486, 0, "t") , (17487, 0, "h") , (17488, 0, "e") , (17489, 0, " ") , (17490, 0, "n") , (17491, 0, "e") , (17492, 0, "x") , (17493, 0, "t") , (17494, 0, " ") , (17495, 0, "n") , (17496, 0, "o") , (17497, 0, "d") , (17498, 0, "e") , (17499, 0, ".") , (17461, 10, "P") , (17462, 0, "e") , (17463, 0, "e") , (17464, 0, "l") , (17464, 1, "") , (17464, 0, "k") , (17465, 0, " ") , (17466, 0, "t") , (17467, 0, "h") , (17468, 0, "e") , (17498, 0, "\n ") , (17511, 0, "l") , (17512, 0, "e") , (17513, 0, "t") , (17514, 0, " ") , (17515, 0, "n") , (17516, 0, "e") , (17517, 0, "x") , (17518, 0, "t") , (17519, 0, " ") , (17520, 0, "=") , (17521, 0, " ") , (17522, 0, "s") , (17523, 0, "e") , (17524, 0, "l") , (17525, 0, "f") , (17526, 0, ".") , (17527, 0, "h") , (17528, 0, "e") , (17529, 0, "r") , (17530, 0, "e") , (17527, 4, "here_ptr()") , (17537, 0, ".") , (17538, 0, "n") , (17539, 0, "o") , (17540, 0, "d") , (17541, 0, "e") , (17527, 15, "") , (17527, 0, "e") , (17528, 0, "n") , (17529, 0, "t") , (17530, 0, "r") , (17531, 0, "i") , (17532, 0, "e") , (17533, 0, "s") , (17527, 7, "") , (17527, 0, "here_ptr().node") , (17538, 4, "") , (17538, 0, "g") , (17539, 0, "e") , (17540, 0, "t") , (17541, 0, "_") , (17542, 0, "n") , (17543, 0, "e") , (17544, 0, "x") , (17538, 7, "get_next_ptr") , (17550, 0, "(") , (17551, 0, ")") , (17522, 0, "(") , (17523, 0, "*") , (17539, 0, ")") , (17498, 0, "\n ") , (17511, 0, "u") , (17512, 0, "n") , (17513, 0, "s") , (17514, 0, "a") , (17515, 0, "f") , (17516, 0, "e") , (17517, 0, " ") , (17518, 0, "{") , (17576, 0, "\n ") , (17577, 12, " }") , (17576, 14, "") , (17517, 2, "") , (17498, 19, "") , (17555, 0, ";") , (17556, 0, "\n ") , (17569, 0, "i") , (17570, 0, "f") , (17571, 0, " ") , (17572, 0, "n") , (17573, 0, "e") , (17574, 0, "x") , (17575, 0, "t") , (17576, 0, ".") , (17577, 0, "i") , (17578, 0, "s") , (17579, 0, "_") , (17580, 0, "n") , (17581, 0, "u") , (17577, 5, "is_null") , (17584, 0, "(") , (17585, 0, ")") , (17586, 0, " ") , (17587, 0, "{") , (17588, 0, " ") , (17589, 0, "r") , (17590, 0, "e") , (17591, 0, "t") , (17592, 0, "u") , (17593, 0, "r") , (17594, 0, "n") , (17595, 0, " ") , (17596, 0, "N") , (17597, 0, "o") , (17598, 0, "n") , (17599, 0, "e") , (17600, 0, ";") , (17601, 0, " ") , (17602, 0, "}") , (17603, 0, "\n ") , (17616, 0, "e") , (17617, 0, "l") , (17618, 0, "s") , (17619, 0, "e") , (17620, 0, " ") , (17589, 7, "") , (17593, 1, "") , (17613, 0, "{") , (17614, 0, "\n ") , (17631, 0, "\n ") , (17615, 16, "") , (17616, 16, " }") , (17615, 0, " ") , (17631, 0, "S") , (17632, 0, "o") , (17633, 0, "m") , (17634, 0, "e") , (17635, 0, "(") , (17636, 0, "(") , (17636, 1, "") , (17636, 0, "(") , (17637, 0, "*") , (17638, 0, "n") , (17639, 0, "e") , (17640, 0, "x") , (17641, 0, "t") , (17642, 0, ")") , (17643, 0, ".") , (17644, 0, "c") , (17645, 0, "o") , (17646, 0, "n") , (17647, 0, "t") , (17648, 0, "e") , (17649, 0, "n") , (17650, 0, "t") , (17644, 7, "content") , (17651, 0, "_") , (17652, 0, "s") , (17653, 0, "l") , (17654, 0, "i") , (17655, 0, "c") , (17656, 0, "e") , (17657, 0, "[") , (17658, 0, "0") , (17658, 1, "") , (17658, 0, "]") , (17658, 1, "") , (17658, 0, "0") , (17659, 0, "]") , (17657, 0, "(") , (17658, 0, ")") , (17662, 0, ")") , (17636, 0, "&") , (17192, 0, "<") , (17193, 0, "'") , (17194, 0, "a") , (17195, 0, ">") , (13966, 1, "") , (13965, 1, "") , (13964, 1, "") , (13963, 1, "") , (16808, 0, "<") , (16809, 0, "'") , (16810, 0, "a") , (16811, 0, ".") , (16811, 1, "") , (16811, 0, ">") , (16447, 0, "<'a>") , (17622, 0, "\n ") , (17639, 0, "d") , (17640, 0, "e") , (17641, 0, "b") , (17642, 0, "u") , (17643, 0, "g") , (17639, 5, "debug_assert!") , (17652, 0, "(") , (17653, 0, "*") , (17654, 0, "n") , (17655, 0, "e") , (17656, 0, "x") , (17657, 0, "t") , (17653, 0, "(") , (17659, 0, ")") , (17660, 0, ".") , (17661, 0, "n") , (17662, 0, "u") , (17663, 0, "m") , (17664, 0, "_") , (17665, 0, "i") , (17666, 0, "t") , (17667, 0, "e") , (17668, 0, "m") , (17669, 0, "s") , (17670, 0, " ") , (17671, 0, ">") , (17672, 0, " ") , (17673, 0, "0") , (17674, 0, ")") , (17675, 0, ";") , (17698, 1, "") , (17698, 0, "&") , (17707, 13, "") , (17707, 1, "") , (17707, 1, "") , (17707, 0, "i") , (17708, 0, "t") , (17709, 0, "e") , (17710, 0, "m") , (17711, 0, "s") , (17715, 0, ".") , (17716, 0, "a") , (17717, 0, "s") , (17718, 0, "_") , (17719, 0, "r") , (17720, 0, "e") , (17721, 0, "f") , (17722, 0, "(") , (17723, 0, ")") , (17716, 6, "a") , (17717, 0, "s") , (17718, 0, "_") , (17719, 0, "p") , (17720, 0, "t") , (17721, 0, "r") , (17699, 0, "*") , (17168, 0, "\n ") , (17173, 0, "\n ") , (17169, 4, "") , (17174, 0, "f") , (17175, 0, "n") , (17176, 0, " ") , (17177, 0, "p") , (17178, 0, "e") , (17179, 0, "e") , (17180, 0, "k") , (17181, 0, "_") , (17182, 0, "n") , (17183, 0, "e") , (17184, 0, "x") , (17185, 0, "t") , (17186, 0, "_") , (17187, 0, "i") , (17188, 0, "t") , (17189, 0, "e") , (17190, 0, "m") , (17191, 0, "(") , (17192, 0, "&") , (17193, 0, "s") , (17194, 0, "e") , (17195, 0, "l") , (17196, 0, "f") , (17197, 0, ")") , (17198, 0, " ") , (17199, 0, "-") , (17200, 0, ">") , (17201, 0, " ") , (17202, 0, "O") , (17202, 1, "") , (17202, 0, "O") , (17202, 1, "") , (17202, 0, "*") , (17203, 0, "C") , (17204, 0, ":") , (17205, 0, ":") , (17206, 0, "I") , (17206, 1, "Item") , (17203, 0, "m") , (17204, 0, "u") , (17205, 0, "t") , (17206, 0, " ") , (17214, 0, " ") , (17215, 0, "{") , (17216, 0, "\n ") , (17225, 0, "\n ") , (17217, 8, "") , (17218, 8, " }") , ( 17217 , 0 , " let next = (*self.here_ptr()).get_next_ptr();\n if next.is_null() { None }\n else {\n debug_assert!((*next).num_items > 0);\n Some(&*(*next).items[0].as_ptr())\n }\n" ) , (17437, 12, " ") , (17387, 16, " ") , (17333, 16, " ") , (17314, 12, " ") , (17275, 12, " ") , (17217, 12, " ") , (17426, 1, "") , (17299, 4, "") , (17299, 0, "p") , (17300, 0, "t") , (17301, 0, "r") , (17302, 0, ":") , (17303, 0, ":") , (17304, 0, "n") , (17305, 0, "u") , (17306, 0, "l") , (17304, 3, "null()") , (17422, 1, "") , (17390, 7, "") , (17308, 0, "_") , (17309, 0, "m") , (17310, 0, "u") , (17311, 0, "t") , (17414, 0, "m") , (17415, 0, "u") , (17416, 0, "t") , (17417, 0, "_") , (17174, 0, "u") , (17175, 0, "n") , (17176, 0, "s") , (17177, 0, "a") , (17178, 0, "f") , (17179, 0, "e") , (17180, 0, " ") , (17209, 0, "O") , (17210, 0, "p") , (17211, 0, "t") , (17212, 0, "i") , (17213, 0, "o") , (17214, 0, "n") , (17215, 0, "<") , (17228, 0, ">") , (17314, 15, "N") , (17315, 0, "u") , (17315, 1, "") , (17314, 1, "") , (17314, 0, "N") , (17315, 0, "o") , (17316, 0, "n") , (17317, 0, "e") , (17398, 0, "S") , (17399, 0, "o") , (17400, 0, "m") , (17401, 0, "e") , (17402, 0, "(") , (17432, 0, ")") , (17787, 0, "\n ") , (17800, 0, "s") , (17801, 0, "e") , (17802, 0, "l") , (17803, 0, "f") , (17804, 0, ".") , (17805, 0, ".") , (17806, 0, "p") , (17807, 0, "e") , (17808, 0, "e") , (17809, 0, "k") , (17809, 1, "") , (17808, 1, "") , (17807, 1, "") , (17806, 1, "") , (17805, 1, "") , (17805, 0, "p") , (17806, 0, "e") , (17807, 0, "e") , (17808, 0, "k") , (17805, 4, "peek_next_item()") , (17821, 0, ".") , (17822, 0, "a") , (17823, 0, "n") , (17824, 0, "d") , (17822, 3, "and_then(f: F)") , (17831, 4, "|") , (17832, 0, "p") , (17833, 0, "t") , (17834, 0, "r") , (17835, 0, "|") , (17836, 0, " ") , (17837, 0, "&") , (17838, 0, "*") , (17839, 0, "p") , (17840, 0, "t") , (17841, 0, "r") , (18076, 0, "// ") , (18026, 0, "// ") , (17972, 0, "// ") , (17953, 0, "// ") , (17914, 0, "// ") , (17856, 0, "// ") , (17822, 8, "m") , (17823, 0, "a") , (17824, 0, "p") , (17839, 252, "") , (17927, 8, "\n ") , (17928, 8, "\n ") , ( 17927 , 0 , " let node = &*self.here_ptr();\n if self.local_index < node.num_items as usize {\n // Ok - just return the current item.\n Some(&*(node.items[self.local_index].as_ptr()))\n } else {\n // Peek the first item in the next node.\n self.peek_next_item().map(|ptr| &*ptr)\n }\n" ) , (17947, 0, "m") , (17948, 0, "u") , (17949, 0, "t") , (17950, 0, " ") , (18127, 0, "m") , (18128, 0, "u") , (18129, 0, "t") , (18130, 0, "_") , (18270, 160, "") , (18270, 9, "") , (18270, 0, "t_ptr())\n") , ( 18270 , 0 , "\n\n let node = &mut *self.here_ptr();\n debug_assert!(self.local_index < node.num_items as usize);\n &mut *(node.items[self.local_index].as_mu" ) , (18270, 160, "") , (18270, 9, "") , (18093, 0, "m") , (18094, 0, "u") , (18095, 0, "t") , (18096, 0, " ") , (18258, 0, "m") , (18259, 0, "u") , (18260, 0, "t") , (18261, 0, " ") , (17169, 0, "\n ") , (17174, 0, "/") , (17175, 0, "/") , (17176, 0, " ") , (17177, 0, "C") , (17178, 0, "o") , (17179, 0, "u") , (17180, 0, "l") , (17181, 0, "d") , (17182, 0, " ") , (17183, 0, "b") , (17184, 0, "e") , (17185, 0, " ") , (17186, 0, "O") , (17187, 0, "p") , (17188, 0, "t") , (17189, 0, "i") , (17190, 0, "o") , (17191, 0, "n") , (17192, 0, "<") , (17193, 0, "N") , (17194, 0, "o") , (17195, 0, "n") , (17196, 0, "N") , (17197, 0, "u") , (17198, 0, "l") , (17199, 0, "l") , (17200, 0, "<") , (17201, 0, ">") , (17201, 1, "") , (17201, 0, ".") , (17202, 0, ".") , (17202, 1, "") , (17201, 1, "") , (17201, 0, "_") , (17202, 0, ">") , (17203, 0, ">") , (17204, 0, ".") , (17205, 0, ".") , (17206, 0, ".") , (15888, 0, ".") , (15889, 0, "u") , (15890, 0, "n") , (15891, 0, "w") , (15892, 0, "r") , (15893, 0, "a") , (15894, 0, "p") , (15895, 0, "(") , (15896, 0, ")") , (17933, 0, "<") , (17934, 0, "'") , (17935, 0, "a") , (17936, 0, ">") , (55525, 0, "\n ") , (55530, 0, "\n ") , (55526, 4, "") , (55531, 0, "p") , (55532, 0, "u") , (55533, 0, "b") , (55534, 0, " ") , (55535, 0, "f") , (55536, 0, "n") , (55537, 0, " ") , (55538, 0, "e") , (55539, 0, "d") , (55540, 0, "i") , (55541, 0, "t") , (55542, 0, "_") , (55543, 0, "b") , (55544, 0, "e") , (55545, 0, "t") , (55546, 0, "w") , (55547, 0, "e") , (55548, 0, "e") , (55549, 0, "(") , (55549, 1, "") , (55549, 0, "n") , (55550, 0, "_") , (55550, 1, "") , ( 55550 , 0 , "(&mut self, userpos: usize) -> (Edit)>, usize) {\n // self.edit_notify(userpos, no_notify_x::, f)\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify: Self::no_notify }, item_offset)\n }" ) , (55763, 0, "\n ") , (55772, 0, "a") , (55773, 0, "s") , (55772, 2, "assert_eq!") , (55782, 0, "(") , (55783, 0, "i") , (55784, 0, "t") , (55785, 0, "e") , (55786, 0, "m") , (55787, 0, "_") , (55788, 0, "o") , (55783, 6, "item_offset") , (55794, 0, ",") , (55795, 0, " ") , (55796, 0, "0") , (55797, 0, ",") , (55798, 0, " ") , (55799, 0, "\"") , (55800, 0, "C") , (55801, 0, "a") , (55802, 0, "n") , (55803, 0, "n") , (55804, 0, "o") , (55805, 0, "t") , (55806, 0, " ") , (55800, 7, "e") , (55801, 0, "d") , (55802, 0, "i") , (55803, 0, "t") , (55804, 0, "_") , (55805, 0, "b") , (55806, 0, "e") , (55807, 0, "t") , (55808, 0, "w") , (55809, 0, "e") , (55810, 0, "e") , (55811, 0, "n") , (55812, 0, " ") , (55813, 0, "f") , (55814, 0, "o") , (55815, 0, "u") , (55816, 0, "n") , (55817, 0, "d") , (55818, 0, " ") , (55813, 6, "l") , (55814, 0, "a") , (55815, 0, "n") , (55816, 0, "d") , (55817, 0, "e") , (55818, 0, "d") , (55819, 0, " ") , (55820, 0, "b") , (55820, 1, "") , (55820, 0, "i") , (55821, 0, "n") , (55822, 0, "s") , (55823, 0, "i") , (55824, 0, "d") , (55825, 0, "e") , (55826, 0, " ") , (55827, 0, "a") , (55828, 0, "n") , (55829, 0, " ") , (55830, 0, "i") , (55831, 0, "t") , (55832, 0, "e") , (55833, 0, "m") , (55834, 0, "\"") , (55835, 0, ")") , (55836, 0, ";") , (55846, 1, "") , (55898, 14, "") , (55581, 1, "") , (55627, 8, "") , (55183, 0, "_") , (54899, 0, "_") , (54726, 0, "_") , (54304, 0, "_") , (55187, 0, "b") , (54902, 0, "b") , (54728, 0, "b") , (54305, 0, "b") , (55191, 0, "e") , (54905, 0, "e") , (54730, 0, "e") , (54306, 0, "e") , (55195, 0, "t") , (54908, 0, "t") , (54732, 0, "t") , (54307, 0, "t") , (55199, 0, "w") , (54911, 0, "w") , (54734, 0, "w") , (54308, 0, "w") , (55194, 9, "edit_between(userpos: usize)") , (54905, 9, "edit_between(userpos: usize)") , (54727, 9, "edit_between(userpos: usize)") , (54300, 9, "edit_between(userpos: usize)") , (55264, 14, "") , (54956, 14, "") , (54759, 14, "") , (54313, 14, "") , (55222, 1, "") , (54928, 1, "") , (54745, 1, "") , (54313, 1, "") , (55218, 1, "") , (54925, 1, "") , (54743, 1, "") , (54312, 1, "") , (54706, 7, "") , (54685, 22, "") , (54684, 1, "") , (54683, 1, "") , (54682, 1, "") , (54681, 1, "") , (54680, 1, "") , (54679, 1, "") , (54678, 1, "") , (54677, 1, "") , (54676, 0, ": FnOnce(&mut C::Item)") , (54677, 1, "") , (54676, 1, "") , (54675, 1, "") , (54675, 0, "F: ") , (54676, 22, "") , (54635, 0, ": FnOnce(&mut C::Item)") , (54847, 34, "") , (54794, 0, ": ExactSizeIterator ") , (54827, 1, "") , (54873, 7, "") , (54869, 4, "") , (54868, 1, "") , (54867, 1, "") , (54867, 0, " ") , (54867, 1, "") , (54867, 0, ")") , (54868, 0, " ") , (54250, 34, "") , (54249, 1, "") , (54248, 1, "") , (54247, 1, "") , (54246, 1, "") , (54245, 1, "") , (54244, 1, "") , (54243, 1, "") , (54165, 1, "") , (54165, 0, "I: ExactSizeIterator") , (54863, 0, " self.edit_between(userpos).insert_iter(contents)\n") , (54871, 0, "// ") , (54922, 0, "\n ") , (54931, 0, "l") , (54932, 0, "e") , (54933, 0, "t") , (54934, 0, " ") , (54935, 0, "(") , (54936, 0, "e") , (54937, 0, "d") , (54938, 0, "i") , (54939, 0, "t") , (54940, 0, ",") , (54941, 0, " ") , (54942, 0, "o") , (54943, 0, "f") , (54944, 0, "f") , (54945, 0, "s") , (54946, 0, "e") , (54947, 0, "t") , (54948, 0, ")") , (54949, 0, " ") , (54950, 0, "=") , (54951, 0, " ") , (54952, 0, "s") , (54953, 0, "e") , (54954, 0, "l") , (54955, 0, "f") , (54956, 0, ".") , (54957, 0, "e") , (54958, 0, "d") , (54959, 0, "i") , (54960, 0, "t") , (54961, 0, "(") , (54962, 0, "u") , (54963, 0, "s") , (54964, 0, "e") , (54965, 0, "r") , (54966, 0, "p") , (54967, 0, "o") , (54968, 0, "s") , (54969, 0, ")") , (54970, 0, ";") , (54971, 0, "\n ") , (54980, 0, "e") , (54981, 0, "d") , (54982, 0, "i") , (54983, 0, "t") , (54984, 0, ".") , (54985, 0, "i") , (54986, 0, "n") , (54987, 0, "s") , (54988, 0, "e") , (54989, 0, "r") , (54985, 5, "insert_between_iter(offset: usize, mut contents: I)") , (55005, 13, "o") , (55006, 0, "f") , (55007, 0, "f") , (55008, 0, "s") , (55009, 0, "e") , (55010, 0, "t") , (55013, 15, "c") , (55014, 0, "o") , (55015, 0, "n") , (55016, 0, "t") , (55017, 0, "e") , (55018, 0, "n") , (55019, 0, "t") , (55020, 0, "s") , (55022, 0, ";") , (55024, 57, "") , (54863, 59, "") , (54862, 1, "") , (61575, 0, ".") , (61576, 0, "u") , (61577, 0, "n") , (61578, 0, "w") , (61579, 0, "r") , (61580, 0, "a") , (61581, 0, "p") , (61582, 0, "(") , (61583, 0, ")") , (61576, 6, "e") , (61577, 0, "x") , (61578, 0, "p") , (61579, 0, "e") , (61580, 0, "c") , (61581, 0, "t") , (61583, 0, "\"") , (61583, 1, "") , (61576, 6, "unwrap") , (63103, 8, "") , (63094, 1, "") , (63426, 16, "") , (63460, 1, "") , (63459, 1, "") , (63458, 1, "") , (63458, 0, " ") , (63459, 0, "}") , (63461, 58, "") , (16604, 0, ",") , (16605, 0, " ") , (16606, 0, "\"Invalid state: Cursor at start of node\"") , (63503, 9, "") , (63502, 1, "") , (63148, 307, "") , (63147, 1, "") , (63148, 12, " ") , ( 63097 , 0 , "\n pub fn prev_item(&self) -> Option<&C::Item> {\n unsafe { self.cursor.prev_item() }\n }\n" ) , (63209, 1, "") , (63209, 1, "") , (63209, 1, "") , (63209, 1, "") , (63209, 0, "n") , (63210, 0, "e") , (63211, 0, "x") , (63212, 0, "t") , (63277, 9, "n") , (63278, 0, "e") , (63279, 0, "x") , (63280, 0, "T") , (63281, 0, "_") , (63282, 0, "t") , (63283, 0, "i") , (63283, 1, "") , (63282, 1, "") , (63281, 1, "") , (63280, 1, "") , (63280, 0, "t") , (63281, 0, "_") , (63282, 0, "i") , (63283, 0, "t") , (63284, 0, "e") , (63285, 0, "m") , (63277, 4, "c") , (63278, 0, "u") , (63279, 0, "r") , (63280, 0, "r") , (63281, 0, "e") , (63282, 0, "n") , (63283, 0, "t") , (63449, 4, "n") , (63450, 0, "e") , (63451, 0, "x") , (63452, 0, "t") , (63539, 1, "") , (63538, 1, "") , (63537, 1, "") , (63536, 1, "") , (63536, 0, "n") , (63537, 0, "e") , (63538, 0, "x") , (63539, 0, "t") , (63543, 27, "") , (63561, 0, "self.cursor.prev_item_mut()") , (63588, 30, "") , (63543, 0, "self.cursor.current_item_mut()") , (64330, 4, "f") , (64331, 0, "a") , (64332, 0, "l") , (64333, 0, "s") , (64334, 0, "e") , (64685, 5, "t") , (64686, 0, "r") , (64687, 0, "e") , (64687, 1, "") , (64687, 0, "u") , (64688, 0, "e") , (63442, 19, "") , (63423, 0, "p") , (63424, 0, "r") , (63425, 0, "e") , (63426, 0, "v") , (63427, 0, "_") , (63512, 64, "") , (63511, 1, "") , (63540, 1, "") , (63539, 1, "") , (63539, 0, ".") , (63540, 0, "u") , (63541, 0, "n") , (63540, 2, "unwrap()") , (63540, 6, "e") , (63541, 0, "x") , (63542, 0, "p") , (63543, 0, "e") , (63544, 0, "c") , (63545, 0, "t") , (63547, 0, "\"") , (63548, 0, "C") , (63549, 0, "a") , (63549, 1, "") , (63548, 1, "") , (63548, 0, "C") , (63549, 0, "u") , (63550, 0, "r") , (63551, 0, "s") , (63552, 0, "p") , (63552, 1, "") , (63552, 0, "o") , (63553, 0, "r") , (63548, 6, "c") , (63549, 0, "a") , (63550, 0, "n") , (63551, 0, "n") , (63552, 0, "o") , (63553, 0, "t") , (63554, 0, " ") , (63555, 0, "m") , (63556, 0, "o") , (63548, 9, "C") , (63549, 0, "a") , (63550, 0, "n") , (63551, 0, "n") , (63552, 0, "o") , (63553, 0, "t") , (63554, 0, " ") , (63555, 0, "m") , (63556, 0, "o") , (63557, 0, "d") , (63558, 0, "i") , (63559, 0, "f") , (63560, 0, "y") , (63548, 13, "C") , (63549, 0, "u") , (63550, 0, "r") , (63551, 0, "s") , (63552, 0, "o") , (63553, 0, "r") , (63554, 0, " ") , (63555, 0, "a") , (63556, 0, "t") , (63557, 0, " ") , (63558, 0, "s") , (63559, 0, "t") , (63560, 0, "a") , (63561, 0, "r") , (63562, 0, "t") , (63563, 0, " ") , (63564, 0, "o") , (63565, 0, "f") , (63566, 0, " ") , (63567, 0, "d") , (63568, 0, "o") , (63569, 0, "c") , (63570, 0, "u") , (63571, 0, "m") , (63572, 0, "e") , (63573, 0, "n") , (63574, 0, "t") , (63575, 0, ".") , (63576, 0, " ") , (63577, 0, "C") , (63578, 0, "a") , (63579, 0, "n") , (63580, 0, "n") , (63581, 0, "o") , (63582, 0, "t") , (63583, 0, " ") , (63584, 0, "m") , (63585, 0, "o") , (63586, 0, "d") , (63587, 0, "i") , (63588, 0, "f") , (63589, 0, "y") , (63590, 0, " ") , (63591, 0, "p") , (63592, 0, "r") , (63593, 0, "e") , (63594, 0, "v") , (63595, 0, ".") , (63596, 0, "\"") , (63595, 1, "") , (64183, 150, "") , (63406, 6, "p") , (63407, 0, "u") , (63408, 0, "b") , (64389, 42, "") , (64389, 12, " ") , (64418, 10, "") , (64417, 1, "") , (64426, 9, "") , (64438, 0, "p") , (64439, 0, "r") , (64440, 0, "e") , (64441, 0, "v") , (64442, 0, "_") , (64448, 4, "") , (64448, 1, "") , (64448, 1, "") , (64460, 1, "") , (64459, 1, "") , (64486, 0, "p") , (64487, 0, "r") , (64488, 0, "e") , (64489, 0, "v") , (64490, 0, "_") , (64565, 9, "") , (63508, 0, " ") , (63509, 0, "u") , (63510, 0, "n") , (63511, 0, "s") , (63512, 0, "a") , (63513, 0, "f") , (63514, 0, "e") , (63515, 0, " ") , (63516, 0, "{") , (63545, 0, " ") , (63546, 0, "}") , (61508, 0, "\n ") , (61517, 0, "u") , (61518, 0, "n") , (61519, 0, "s") , (61520, 0, "a") , (61521, 0, "f") , (61522, 0, "e") , (61523, 0, " ") , (61524, 0, "{") , (62212, 8, " ") , (62142, 8, " ") , (62056, 8, " ") , (62024, 8, " ") , (61951, 8, " ") , (61875, 8, " ") , (61810, 8, " ") , (61739, 8, " ") , (61717, 8, " ") , (61654, 8, " ") , (61581, 8, " ") , (61526, 8, " ") , (62351, 0, "\n ") , (62352, 12, " }") , (54918, 0, "m") , (54919, 0, "u") , (54920, 0, "t") , (54921, 0, " ") , (54666, 1, "") , (54665, 1, "") , (54665, 0, "a") , (54666, 0, "f") , (54667, 0, "t") , (54668, 0, "e") , (54669, 0, "r") , (54669, 1, "") , (54668, 1, "") , (54667, 1, "") , (54666, 1, "") , (54665, 1, "") , (54665, 0, "a") , (54666, 0, "t") , (54690, 0, ",") , (54691, 0, " ") , (54692, 0, "u") , (54693, 0, "s") , (54694, 0, "i") , (54695, 0, "z") , (54696, 0, "e") , (54743, 0, " let (mut edit, offset) = self.edit(userpos);\n") , (54665, 2, "a") , (54666, 0, "f") , (54667, 0, "t") , (54668, 0, "e") , (54669, 0, "r") , (54798, 0, "\n ") , (54807, 0, "i") , (54808, 0, "f") , (54809, 0, " ") , (54810, 0, "o") , (54811, 0, "f") , (54812, 0, "f") , (54813, 0, "s") , (54814, 0, "e") , (54815, 0, "t") , (54816, 0, " ") , (54817, 0, "=") , (54818, 0, "=") , (54819, 0, " ") , (54820, 0, "0") , (54821, 0, " ") , (54822, 0, "{") , (54823, 0, " ") , (54833, 0, "// ") , (54824, 0, "e") , (54825, 0, "d") , (54826, 0, "i") , (54827, 0, "t") , (54828, 0, ".") , (54829, 0, "m") , (54830, 0, "o") , (54831, 0, "d") , (54832, 0, "i") , (54829, 4, "modify_next_item") , (54845, 0, "(") , (54846, 0, "|") , (54847, 0, "i") , (54848, 0, "t") , (54849, 0, "e") , (54850, 0, "m") , (54851, 0, "|") , (54852, 0, " ") , (54853, 0, "m") , (54854, 0, "o") , (54855, 0, "d") , (54856, 0, "i") , (54853, 4, "modify_fn") , (54862, 0, "(") , (54863, 0, "i") , (54864, 0, "t") , (54865, 0, "e") , (54866, 0, "m") , (54867, 0, ",") , (54868, 0, " ") , (54869, 0, "o") , (54870, 0, "f") , (54871, 0, "f") , (54872, 0, "s") , (54873, 0, "e") , (54874, 0, "t") , (54875, 0, ")") , (54876, 0, ")") , (54877, 0, " ") , (54878, 0, "}") , (54879, 0, "\n ") , (54888, 0, "e") , (54889, 0, "l") , (54890, 0, "s") , (54891, 0, "e") , (54892, 0, " ") , (54893, 0, "{") , (54894, 0, "\n ") , (54907, 0, "\n ") , (54895, 12, "") , (54896, 12, " }") , (54895, 0, " ") , (64594, 1, "") , (54895, 12, "") , (64582, 1, "") , (64582, 1, "") , (64582, 1, "") , (64582, 0, "c") , (64583, 0, "u") , (64584, 0, "r") , (64585, 0, "r") , (64586, 0, "e") , (64587, 0, "n") , (64588, 0, "t") , (64582, 7, "") , (64582, 0, "next") , (54895, 0, " ") , (64594, 4, "") , (54895, 12, "") , (64582, 0, "current") , (54836, 4, "c") , (54837, 0, "u") , (54838, 0, "r") , (54839, 0, "r") , (54840, 0, "e") , (54841, 0, "n") , (54842, 0, "t") , (54883, 25, "") , (54882, 1, "") , (54881, 1, "") , (54880, 1, "") , (54807, 17, "") , (54864, 66, "") , (63253, 4, "c") , (63254, 0, "u") , (63255, 0, "r") , (63256, 0, "r") , (63257, 0, "e") , (63258, 0, "n") , (63259, 0, "t") , (63324, 1, "") , (63324, 1, "") , (63324, 1, "") , (63324, 1, "") , (63324, 0, "c") , (63325, 0, "u") , (63326, 0, "r") , (63327, 0, "r") , (63328, 0, "e") , (63329, 0, "n") , (63330, 0, "t") , (63324, 7, "") , (63324, 0, "prev") , (63253, 7, "prev") , ( 54864 , 0 , " // self.edit_between(userpos).modify_next_item(modify_fn)\n" ) , (54864, 66, "") , (63253, 4, "current") , (63253, 7, "prev") , (63353, 4, "c") , (63354, 0, "u") , (63355, 0, "r") , (63356, 0, "r") , (63357, 0, "e") , (63358, 0, "n") , (63359, 0, "t") , (2236, 0, "\n") , (2237, 0, "\n") , (2237, 1, "") , (2236, 1, "") , (3161, 0, "\n") , (3162, 0, "\n") , (3163, 0, "p") , (3164, 0, "u") , (3165, 0, "b") , (3166, 0, " ") , (3167, 0, "t") , (3168, 0, "r") , (3169, 0, "a") , (3170, 0, "i") , (3171, 0, "t") , (3172, 0, " ") , (3173, 0, "N") , (3174, 0, "o") , (3175, 0, "t") , (3176, 0, "i") , (3177, 0, "f") , (3178, 0, "y") , (3178, 1, "") , (3178, 0, "i") , (3179, 0, "e") , (3180, 0, "d") , (3180, 1, "") , (3179, 1, "") , (3178, 1, "") , (3178, 0, "y") , (3179, 0, " ") , (3180, 0, "{") , (3181, 0, "\n ") , (3182, 4, "}") , (3181, 0, "\n ") , (3186, 0, "f") , (3187, 0, "n") , (3188, 0, " ") , (3189, 0, "u") , (3190, 0, "s") , (3191, 0, "e") , (3192, 0, "d") , (3189, 0, "i") , (3190, 0, "s") , (3191, 0, "_") , (3189, 0, "n") , (3190, 0, "o") , (3191, 0, "f") , (3192, 0, "i") , (3192, 1, "") , (3191, 1, "") , (3191, 0, "t") , (3192, 0, "i") , (3193, 0, "f") , (3194, 0, "i") , (3195, 0, "c") , (3196, 0, "a") , (3197, 0, "t") , (3198, 0, "i") , (3199, 0, "o") , (3200, 0, "n") , (3201, 0, "_") , (3178, 1, "") , (3177, 1, "") , (3177, 0, "f") , (3178, 0, "i") , (3179, 0, "c") , (3180, 0, "a") , (3181, 0, "t") , (3182, 0, "i") , (3183, 0, "o") , (3184, 0, "n") , (3185, 0, "T") , (3186, 0, "a") , (3187, 0, "r") , (3188, 0, "g") , (3189, 0, "e") , (3190, 0, "t") , (3213, 0, "s") , (3214, 1, "") , (3214, 1, "") , (3214, 1, "") , (3219, 0, " ") , (3220, 0, "-") , (3220, 1, "") , (3219, 1, "") , (3219, 0, "(") , (3220, 0, ")") , (3221, 0, " ") , (3222, 0, "-") , (3223, 0, ">") , (3224, 0, " ") , (3225, 0, "b") , (3226, 0, "o") , (3227, 0, "o") , (3228, 0, "l") , (3229, 0, " ") , (3230, 0, "{") , (3231, 0, " ") , (3232, 0, "t") , (3233, 0, "r") , (3234, 0, "u") , (3235, 0, "e") , (3236, 0, " ") , (3237, 0, "}") , (3238, 0, "\n ") , (3243, 0, "\n ") , (3239, 4, "") , (3240, 4, "") , (3193, 0, "\n ") , (3198, 0, "/") , (3199, 0, "/") , (3200, 0, " ") , (3201, 0, "F") , (3202, 0, "o") , (3203, 0, "r") , (3204, 0, " ") , (3201, 4, "T") , (3202, 0, "u") , (3203, 0, " ") , (3203, 1, "") , (3202, 1, "") , (3202, 0, "o") , (3203, 0, " ") , (3204, 0, "t") , (3205, 0, "u") , (3206, 0, "r") , (3207, 0, "n") , (3208, 0, " ") , (3209, 0, "o") , (3210, 0, "f") , (3211, 0, "f") , (3212, 0, " ") , (3213, 0, "s") , (3214, 0, "o") , (3215, 0, "m") , (3216, 0, "e") , (3217, 0, " ") , (3218, 0, "c") , (3219, 0, "o") , (3220, 0, "m") , (3221, 0, "p") , (3222, 0, "l") , (3223, 0, "i") , (3224, 0, "e") , (3225, 0, "r") , (3226, 0, " ") , (3227, 0, "i") , (3228, 0, "n") , (3218, 11, "i") , (3219, 0, "n") , (3220, 0, "f") , (3221, 0, "r") , (3222, 0, "a") , (3223, 0, "s") , (3218, 6, "b") , (3219, 0, "o") , (3220, 0, "o") , (3221, 0, "k") , (3222, 0, "k") , (3223, 0, "e") , (3224, 0, "e") , (3225, 0, "p") , (3226, 0, "i") , (3227, 0, "n") , (3228, 0, "g") , (3229, 0, ".") , (3230, 0, " ") , (3231, 0, "T") , (3232, 0, "h") , (3233, 0, "e") , (3234, 0, " ") , (3235, 0, "o") , (3236, 0, "p") , (3237, 0, "t") , (3238, 0, "i") , (3239, 0, "m") , (3240, 0, "i") , (3241, 0, "e") , (3242, 0, "r") , (3242, 1, "") , (3241, 1, "") , (3241, 0, "z") , (3242, 0, "e") , (3243, 0, "r") , (3244, 0, " ") , (3245, 0, "w") , (3246, 0, "i") , (3247, 0, "l") , (3248, 0, "l") , (3249, 0, " ") , (3250, 0, "i") , (3251, 0, "n") , (3252, 0, "l") , (3253, 0, "i") , (3254, 0, "n") , (3255, 0, "e") , (3256, 0, " ") , (3257, 0, "t") , (3258, 0, "h") , (3259, 0, "i") , (3260, 0, "s") , (3212, 5, " ") , (3212, 1, "") , (3224, 0, " ") , (3225, 0, "r") , (3226, 0, "e") , (3227, 0, "l") , (3228, 0, "a") , (3229, 0, "t") , (3230, 0, "e") , (3231, 0, "d") , (3232, 0, " ") , (3233, 0, "t") , (3234, 0, "o") , (3235, 0, " ") , (3236, 0, "l") , (3236, 1, "") , (3236, 0, "q") , (3237, 0, "u") , (3238, 0, "e") , (3239, 0, "r") , (3240, 0, "y") , (3241, 0, " ") , (3242, 0, "l") , (3243, 0, "o") , (3244, 0, "o") , (3245, 0, "k") , (3246, 0, "u") , (3247, 0, "p") , (3248, 0, "s") , (3198, 0, "/") , (3236, 0, " ") , (3237, 0, "I") , (3238, 0, "t") , (3239, 0, "e") , (3240, 0, "m") , (3241, 0, "M") , (3242, 0, "a") , (3243, 0, "r") , (3244, 0, "k") , (3245, 0, "e") , (3246, 0, "r") , ( 3194 , 99 , " /// To turn off bookkeeping related to ItemMarker query lookups. The\n /// optimizer will inline this" ) , (3306, 0, "c") , (3307, 0, "o") , (3308, 0, "n") , (3309, 0, "s") , (3310, 0, "t") , (3311, 0, " ") , (3311, 1, "") , (3311, 0, " ") , (3306, 6, "") , (3348, 0, " ") , (3348, 4, "") , (3045, 110, "") , ( 3238 , 0 , " // fn notify(&mut self, _items: &[Self::Item], _at_marker: ItemMarker) where Self: Sized {\n // }\n" ) , (3347, 1, "") , (3343, 3, "") , (3242, 3, "") , (3263, 1, "") , (3081, 0, "<") , (3082, 0, "I") , (3083, 0, "t") , (3084, 0, "e") , (3085, 0, "m") , (3086, 0, ">") , (3278, 6, "") , (3082, 4, "C") , (3083, 0, ":") , (3084, 0, " ") , (3085, 0, "L") , (3086, 0, "i") , (3087, 0, "s") , (3088, 0, "t") , (3089, 0, "o") , (3085, 5, "ListConfig") , (3287, 0, "C") , (3288, 0, ":") , (3289, 0, ":") , (3297, 1, "") , (3319, 4, "C") , (3323, 25, "") , (3323, 0, ";") , (3323, 1, "") , (3322, 1, "") , (3322, 0, ";") , (22222, 0, "N") , (22223, 0, "o") , (22224, 0, "f") , (22225, 0, "i") , (22225, 1, "") , (22224, 1, "") , (22224, 0, "t") , (22225, 0, "i") , (22226, 0, "f") , (22227, 0, "y") , (22230, 0, ",") , (22231, 0, " ") , (22232, 0, "N") , (22233, 0, ":") , (22234, 0, " ") , (22235, 0, "N") , (22236, 0, "o") , (22237, 0, "t") , (22238, 0, "i") , (22235, 4, "NotificationTarget") , (22233, 20, "") , (22212, 0, ",") , (22213, 0, " ") , (22214, 0, ": NotificationTarget") , (22214, 0, "N") , (22235, 0, "<") , (22236, 0, "C") , (22237, 0, ">") , (22248, 6, "") , (7554, 0, ",") , (7555, 0, " ") , (7556, 0, "N") , (7557, 0, ":") , (7558, 0, " ") , (7559, 0, "N") , (7560, 0, "o") , (7561, 0, "t") , (7562, 0, "i") , (7559, 4, "NotificationTarget") , (7540, 0, "N") , (7541, 0, "o") , (7542, 0, "f") , (7543, 0, "i") , (7544, 0, "y") , (7544, 1, "") , (7543, 1, "") , (7542, 1, "") , (7542, 0, "t") , (7543, 0, "i") , (7544, 0, "f") , (7545, 0, "y") , (7583, 0, "<") , (7584, 0, "C") , (7585, 0, ">") , (7560, 26, "") , (7545, 1, "") , (7544, 1, "") , (7543, 1, "") , (7542, 1, "") , (7541, 1, "") , (7540, 1, "") , (22252, 1, "") , (22251, 1, "") , (22250, 1, "") , (22250, 0, ", N") , (7540, 0, "Notify") , (7560, 0, ", N: NotificationTarget") , (9373, 0, "\n ") , (9378, 0, "\n ") , (9374, 4, "") , (9379, 0, "_") , (9380, 0, "p") , (9381, 0, "h") , (9382, 0, "a") , (9383, 0, "n") , (9384, 0, "t") , (9385, 0, "o") , (9386, 0, "m") , (9387, 0, ":") , (9388, 0, " ") , (9389, 0, "P") , (9390, 0, "h") , (9391, 0, "a") , (9392, 0, "n") , (9389, 4, "PhantomData") , (9400, 0, "<") , (9401, 0, "N") , (9402, 0, ">") , (22302, 8, "SkipListNotify") , (22368, 0, "N") , (22369, 0, "o") , (22370, 0, "f") , (22371, 0, "i") , (22372, 0, "y") , (22372, 1, "") , (22371, 1, "") , (22370, 1, "") , (22370, 0, "t") , (22371, 0, "i") , (22372, 0, "f") , (22373, 0, "y") , (22378, 0, ",") , (22379, 0, " ") , (22380, 0, "N") , (22773, 0, "\n ") , (22786, 0, "_") , (22787, 0, "m") , (22788, 0, "a") , (22789, 0, "r") , (22790, 0, "k") , (22791, 0, "e") , (22792, 0, "r") , (22793, 0, ":") , (22794, 0, " ") , (22795, 0, "P") , (22796, 0, "h") , (22797, 0, "a") , (22798, 0, "n") , (22795, 4, "PhantomData") , (22787, 6, "p") , (22788, 0, "h") , (22789, 0, "a") , (22790, 0, "n") , (22791, 0, "t") , (22792, 0, "o") , (22793, 0, "m") , (56606, 0, "// ") , (56547, 0, "// ") , (56480, 0, "// ") , (56357, 0, "// ") , (56017, 0, " ") , (56018, 0, "n") , (56019, 0, "o") , (56020, 0, "t") , (56021, 0, "i") , (56022, 0, "f") , (56023, 0, "y") , (56024, 0, "_") , (56025, 0, "t") , (56026, 0, "a") , (56027, 0, "r") , (56028, 0, "g") , (56029, 0, "e") , (56030, 0, "t") , (56017, 14, "") , (55981, 0, "\n ") , (55986, 0, "\n ") , (55982, 4, "") , (55987, 0, "p") , (55988, 0, "u") , (55989, 0, " ") , (55990, 0, "b") , (55990, 1, "") , (55989, 1, "") , (55989, 0, "b") , (55990, 0, " ") , (55991, 0, "f") , (55992, 0, "n") , (55993, 0, " ") , (55983, 11, "") , (55982, 1, "") , (55981, 1, "") , (56352, 0, "\n ") , (56357, 0, "p") , (56358, 0, "u") , (56359, 0, "b") , (56360, 0, " ") , (56361, 0, "f") , (56362, 0, "n") , (56363, 0, " ") , (56364, 0, "e") , (56365, 0, "d") , (56366, 0, "i") , (56367, 0, "t") , (56368, 0, "_") , (56369, 0, "n") , (56370, 0, "o") , (56371, 0, "t") , (56372, 0, "i") , (56373, 0, "f") , (56374, 0, "y") , (56375, 0, "(") , (56375, 1, "") , (56375, 0, "<") , (56375, 1, "") , (56375, 0, "(") , (56376, 0, "&") , (56377, 0, "m") , (56378, 0, "u") , (56379, 0, "t") , (56380, 0, " ") , (56381, 0, "s") , (56382, 0, "e") , (56383, 0, "l") , (56384, 0, "f") , (56385, 0, ",") , (56386, 0, " ") , (56387, 0, "u") , (56388, 0, "s") , (56389, 0, "e") , (56390, 0, "r") , (56391, 0, "p") , (56392, 0, "o") , (56393, 0, "s") , (56394, 0, ":") , (56395, 0, " ") , (56396, 0, "u") , (56397, 0, "s") , (56398, 0, "i") , (56399, 0, "z") , (56400, 0, "e") , (56401, 0, ",") , (56402, 0, " ") , (56402, 1, "") , (56401, 1, "") , (56401, 0, ")") , (56402, 0, " ") , (56403, 0, "{") , (56404, 0, "\n ") , (56413, 0, "\n ") , (56405, 8, "") , (56406, 8, " }") , (56405, 0, " ") , (56405, 8, "") , (56401, 0, ",") , (56402, 0, " ") , (56403, 0, "n") , (56404, 0, "o") , (56405, 0, "t") , (56406, 0, "i") , (56407, 0, "f") , (56408, 0, "y") , (56409, 0, "_") , (56410, 0, "t") , (56411, 0, "a") , (56412, 0, "r") , (56413, 0, "g") , (56414, 0, "e") , (56415, 0, "t") , (56416, 0, ":") , (56417, 0, " ") , (56418, 0, "N") , (56419, 0, ":") , (56420, 0, ":") , (56420, 1, "") , (56419, 1, "") , (56418, 0, "&") , (56419, 0, "m") , (56420, 0, "u") , (56421, 0, "t") , (56422, 0, " ") , (56428, 0, " ") , (56436, 0, "a") , (56437, 0, "s") , (56438, 0, "s") , (56439, 0, "e") , (56440, 0, "r") , (56441, 0, "t") , (56442, 0, "!") , (56443, 0, "(") , (56444, 0, "N") , (56445, 0, ":") , (56446, 0, ":") , (56447, 0, "notifications_used()") , (56467, 0, ")") , (56468, 0, ";") , (55899, 0, "\n ") , (55908, 0, "assert!(N::notifications_used());") , (55916, 0, "!") , (56513, 4, "\n ") , ( 56513 , 0 , " // let (cursor, item_offset) = self.iter_at_userpos(userpos);\n // (Edit { list: self, cursor, notify }, item_offset)\n" ) , (56644, 1, "") , (56587, 3, "") , (56517, 3, "") , (56622, 0, "_") , (56623, 0, "t") , (56624, 0, "a") , (56625, 0, "r") , (56626, 0, "g") , (56627, 0, "e") , (56628, 0, "t") , (60297, 5, "") , (60299, 32, "") , (60299, 0, "N") , (60300, 0, "o") , (60301, 0, "t") , (60302, 0, "i") , (60299, 4, "NotificationTarget") , (60317, 0, "<") , (60318, 0, "C") , (60319, 0, ">") , (60352, 0, ",") , (60353, 0, " ") , (60354, 0, "N") , (60342, 8, "SkipListNotify") , (60459, 6, "&") , (60460, 0, "m") , (60461, 0, "u") , (60462, 0, "t") , (60463, 0, " ") , (60464, 0, "N") , (60280, 0, " ") , (60281, 0, "'") , (60282, 0, "b") , (60283, 0, ":") , (60284, 0, " ") , (60285, 0, "'") , (60286, 0, "a") , (60467, 0, "'") , (60468, 0, "b") , (60469, 0, " ") , (60287, 0, ",") , (60286, 1, "") , (60285, 1, "") , (60284, 1, "") , (60283, 1, "") , (60283, 0, ": 'a") , (60344, 1, "") , (60344, 0, "b") , (60469, 1, "") , (60469, 0, "a") , (60286, 1, "") , (60285, 1, "") , (60284, 1, "") , (60283, 1, "") , (60282, 1, "") , (60281, 1, "") , (60280, 1, "") , (60279, 1, "") , (60336, 1, "") , (60336, 0, "a") , (60468, 0, ",") , (60778, 56, "<'a, C: ListConfig, N: NotificationTarget>") , (64788, 1, "") , (64799, 1, "") , (64799, 0, ".") , (64800, 0, "n") , (64801, 0, "o") , (64802, 0, "t") , (64803, 0, "i") , (64800, 4, "notify(items: &[C::Item], at_marker: ItemMarker)") , (64807, 44, "") , (64806, 1, "") , (38784, 6, "N") , (42261, 0, ".") , (42262, 0, "n") , (42263, 0, "o") , (42264, 0, "t") , (42265, 0, "i") , (42266, 0, "f") , (42267, 0, "y") , (34835, 6, "M") , (34835, 1, "") , (34835, 0, "N") , (38455, 0, ".") , (38456, 0, "n") , (38457, 0, "o") , (38458, 0, "t") , (38459, 0, "i") , (38460, 0, "f") , (38461, 0, "y") , (34856, 42, "") , (38765, 42, "") , (38667, 8, "") , (34721, 8, "") , (51080, 42, "") , (51054, 6, "N") , (53256, 1, ".") , (53256, 1, "") , (53256, 0, "y") , (53257, 0, ".") , (53258, 0, "n") , (53259, 0, "o") , (53260, 0, "t") , (53261, 0, "i") , (53262, 0, "f") , (53263, 0, "y") , (53911, 50, "") , (53910, 1, "") , (53903, 6, "N") , (53828, 6, "") , (53828, 1, "") , (53827, 1, "") , (50943, 8, "") , (56260, 0, " -> (Edit, usize)") , (56431, 0, "n") , (56432, 0, "o") , (56433, 0, "t") , (56434, 0, "i") , (56435, 0, "f") , (56436, 0, "y") , (56437, 0, ":") , (56438, 0, " ") , (56210, 0, "<") , (56211, 0, "'") , (56212, 0, "a") , (56213, 0, ",") , (56214, 0, " ") , (56215, 0, "'") , (56216, 0, "b") , (56217, 0, ":") , (56218, 0, " ") , (56219, 0, "'") , (56220, 0, "a") , (56221, 0, ">") , (56224, 0, "'") , (56225, 0, "b") , (56226, 0, " ") , (56269, 0, "'") , (56270, 0, "a") , (56271, 0, " ") , (56213, 8, "") , (56217, 1, "") , (56217, 0, "a") , (3325, 0, "\n") , (3326, 0, "\n") , (3327, 0, "p") , (3328, 0, "u") , (3329, 0, "b") , (3330, 0, " ") , (3331, 0, "t") , (3332, 0, "r") , (3333, 0, "a") , (3334, 0, "i") , (3335, 0, "t") , (3336, 0, " ") , (3337, 0, "N") , (3338, 0, "o") , (3339, 0, "N") , (3340, 0, "o") , (3327, 4, "") , (3326, 0, "\n") , (3327, 0, "s") , (3328, 0, "t") , (3329, 0, "r") , (3330, 0, "u") , (3331, 0, "c") , (3332, 0, "t") , (3333, 0, " ") , (3334, 0, "N") , (3335, 0, "o") , (3335, 1, "") , (3335, 0, "u") , (3336, 0, "l") , (3337, 0, "l") , (3338, 0, "N") , (3339, 0, "o") , (3340, 0, "t") , (3341, 0, "i") , (3342, 0, "f") , (3343, 0, "i") , (3344, 0, "c") , (3345, 0, "a") , (3346, 0, "t") , (3347, 0, "i") , (3348, 0, "o") , (3349, 0, "n") , (3335, 1, "") , (3335, 1, "") , (3335, 1, "") , (3335, 0, "o") , (3334, 14, "N") , (3335, 0, "o") , (3336, 0, "N") , (3337, 0, "o") , (3338, 0, "t") , (3339, 0, "i") , (3340, 0, "f") , (3341, 0, "y") , (3343, 10, "i") , (3344, 0, "m") , (3345, 0, "p") , (3346, 0, "l") , (3347, 0, " ") , (3348, 0, "N") , (3349, 0, "o") , (3350, 0, "t") , (3351, 0, "i") , (3352, 0, "f") , (3348, 5, "NotificationTarget") , (3347, 0, "<") , (3348, 0, "C") , (3349, 0, ">") , (3349, 0, ":") , (3350, 0, " ") , (3351, 0, "L") , (3352, 0, "i") , (3353, 0, "s") , (3354, 0, "t") , (3351, 4, "ListConfig") , (3381, 0, "<") , (3382, 0, "C") , (3383, 0, ">") , (3384, 0, " ") , (3385, 0, "f") , (3386, 0, "o") , (3387, 0, "r") , (3388, 0, " ") , (3389, 0, "N") , (3390, 0, "o") , (3391, 0, "N") , (3392, 0, "o") , (3389, 4, "NoNotify") , (3397, 0, " ") , (3398, 0, "{") , (3399, 0, "\n ") , (3404, 0, "\n ") , (3400, 4, "") , (3401, 4, "}") , (3400, 0, " ") , (3404, 0, "f") , (3405, 0, "n") , (3406, 0, " ") , (3407, 0, "n") , (3408, 0, "o") , (3409, 0, "t") , (3410, 0, "i") , (3411, 0, "f") , (3412, 0, "i") , (3407, 6, "notifications_used") , (3425, 0, "(") , (3426, 0, ")") , (3427, 0, " ") , (3428, 0, "-") , (3429, 0, ">") , (3430, 0, " ") , (3431, 0, "b") , (3432, 0, "o") , (3433, 0, "o") , (3434, 0, "l") , (3435, 0, " ") , (3436, 0, "{") , (3437, 0, " ") , (3438, 0, "f") , (3439, 0, "a") , (3440, 0, "l") , (3441, 0, "s") , (3442, 0, "e") , (3443, 0, " ") , (3444, 0, "}") , (3445, 0, "\n ") , ( 3450 , 0 , "fn notify(&mut self, items: &[C::Item], at_marker: ItemMarker);" ) , (3342, 0, ";") , (3516, 1, "") , (3516, 0, " ") , (3517, 0, "{") , (3518, 0, "}") , (20130, 0, ",") , (20131, 0, " ") , (20132, 0, "N") , (20133, 0, ":") , (20134, 0, " ") , (20135, 0, "N") , (20136, 0, "o") , (20137, 0, "t") , (20138, 0, "i") , (20139, 0, "f") , (20135, 5, "NotificationTarget") , (20153, 0, "<") , (20154, 0, "C") , (20155, 0, ">") , (20304, 0, ",") , (20305, 0, " ") , (20306, 0, "C") , (20306, 1, "") , (20306, 0, "N") , (20294, 8, "SkipListNotify") , (20312, 1, "") , (20312, 0, "_") , (20312, 1, "") , (20312, 0, "N") , (20341, 0, ", N: NotificationTarget") , (20390, 0, ",") , (20391, 0, " ") , (20392, 0, "N") , (21131, 0, ",") , (21132, 0, " ") , (21133, 0, ", N: NotificationTarget") , (21133, 26, "") , (21132, 1, "") , (21131, 1, "") , (21131, 0, ", N: NotificationTarget") , (21193, 0, ",") , (21194, 0, " ") , (21195, 0, "N") , (45357, 0, ",") , (45358, 0, " ") , (45359, 0, "N") , (3327, 0, "// ") , (3393, 8, "") , (3393, 0, "(") , (3394, 0, ")") , (3326, 20, "") , (22587, 0, " ") , (22588, 0, "=") , (22589, 0, " ") , (22590, 0, "(") , (22591, 0, ")") , (22589, 3, "") , (22587, 2, "") , (22566, 0, " ") , (22567, 0, "=") , (22568, 0, " ") , (22569, 0, "(") , (22570, 0, ")") , (22568, 3, "") , (22566, 2, "") , (7759, 0, " ") , (7760, 0, "=") , (7761, 0, " ") , (7762, 0, "(") , (7763, 0, ")") , (60462, 1, "") , (22644, 1, "") , (22586, 1, "") , (20289, 1, "") , (7718, 1, "") , (60457, 1, "") , (22640, 1, "") , (22583, 1, "") , (20287, 1, "") , (7717, 1, "") , (60452, 1, "") , (22636, 1, "") , (22580, 1, "") , (20285, 1, "") , (7716, 1, "") , (60447, 1, "") , (22632, 1, "") , (22577, 1, "") , (20283, 1, "") , (7715, 1, "") , (60442, 1, "") , (22628, 1, "") , (22574, 1, "") , (20281, 1, "") , (7714, 1, "") , (60437, 1, "") , (22624, 1, "") , (22571, 1, "") , (20279, 1, "") , (7713, 1, "") , (60432, 1, "") , (22620, 1, "") , (22568, 1, "") , (20277, 1, "") , (7712, 1, "") , (60428, 0, "t") , (22617, 0, "t") , (22566, 0, "t") , (20276, 0, "t") , (7712, 0, "t") , (54461, 69, "") , (54461, 1906, "") , (56037, 0, "\n") , (56038, 0, "i") , (56039, 0, "m") , (56040, 0, "p") , (56041, 0, "l") , (56042, 0, " ") , (56042, 1, "") , (56042, 0, "<") , (56043, 0, "C") , (56044, 0, ":") , (56045, 0, " ") , (56046, 0, "L") , (56047, 0, "i") , (56048, 0, "s") , (56049, 0, "t") , (56046, 4, "ListConfig") , (56056, 0, ">") , (56057, 0, " ") , (56058, 0, "S") , (56059, 0, "k") , (56060, 0, "i") , (56058, 3, "SkipList") , (56066, 0, "<") , (56067, 0, "C") , (56068, 0, ",") , (56069, 0, " ") , (56070, 0, "(") , (56071, 0, ")") , (56071, 1, "") , (56070, 1, "") , (56069, 1, "") , (56068, 1, "") , (56068, 0, ">") , (56069, 0, " ") , (56070, 0, "{") , (56071, 0, "\n ") , (56076, 0, "\n ") , (56072, 4, "") , (56073, 4, "}") , ( 56072 , 0 , "\n pub fn replace_at>(&mut self, start_userpos: usize, removed_items: usize, inserted_content: I) {\n self.edit_between(start_userpos).replace(removed_items, inserted_content);\n }\n\n pub fn replace_at_slice(&mut self, start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n self.replace_at(start_userpos, removed_items, inserted_content.iter().copied());\n }\n\n pub fn modify_item_after(&mut self, userpos: usize, modify_fn: F) {\n let (mut edit, offset) = self.edit(userpos);\n edit.modify_current_item(|item| modify_fn(item, offset))\n }\n\n pub fn insert_at>(&mut self, userpos: usize, contents: I) {\n let (mut edit, offset) = self.edit(userpos);\n edit.insert_between_iter(offset, contents);\n }\n\n pub fn insert_at_slice(&mut self, userpos: usize, contents: &[C::Item]) where C::Item: Copy {\n self.insert_at(userpos, contents.iter().copied())\n }\n\n pub fn del_at(&mut self, userpos: usize, num_items: usize) {\n self.edit_between(userpos).del(num_items)\n }\n\n pub fn edit(&mut self, userpos: usize) -> (Edit)>, usize) {\n // self.edit_notify(userpos, no_notify_x::, f)\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert!(!N::notifications_used());\n (Edit { list: self, cursor, notify: Self::no_notify }, item_offset)\n }\n\n pub fn edit_between(&mut self, userpos: usize) -> Edit)> {\n // self.edit_notify(userpos, no_notify_x::, f)\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n Edit { list: self, cursor, notify: Self::no_notify }\n }" ) , (56071, 1, "") , (57483, 42, "") , (57482, 1, "") , (57628, 37, "") , (57309, 37, "") , (57591, 0, "(") , (57309, 0, "(") , (57593, 0, ")") , (57310, 0, ")") , (60257, 0, "=") , (60258, 0, " ") , (60258, 1, "") , (60257, 1, "") , (60257, 0, " ") , (60258, 0, "=") , (60259, 0, " ") , (60260, 0, "(") , (60261, 0, ")") , (57591, 4, "") , (57307, 4, "") , (57848, 0, ")") , (57833, 0, "(") , (57503, 0, ")") , (57488, 0, "(") , (57836, 15, ")") , (57489, 15, ")") , (57823, 1, "") , (57490, 1, "") , (57820, 0, "&") , (57488, 0, "&") , (57822, 0, "m") , (57489, 0, "m") , (57824, 0, "u") , (57490, 0, "u") , (57826, 0, "t") , (57491, 0, "t") , (57828, 0, " ") , (57492, 0, " ") , (58387, 0, ",") , (58388, 0, " ") , (58389, 0, "N") , (58390, 0, ":") , (58391, 0, " ") , (58392, 0, "N") , (58393, 0, "o") , (58394, 0, "t") , (58395, 0, "i") , (58396, 0, "f") , (58392, 5, "NotificationTarget") , (58410, 0, "<") , (58411, 0, "C") , (58412, 0, ">") , (58434, 0, ",") , (58435, 0, " ") , (58436, 0, "C") , (58436, 1, "") , (58436, 0, "N") , (57845, 32, "impl> ") , (57845, 46, "impl SkipList ") , (57845, 20, "impl> ") , (57901, 0, ",") , (57902, 0, " ") , (57903, 0, "N") , (57849, 41, "") , (57862, 1, "") , (57861, 1, "") , (57860, 1, "") , (57859, 1, "") , (57859, 0, "C, N") , (57849, 0, ">") , (57863, 26, "") , (57877, 1, "") , (57877, 0, "_") , (57863, 0, ",") , (57864, 0, " ") , (57865, 0, "N") , (57866, 0, ":") , (57867, 0, " ") , (57868, 0, "_") , (57883, 1, "") , (57883, 0, "N") , (57883, 1, "") , (57883, 0, "_") , (57867, 2, "") , (57864, 3, "") , (57863, 1, "") , (57877, 1, "") , (57877, 0, "N") , (57863, 0, ", N: NotificationTarget") , (58763, 23, "impl> ") , (58961, 20, "impl> ") , (58831, 0, ",") , (58832, 0, " ") , (58833, 0, "N") , (59044, 0, ",") , (59045, 0, " ") , (59046, 0, "N") , (59045, 2, "") , (59044, 1, "") , (58832, 2, "") , (58831, 1, "") , (58961, 46, "impl ") , (58763, 46, "impl ") , (58763, 23, "impl> ") , (58961, 20, "impl> ") , (58831, 0, ",") , (58832, 0, " N") , (59044, 0, ",") , (59045, 0, " N") , (58768, 0, "I") , (58769, 0, ",") , (58770, 0, " ") , (58916, 0, ",") , (58917, 0, " ") , (58918, 0, "N") , (60109, 0, ", N: NotificationTarget") , (60162, 0, ",") , (60163, 0, " ") , (60164, 0, "N") , (56037, 0, "\n") , (56038, 0, "/") , (56039, 0, "/") , (56040, 0, " ") , (56041, 0, "T") , (56042, 0, "h") , (56043, 0, "e") , (56044, 0, "s") , (56045, 0, "e") , (56046, 0, " ") , (56047, 0, "m") , (56048, 0, "e") , (56049, 0, "t") , (56050, 0, "h") , (56051, 0, "o") , (56052, 0, "d") , (56053, 0, "s") , (56054, 0, " ") , (56055, 0, "a") , (56056, 0, "r") , (56057, 0, "e") , (56058, 0, " ") , (56059, 0, "o") , (56060, 0, "n") , (56061, 0, "l") , (56062, 0, "y") , (56063, 0, " ") , (56064, 0, "a") , (56065, 0, "v") , (56066, 0, "a") , (56067, 0, "i") , (56068, 0, "l") , (56069, 0, "a") , (56070, 0, "b") , (56071, 0, "l") , (56072, 0, "e") , (56073, 0, " ") , (56074, 0, "i") , (56075, 0, "f") , (56076, 0, " ") , (56077, 0, "t") , (56078, 0, "h") , (56079, 0, "e") , (56080, 0, "r") , (56081, 0, "e") , (56082, 0, "'") , (56083, 0, "s") , (56084, 0, " ") , (56085, 0, "n") , (56086, 0, "o") , (56087, 0, " ") , (56088, 0, "n") , (56089, 0, "o") , (56090, 0, "t") , (56091, 0, "i") , (56092, 0, "f") , (56093, 0, "i") , (56094, 0, "c") , (56095, 0, "a") , (56096, 0, "t") , (56097, 0, "i") , (56098, 0, "o") , (56099, 0, "n") , (56100, 0, " ") , (56101, 0, "t") , (56102, 0, "a") , (56103, 0, "r") , (56104, 0, "g") , (56105, 0, "e") , (56106, 0, "t") , (56107, 0, ".") , (57654, 57, "") , (57390, 57, "") , (57596, 1, "") , (57389, 1, "") , (23633, 294, "") , ( 23633 , 0 , "\n pub fn new_from_iter>(iter: I) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, iter);\n rope\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n Self::new_from_iter(s.iter().copied())\n }\n" ) , (23712, 0, "w") , (23713, 0, "h") , (23714, 0, "e") , (23715, 0, "r") , (23716, 0, "e") , (23717, 0, " ") , (23718, 0, "N") , (23719, 0, ":") , (23720, 0, " ") , (23721, 0, "(") , (23722, 0, ")") , (23723, 0, " ") , (23719, 1, "") , (23719, 0, " ") , (23720, 0, "=") , (23721, 0, "=") , (23711, 14, "") , (23634, 293, "") , (55849, 0, "\n ") , ( 55854 , 0 , " pub fn new_from_iter>(iter: I) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, iter);\n rope\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n Self::new_from_iter(s.iter().copied())\n }\n" ) , (55850, 8, " ") , (56143, 0, "\n ") , (56144, 4, "") , (56143, 1, "") , (58740, 26, "") , (58766, 1, "") , (58765, 1, "") , (58764, 1, "") , (58845, 1, "") , (58844, 1, "") , (58843, 1, "") , (58718, 0, "\n") , (58719, 0, "/") , (58720, 0, "/") , (58721, 0, " ") , (58722, 0, "O") , (58723, 0, "n") , (58724, 0, "l") , (58725, 0, "y") , (58726, 0, " ") , (58727, 0, "w") , (58727, 1, "") , (58727, 0, "i") , (58728, 0, "f") , (58729, 0, " ") , (58730, 0, "t") , (58731, 0, "h") , (58732, 0, "e") , (58733, 0, "r") , (58734, 0, "e") , (58735, 0, "'") , (58736, 0, "s") , (58737, 0, " ") , (58738, 0, "n") , (58739, 0, "o") , (58740, 0, " ") , (58741, 0, "n") , (58742, 0, "o") , (58743, 0, "t") , (58744, 0, "i") , (58745, 0, "f") , (58746, 0, "i") , (58747, 0, "c") , (58748, 0, "a") , (58749, 0, "t") , (58750, 0, "i") , (58751, 0, "o") , (58752, 0, "n") , (58753, 0, " ") , (58754, 0, "t") , (58755, 0, "a") , (58756, 0, "r") , (58757, 0, "g") , (58758, 0, "e") , (58759, 0, "t") , (58760, 0, ".") , (55743, 0, "\n") , (55744, 0, "\n") , (55745, 0, "s") , (55746, 0, "t") , (55747, 0, "a") , (55748, 0, "t") , (55749, 0, "i") , (55750, 0, "c") , (55751, 0, " ") , (55752, 0, "m") , (55753, 0, "u") , (55754, 0, "t") , (55755, 0, " ") , (55756, 0, "T") , (55757, 0, "A") , (55758, 0, "R") , (55759, 0, "G") , (55760, 0, "E") , (55761, 0, "T") , (55762, 0, ":") , (55763, 0, " ") , (55764, 0, "(") , (55765, 0, ")") , (55765, 1, "") , (55764, 1, "") , (55763, 1, "") , (55762, 1, "") , (55762, 0, " ") , (55763, 0, "=") , (55764, 0, " ") , (55765, 0, "(") , (55766, 0, ")") , (55767, 0, ";") , (55756, 0, "N") , (55757, 0, "_") , (55764, 0, ":") , (55765, 0, " ") , (55766, 0, "(") , (55767, 0, ")") , (57539, 1, "") , (57538, 1, "") , (57538, 0, "N") , (57539, 0, "_") , (57540, 0, "T") , (57541, 0, "A") , (57542, 0, "R") , (57543, 0, "G") , (57544, 0, "E") , (57545, 0, "T") , (57533, 0, "u") , (57534, 0, "n") , (57535, 0, "s") , (57536, 0, "a") , (57537, 0, "f") , (57538, 0, "e") , (57539, 0, " ") , (57540, 0, "{") , (57541, 0, " ") , (57555, 0, " ") , (57556, 0, "}") , (57829, 7, "unsafe { &mut N_TARGET }") , (57844, 0, "ULL_NOTIFY") , (57548, 0, "ULL_NOTIFY") , (55757, 0, "ULL_NOTIFY") , (2236, 0, "\n") , (2237, 0, "\n") , (2238, 0, "i") , (2239, 0, "m") , (2240, 0, "p") , (2241, 0, "l") , (2242, 0, " ") , (2243, 0, "D") , (2244, 0, "e") , (2245, 0, "f") , (2246, 0, "a") , (2247, 0, "u") , (2248, 0, "l") , (2249, 0, "t") , (2250, 0, " ") , (2251, 0, "f") , (2252, 0, "o") , (2253, 0, "r") , (2254, 0, " ") , (2255, 0, "I") , (2256, 0, "t") , (2257, 0, "e") , (2258, 0, "m") , (2259, 0, "M") , (2255, 5, "ItemMarker") , (2242, 0, "<") , (2243, 0, "C") , (2244, 0, ">") , (2268, 0, "<") , (2269, 0, "C") , (2270, 0, ">") , (2271, 0, " ") , (2272, 0, "{") , (2273, 0, "\n ") , (2274, 4, "}") , (2273, 0, "\n ") , (2278, 0, "f") , (2279, 0, "n") , (2280, 0, " ") , (2281, 0, "d") , (2282, 0, "e") , (2283, 0, "f") , (2281, 3, "default()") , (2290, 0, " ") , (2291, 0, "{") , (2292, 0, " ") , (2293, 0, "S") , (2294, 0, "e") , (2295, 0, "l") , (2296, 0, "f") , (2297, 0, ":") , (2298, 0, ":") , (2299, 0, "n") , (2300, 0, "u") , (2301, 0, "l") , (2302, 0, "l") , (2303, 0, "(") , (2304, 0, ")") , (2305, 0, " ") , (2306, 0, "}") , (2290, 0, " ") , (2291, 0, "-") , (2292, 0, ">") , (2293, 0, " ") , (2294, 0, "S") , (2295, 0, "E") , (2296, 0, "l") , (2297, 0, "f") , (2294, 4, "S") , (2295, 0, "e") , (2296, 0, "l") , (2297, 0, "f") , (2244, 0, ":") , (2245, 0, " ") , (2246, 0, "L") , (2247, 0, "i") , (2248, 0, "s") , (2249, 0, "t") , (2246, 4, "ListConfig") , ( 55950 , 0 , "impl SkipList {\n pub fn new_from_iter>(iter: I) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, iter);\n rope\n }\n\n pub fn new_from_slice(s: &[C::Item]) -> Self where C::Item: Copy {\n Self::new_from_iter(s.iter().copied())\n }\n\n pub fn replace_at>(&mut self, start_userpos: usize, removed_items: usize, inserted_content: I) {\n self.edit_between(start_userpos).replace(removed_items, inserted_content);\n }\n\n pub fn replace_at_slice(&mut self, start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n self.replace_at(start_userpos, removed_items, inserted_content.iter().copied());\n }\n\n pub fn modify_item_after(&mut self, userpos: usize, modify_fn: F) {\n let (mut edit, offset) = self.edit(userpos);\n edit.modify_current_item(|item| modify_fn(item, offset))\n }\n\n pub fn insert_at>(&mut self, userpos: usize, contents: I) {\n let (mut edit, offset) = self.edit(userpos);\n edit.insert_between_iter(offset, contents);\n }\n\n pub fn insert_at_slice(&mut self, userpos: usize, contents: &[C::Item]) where C::Item: Copy {\n self.insert_at(userpos, contents.iter().copied())\n }\n\n pub fn del_at(&mut self, userpos: usize, num_items: usize) {\n self.edit_between(userpos).del(num_items)\n }\n\n pub fn edit(&mut self, userpos: usize) -> (Edit, usize) {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify: unsafe { &mut NULL_NOTIFY_TARGET } }, item_offset)\n }\n\n pub fn edit_between(&mut self, userpos: usize) -> Edit {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n Edit { list: self, cursor, notify: unsafe { &mut NULL_NOTIFY_TARGET } }\n }\n}\n" ) , (58005, 0, ",") , (58006, 0, " ") , (58007, 0, "N") , (58008, 0, ":") , (58009, 0, " ") , (58010, 0, "L") , (58011, 0, "i") , (58010, 2, "N") , (58011, 0, "o") , (58012, 0, "t") , (58013, 0, "i") , (58014, 0, "f") , (58010, 5, "NotificationTarget") , (58028, 0, "<") , (58029, 0, "C") , (58030, 0, ">") , (58043, 0, ",") , (58044, 0, " ") , (58045, 0, "N") , (58047, 0, " ") , (58047, 1, "") , (58074, 0, "_") , (58075, 0, "n") , (58246, 0, "_") , (58247, 0, "n") , (58120, 0, ",") , (58121, 0, " ") , (58122, 0, "&") , (58123, 0, "m") , (58124, 0, "u") , (58125, 0, "t") , (58126, 0, " ") , (58127, 0, "n") , (58127, 1, "") , (58127, 0, "N") , (58122, 0, "n") , (58123, 0, "o") , (58124, 0, "t") , (58125, 0, "i") , (58126, 0, "f") , (58127, 0, "y") , (58128, 0, ":") , (58129, 0, " ") , (58278, 0, ",") , (58279, 0, " ") , (58280, 0, "n") , (58281, 0, "o") , (58282, 0, "t") , (58283, 0, "i") , (58284, 0, "f") , (58285, 0, "y") , (58286, 0, ":") , (58287, 0, " ") , (58288, 0, "&") , (58289, 0, "m") , (58290, 0, "u") , (58291, 0, "t") , (58292, 0, " ") , (58293, 0, "n") , (58293, 1, "") , (58293, 0, "N") , (58353, 0, "_") , (58354, 0, "n") , (58373, 0, ",") , (58374, 0, " ") , (58375, 0, "n") , (58376, 0, "o") , (58377, 0, "t") , (58378, 0, "i") , (58379, 0, "f") , (58380, 0, "y") , (59467, 0, "_") , (59313, 0, "_") , (59096, 0, "_") , (58875, 0, "_") , (58643, 0, "_") , (58411, 0, "_") , (59473, 0, "n") , (59318, 0, "n") , (59100, 0, "n") , (58878, 0, "n") , (58645, 0, "n") , (58412, 0, "n") , (60107, 0, "// ") , (60027, 0, "// ") , (59953, 0, "// ") , (59886, 0, "// ") , (59822, 0, "// ") , (59815, 0, "// ") , (59720, 0, "// ") , (59653, 0, "// ") , (59588, 0, "// ") , (59581, 0, "// ") , (59531, 0, "// ") , (59464, 0, "// ") , (59457, 0, "// ") , (59399, 0, "// ") , (59299, 0, "// ") , (59292, 0, "// ") , (59240, 0, "// ") , (59187, 0, "// ") , (59086, 0, "// ") , (59079, 0, "// ") , (59014, 0, "// ") , (58961, 0, "// ") , (58855, 0, "// ") , (58848, 0, "// ") , (58759, 0, "// ") , (58622, 0, "// ") , (59322, 3, "") , (59267, 3, "") , (59211, 3, "") , (59107, 3, "") , (59200, 0, ",") , (59201, 0, " ") , (59202, 0, "N") , (59202, 1, "") , (59202, 0, "n") , (59203, 0, "o") , (59204, 0, "t") , (59205, 0, "i") , (59206, 0, "f") , (59207, 0, "y") , (59208, 0, ":") , (59209, 0, " ") , (59210, 0, "&") , (59211, 0, "m") , (59212, 0, "u") , (59213, 0, "t") , (59214, 0, " ") , (59215, 0, "N") , (54280, 5, "") , (54262, 292, "") , (54263, 267, "") , (54262, 1, "") , (57421, 0, "\n") , (59626, 0, "\n ") , ( 59631 , 0 , "\n pub fn edit_n<'a>(&'a mut self, userpos: usize, notify_target: &'a mut N) -> (Edit, usize) {\n assert!(N::notifications_used());\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify: notify_target }, item_offset)\n }" ) , (59627, 4, "") , (58698, 0, "_") , (58699, 0, "n") , (58708, 0, ",") , (58709, 0, " ") , (58710, 0, "n") , (58711, 0, "o") , (58712, 0, "t") , (58713, 0, "i") , (58714, 0, "f") , (58715, 0, "y") , (59084, 245, "") , (59083, 1, "") , (59391, 292, "") , (57824, 0, "\n ") , ( 57829 , 0 , "\n pub fn edit_n<'a>(&'a mut self, userpos: usize, notify_target: &'a mut N) -> (Edit, usize) {\n assert!(N::notifications_used());\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify: notify_target }, item_offset)\n }" ) , (57825, 4, "") , (56893, 526, "") , ( 55711 , 0 , "\n\n pub fn edit(&mut self, userpos: usize) -> (Edit, usize) {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify: unsafe { &mut NULL_NOTIFY_TARGET } }, item_offset)\n }\n\n pub fn edit_between(&mut self, userpos: usize) -> Edit {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n Edit { list: self, cursor, notify: unsafe { &mut NULL_NOTIFY_TARGET } }\n }" ) , (59376, 307, "") , ( 58117 , 0 , "\n\n // pub fn edit_between(&mut self, userpos: usize) -> Edit {\n // let (cursor, item_offset) = self.iter_at_userpos(userpos);\n // assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n // Edit { list: self, cursor, notify: unsafe { &mut NULL_NOTIFY_TARGET } }\n // }" ) , (58420, 3, "") , (58337, 3, "") , (58260, 3, "") , (58190, 3, "") , (58123, 3, "") , (58142, 0, "_") , (58143, 0, "n") , (58170, 0, ",") , (58171, 0, " ") , (58172, 0, "n") , (58173, 0, "o") , (58174, 0, "t") , (58175, 0, "i") , (58176, 0, "f") , (58177, 0, "y") , (58178, 0, ":") , (58179, 0, " ") , (58180, 0, "&") , (58181, 0, "m") , (58182, 0, "u") , (58183, 0, "t") , (58184, 0, " ") , (58185, 0, "N") , (58383, 36, "") , (58080, 15, "") , (57890, 1, "") , (57889, 1, "") , (57888, 1, "") , (57887, 1, "") , (57886, 1, "") , (57885, 1, "") , (57884, 1, "") , (57884, 0, "_target") , (57884, 7, "") , (58175, 0, ",") , (58176, 0, " ") , (58177, 0, "N") , (58159, 0, "'") , (58160, 0, " ") , (58160, 1, "") , (58160, 0, "a") , (58161, 0, " ") , (58122, 0, "<") , (58123, 0, "'") , (58124, 0, "a") , (58125, 0, ">") , (58128, 0, "'") , (58129, 0, "a") , (58130, 0, " ") , (58547, 0, "_") , (58548, 0, "n") , (58563, 0, ",") , (58564, 0, " ") , (58565, 0, "n") , (58566, 0, "o") , (58567, 0, "t") , (58568, 0, "i") , (58569, 0, "f") , (58570, 0, "y") , (58518, 0, ",") , (58519, 0, " ") , (58520, 0, "n") , (58521, 0, "o") , (58522, 0, "t") , (58523, 0, "i") , (58524, 0, "f") , (58525, 0, "y") , (58526, 0, ":") , (58527, 0, " ") , (58528, 0, "&") , (58529, 0, "m") , (58530, 0, "u") , (58531, 0, "t") , (58532, 0, " ") , (58533, 0, "N") , (59530, 3, "") , (59469, 3, "") , (59366, 3, "") , (59438, 0, ",") , (59439, 0, " ") , (59440, 0, "n") , (59441, 0, "o") , (59442, 0, "t") , (59443, 0, "i") , (59444, 0, "f") , (59445, 0, "y") , (59446, 0, "&") , (59446, 1, "") , (59446, 0, ":") , (59447, 0, " ") , (59448, 0, "&") , (59449, 0, "n") , (59449, 1, "") , (59449, 0, "m") , (59450, 0, "u") , (59451, 0, "t") , (59452, 0, " ") , (59453, 0, "N") , (59500, 0, "_") , (59501, 0, "n") , (59536, 0, ",") , (59537, 0, " ") , (59538, 0, "n") , (59539, 0, "o") , (59540, 0, "t") , (59541, 0, "i") , (59542, 0, "f") , (59543, 0, "y") , (57486, 2199, "") , (55269, 0, "\n ") , (55274, 0, "\n ") , (55270, 4, "") , (55275, 0, "\n ") , (55271, 4, "") , (55276, 0, "\n ") , (55272, 4, "") , ( 55277 , 0 , " pub fn new_from_iter_n>(iter: I, notify: &mut N) -> Self {\n let mut rope = Self::new();\n rope.insert_at(0, iter);\n rope\n }\n\n pub fn new_from_slice_n(s: &[C::Item], notify: &mut N) -> Self where C::Item: Copy {\n Self::new_from_iter_n(s.iter().copied(), notify)\n }\n\n pub fn edit_n<'a>(&'a mut self, userpos: usize, notify: &'a mut N) -> (Edit, usize) {\n assert!(N::notifications_used());\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify }, item_offset)\n }\n\n pub fn edit_between_n<'a>(&'a mut self, userpos: usize, notify: &'a mut N) -> Edit {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n Edit { list: self, cursor, notify }\n }\n\n pub fn replace_at_n>(&mut self, start_userpos: usize, removed_items: usize, inserted_content: I, notify: &mut N) {\n self.edit_between_n(start_userpos, notify).replace(removed_items, inserted_content);\n }\n\n // pub fn replace_at_slice_n(&mut self, start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n // self.replace_at(start_userpos, removed_items, inserted_content.iter().copied());\n // }\n\n // pub fn modify_item_after_n(&mut self, userpos: usize, modify_fn: F) {\n // let (mut edit, offset) = self.edit(userpos);\n // edit.modify_current_item(|item| modify_fn(item, offset))\n // }\n\n pub fn insert_at_n>(&mut self, userpos: usize, contents: I, notify: &mut N) {\n let (mut edit, offset) = self.edit_n(userpos, notify);\n edit.insert_between_iter(offset, contents);\n }\n\n pub fn insert_at_slice_n(&mut self, userpos: usize, contents: &[C::Item], notify: &mut N) where C::Item: Copy {\n self.insert_at_n(userpos, contents.iter().copied(), notify)\n }\n\n // pub fn del_at_n(&mut self, userpos: usize, num_items: usize) {\n // self.edit_between(userpos).del(num_items)\n // }\n" ) , (55273, 8, " ") , (55429, 0, "_") , (55430, 0, "n") , (55439, 0, ",") , (55440, 0, " ") , (55441, 0, "n") , (55442, 0, "o") , (55443, 0, "t") , (55444, 0, "i") , (55445, 0, "f") , (55446, 0, "y") , (55272, 2210, "") , (55271, 1, "") , (55270, 1, "") , (55269, 1, "") , ( 57486 , 0 , "\n pub fn new_from_iter_n>(iter: I, notify: &mut N) -> Self {\n let mut rope = Self::new();\n rope.insert_at_n(0, iter, notify);\n rope\n }\n\n pub fn new_from_slice_n(s: &[C::Item], notify: &mut N) -> Self where C::Item: Copy {\n Self::new_from_iter_n(s.iter().copied(), notify)\n }\n\n pub fn edit_n<'a>(&'a mut self, userpos: usize, notify: &'a mut N) -> (Edit, usize) {\n assert!(N::notifications_used());\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n (Edit { list: self, cursor, notify }, item_offset)\n }\n\n pub fn edit_between_n<'a>(&'a mut self, userpos: usize, notify: &'a mut N) -> Edit {\n let (cursor, item_offset) = self.iter_at_userpos(userpos);\n assert_eq!(item_offset, 0, \"edit_between landed inside an item\");\n Edit { list: self, cursor, notify }\n }\n\n pub fn replace_at_n>(&mut self, start_userpos: usize, removed_items: usize, inserted_content: I, notify: &mut N) {\n self.edit_between_n(start_userpos, notify).replace(removed_items, inserted_content);\n }\n\n // pub fn replace_at_slice_n(&mut self, start_userpos: usize, removed_items: usize, inserted_content: &[C::Item]) where C::Item: Copy {\n // self.replace_at(start_userpos, removed_items, inserted_content.iter().copied());\n // }\n\n // pub fn modify_item_after_n(&mut self, userpos: usize, modify_fn: F) {\n // let (mut edit, offset) = self.edit(userpos);\n // edit.modify_current_item(|item| modify_fn(item, offset))\n // }\n\n pub fn insert_at_n>(&mut self, userpos: usize, contents: I, notify: &mut N) {\n let (mut edit, offset) = self.edit_n(userpos, notify);\n edit.insert_between_iter(offset, contents);\n }\n\n pub fn insert_at_slice_n(&mut self, userpos: usize, contents: &[C::Item], notify: &mut N) where C::Item: Copy {\n self.insert_at_n(userpos, contents.iter().copied(), notify)\n }\n\n // pub fn del_at_n(&mut self, userpos: usize, num_items: usize) {\n // self.edit_between(userpos).del(num_items)\n // }\n" ) , (1764, 0, "\n") , (1765, 0, "#") , (1766, 0, "[") , (1767, 0, "d") , (1768, 0, "e") , (1769, 0, "r") , (1770, 0, "i") , (1771, 0, "v") , (1772, 0, "e") , (1773, 0, "(") , (1774, 0, "P") , (1775, 0, "a") , (1776, 0, "r") , (1777, 0, "t") , (1778, 0, "i") , (1774, 5, "PartialEq") , (1783, 0, ")") , (1783, 0, ",") , (1784, 0, " ") , (1785, 0, "E") , (1786, 0, "q") , (1788, 0, "]") , (1765, 24, "") , (1764, 1, "") , (2041, 0, "\n") , (2042, 0, "i") , (2043, 0, "m") , (2044, 0, "p") , (2045, 0, "l") , (2046, 0, " ") , (2042, 5, "") , (2041, 1, "") , (1996, 0, "impl Copy for ItemMarker {}\n") , (2062, 4, "P") , (2063, 0, "a") , (2064, 0, "r") , (2065, 0, "t") , (2066, 0, "i") , (2067, 0, "a") , (2062, 6, "PartialEq") , (2091, 0, "\n \n") , (2096, 0, "fn eq(&self, other: &Rhs) -> bool;") , (2117, 3, "S") , (2118, 0, "e") , (2119, 0, "l") , (2120, 0, "f") , (2126, 4, "") , (2126, 0, "{") , (2127, 0, "}") , (2127, 0, " ") , (2128, 0, "s") , (2129, 0, "e") , (2130, 0, "l") , (2131, 0, "f") , (2132, 0, ".") , (2133, 0, "p") , (2134, 0, "t") , (2135, 0, "r") , (2136, 0, " ") , (2137, 0, "=") , (2138, 0, "=") , (2139, 0, " ") , (2140, 0, "o") , (2141, 0, "t") , (2142, 0, "h") , (2143, 0, "e") , (2144, 0, "r") , (2145, 0, ".") , (2146, 0, "p") , (2147, 0, "t") , (2148, 0, "r") , (2149, 0, " ") , (2151, 1, "") , (2125, 0, " ") , (2126, 0, "b") , (2127, 0, "o") , (2128, 0, "o") , (2129, 0, "l") , (2042, 0, "impl PartialEq for ItemMarker {\n") , (2141, 65, "") , (2092, 0, " ") , ( 2092 , 0 , " fn eq(&self, other: &Self) -> bool { self.ptr == other.ptr }\n" ) , (2210, 2, "") , (2157, 4, " ") , (2157, 0, "}\n") , (2159, 8, " ") , (2159, 4, "") , (2179, 9, "E") , (2180, 0, "q") , (2201, 0, "}") , (62348, 5104, "") , (55474, 4385, "") , (55433, 41, "") , (51128, 0, "[") , (51129, 0, "i") , (51130, 0, "b") , (51130, 1, "") , (51129, 1, "") , (51128, 1, "") , (51128, 0, "[") , (51129, 0, "u") , (51130, 0, "b") , (51130, 1, "") , (51129, 1, "") , (51128, 1, "") , (51128, 0, "p") , (51129, 0, "u") , (51130, 0, "b") , (51131, 0, ")") , (51132, 0, "c") , (51133, 0, "r") , (51133, 1, "") , (51132, 1, "") , (51131, 1, "") , (51131, 0, "(") , (51132, 0, "c") , (51133, 0, "r") , (51134, 0, "a") , (51135, 0, "t") , (51136, 0, "e") , (51137, 0, ")") , (51138, 0, " ") , (45930, 0, "pub(crate) ") , (38842, 0, "pub(crate) ") , (38838, 4, " ") , (38838, 8, " ") , (29645, 0, "pub(crate) ") , (16747, 0, "pub(crate) ") , (16751, 5, "s") , (16752, 0, "e") , (16753, 0, "l") , (16754, 0, "f") , (16751, 4, "crate") , (16751, 5, "s") , (16752, 0, "u") , (16753, 0, "p") , (16754, 0, "e") , (16755, 0, "r") , (16881, 0, "pub(super) ") , (16374, 0, "pub(super) ") , (16251, 0, "pub(super) ") , (51213, 1, "") , (46004, 1, "") , (38905, 1, "") , (29697, 1, "") , (51209, 1, "") , (46001, 1, "") , (38903, 1, "") , (29696, 1, "") , (51205, 1, "") , (45998, 1, "") , (38901, 1, "") , (29695, 1, "") , (51201, 1, "") , (45995, 1, "") , (38899, 1, "") , (29694, 1, "") , (51197, 1, "") , (45992, 1, "") , (38897, 1, "") , (29693, 1, "") , (51194, 0, "s") , (45990, 0, "s") , (38896, 0, "s") , (29693, 0, "s") , (51198, 0, "u") , (45993, 0, "u") , (38898, 0, "u") , (29694, 0, "u") , (51202, 0, "p") , (45996, 0, "p") , (38900, 0, "p") , (29695, 0, "p") , (51206, 0, "e") , (45999, 0, "e") , (38902, 0, "e") , (29696, 0, "e") , (51210, 0, "r") , (46002, 0, "r") , (38904, 0, "r") , (29697, 0, "r") , (16832, 1, "") , (16832, 0, "s") , (16833, 0, "i") , (16834, 0, "z") , (16835, 0, "e") , (24375, 0, "p") , (24376, 0, "u") , (24377, 0, "b") , (24378, 0, "(") , (24379, 0, "s") , (24380, 0, "u") , (24381, 0, "p") , (24382, 0, "e") , (24383, 0, "r") , (24384, 0, ")") , (24385, 0, " ") , (16431, 2, "u") , (16432, 0, "s") , (16433, 0, "z") , (16434, 0, "i") , (16434, 1, "") , (16433, 1, "") , (16433, 0, "i") , (16434, 0, "z") , (16435, 0, "e") , (16628, 9, "") , (13593, 0, "pub(super) ") , (13593, 11, "") , (13590, 3, "pub(super) ") , (13600, 1, "") , (13594, 5, "c") , (13595, 0, "r") , (13596, 0, "e") , (13597, 0, "a") , (13598, 0, "t") , (13599, 0, "e") , (13599, 1, "") , (13598, 1, "") , (13597, 1, "") , (13596, 1, "") , (13596, 0, "a") , (13597, 0, "t") , (13598, 0, "e") , (14034, 0, "pub(super) ") , (14283, 0, "pub(super) ") , (14319, 0, "pub(super) ") , (18277, 0, "pub(super) ") , (18693, 0, "pub(super) ") , (19190, 0, "pub(super) ") , (17996, 0, "pub(super) ") , (17573, 0, "pub(super) ") , (17170, 0, "pub(super) ") , (16992, 2, "u") , (16993, 0, "s") , (16994, 0, "i") , (16995, 0, "z") , (16996, 0, "e") , (17064, 9, "") , (54204, 0, "pub(super) ") , (14686, 0, "pub(super) ") , (8662, 0, "pub(super) ") , (8745, 0, "pub(super) ") , (5888, 0, "pub(super) ") , (3703, 0, "_") , (3723, 0, "_") , (33936, 4, "") , (33936, 0, "pub(super) ") , (4065, 0, "pub(super) ") , (1808, 0, "pub(super) ") , (31206, 4, "") , (31205, 1, "") , (31205, 0, " ") , (31206, 0, "l") , (31207, 0, "i") , (31208, 0, "s") , (31209, 0, "t") , (31206, 0, "s") , (31207, 0, "k") , (31208, 0, "i") , (31206, 3, "") , (31206, 5, "") , (59430, 4, "l") , (58657, 4, "l") , (58649, 4, "l") , (59425, 0, "i") , (58655, 0, "i") , (58650, 0, "i") , (59428, 0, "s") , (58657, 0, "s") , (58651, 0, "s") , (59431, 0, "t") , (58659, 0, "t") , (58652, 0, "t") , (582, 178, "") , (1144, 4, "L") , (1145, 0, "i") , (1146, 0, "s") , (1147, 0, "t") , (54562, 0, "(") , (54563, 0, "c") , (54564, 0, "r") , (54565, 0, "a") , (54566, 0, "t") , (54567, 0, "e") , (54568, 0, ")") , (54523, 32, "") , (54522, 1, "") , (54530, 5, "s") , (54531, 0, "u") , (54532, 0, "p") , (54533, 0, "e") , (54534, 0, "r") , (54530, 5, "d") , (54531, 0, "i") , (54531, 1, "") , (54530, 1, "") , (54530, 0, "p") , (54531, 0, "a") , (54532, 0, "t") , (54533, 0, "h") , (54530, 4, "") , (54530, 0, "\"") , (54531, 0, ".") , (54532, 0, ".") , (54533, 0, "\"") , (54526, 10, "") , (54526, 0, "p") , (54527, 0, "u") , (54528, 0, "b") , (54529, 0, "(") , (54530, 0, "s") , (54531, 0, "u") , (54532, 0, "p") , (54533, 0, "e") , (54534, 0, "r") , (54535, 0, ")") , (54536, 0, " ") , (54530, 5, "i") , (54531, 0, "n") , (54532, 0, " ") , (54533, 0, "\"") , (54534, 0, ".") , (54535, 0, ".") , (54536, 0, "\"") , (54533, 4, "s") , (54534, 0, "u") , (54535, 0, "p") , (54536, 0, "e") , (54537, 0, "r") , (54533, 5, "s") , (54534, 0, "e") , (54535, 0, "l") , (54536, 0, "f") , (54529, 9, "") , (54529, 0, "(") , (54529, 1, "") , (54521, 0, "\n ") , (54526, 0, "/") , (54527, 0, "/") , (54528, 0, " ") , (54529, 0, "T") , (54530, 0, "O") , (54531, 0, "D") , (54532, 0, "O") , (54533, 0, ":") , (54534, 0, " ") , (54535, 0, "D") , (54536, 0, "o") , (54537, 0, " ") , (54538, 0, "n") , (54539, 0, "o") , (54540, 0, "t") , (54541, 0, " ") , (54542, 0, "e") , (54543, 0, "x") , (54544, 0, "p") , (54545, 0, "o") , (54546, 0, "e") , (54547, 0, "t") , (54548, 0, " ") , (54548, 1, "") , (54547, 1, "") , (54546, 1, "") , (54546, 0, "r") , (54547, 0, "t") , (54548, 0, " ") , (54549, 0, "t") , (54550, 0, "h") , (54551, 0, "i") , (54552, 0, "s") , (54553, 0, ".") , (54554, 0, " ") , (54554, 1, "") , (54535, 0, "T") , (54536, 0, "h") , (54537, 0, "i") , (54538, 0, "s") , (54539, 0, " ") , (54540, 0, "i") , (54541, 0, "s") , (54542, 0, " ") , (54543, 0, "j") , (54544, 0, "s") , (54545, 0, "u") , (54546, 0, "t") , (54547, 0, " ") , (54548, 0, "f") , (54549, 0, "o") , (54550, 0, "r") , (54551, 0, " ") , (54552, 0, "d") , (54553, 0, "e") , (54543, 11, "j") , (54544, 0, "u") , (54545, 0, "s") , (54546, 0, "t") , (54547, 0, " ") , (54548, 0, "f") , (54549, 0, "o") , (54550, 0, "r") , (54551, 0, " ") , (54552, 0, "d") , (54553, 0, "e") , (54554, 0, "b") , (54555, 0, "u") , (54556, 0, "g") , (54557, 0, "g") , (54558, 0, "i") , (54559, 0, "n") , (54560, 0, "g") , (54561, 0, ".") , (54562, 0, " ") , (32164, 0, "\n ") , (32173, 0, "a") , (32174, 0, "s") , (32175, 0, "s") , (32176, 0, "e") , (32177, 0, "r") , (32178, 0, "t") , (32179, 0, "!") , (32180, 0, "(") , (32181, 0, "N") , (32182, 0, ":") , (32183, 0, ":") , (32184, 0, "notifications_used()") , (32204, 0, ",") , (32205, 0, " ") , (32206, 0, "\"") , (32207, 0, "C") , (32208, 0, "a") , (32209, 0, "n") , (32210, 0, "n") , (32211, 0, "o") , (32212, 0, "t") , (32207, 6, "i") , (32208, 0, "t") , (32209, 0, "e") , (32210, 0, "r") , (32211, 0, "_") , (32212, 0, "a") , (32213, 0, "t") , (32214, 0, "_") , (32215, 0, "n") , (32216, 0, "o") , (32217, 0, "d") , (32218, 0, "e") , (32219, 0, " ") , (32220, 0, "n") , (32221, 0, "o") , (32222, 0, "t") , (32223, 0, " ") , (32224, 0, "a") , (32225, 0, "v") , (32226, 0, "a") , (32227, 0, "i") , (32228, 0, "l") , (32229, 0, "a") , (32230, 0, "b") , (32231, 0, "l") , (32232, 0, "e") , (32233, 0, " ") , (32234, 0, "i") , (32235, 0, "f") , (32236, 0, " ") , (32237, 0, "n") , (32238, 0, "o") , (32239, 0, "t") , (32240, 0, "i") , (32241, 0, "f") , (32242, 0, "i") , (32243, 0, "c") , (32244, 0, "a") , (32245, 0, "t") , (32246, 0, "i") , (32247, 0, "o") , (32248, 0, "n") , (32249, 0, "s") , (32250, 0, " ") , (32251, 0, "a") , (32252, 0, "r") , (32253, 0, "e") , (32254, 0, " ") , (32255, 0, "d") , (32256, 0, "i") , (32257, 0, "s") , (32258, 0, "a") , (32259, 0, "b") , (32260, 0, "l") , (32261, 0, "e") , (32262, 0, "d") , (32263, 0, "\"") , (32264, 0, ")") , (32265, 0, ";") , (32266, 0, "\n ") , (38129, 0, "\n ") , (32267, 8, "") , (38130, 0, "i") , (38131, 0, "f") , (38132, 0, " ") , (38133, 0, "N") , (38134, 0, ":") , (38135, 0, ":") , (38136, 0, "notifications_used()") , (38156, 0, " ") , (38157, 0, "{") , (38572, 8, " ") , (38558, 12, " ") , (38477, 16, " ") , (38433, 16, " ") , (38416, 16, " ") , (38345, 16, " ") , (38289, 16, " ") , (38270, 12, " ") , (38232, 12, " ") , (38194, 12, " ") , (38159, 8, " ") , (38625, 0, "\n ") , (38626, 12, " }") , (49367, 0, "\n ") , (49367, 17, "") , (38626, 9, " ") , (38625, 13, "") , (38612, 12, " ") , (38594, 16, " ") , (38509, 20, " ") , (38461, 20, " ") , (38440, 20, " ") , (38365, 20, " ") , (38305, 20, " ") , (38282, 16, " ") , (38240, 16, " ") , (38198, 16, " ") , (38159, 12, " ") , (38133, 23, "") , (38122, 13, "") , (38121, 1, "") , (38132, 0, " ") , (38133, 0, "N::notifications_used()") , (38156, 0, " ") , (38157, 0, "&") , (38158, 0, "&") , (49322, 0, " ") , (49323, 0, "N::notifications_used()") , (49346, 0, " ") , (49347, 0, "&") , (49348, 0, "&") , (33899, 4, "c") , (33900, 0, "u") , (33901, 0, "r") , (33902, 0, "s") , (33903, 0, "o") , (33904, 0, "r") , (32075, 1, "") , (32074, 1, "") , (32073, 1, "") , (32072, 1, "") , (32072, 0, "c") , (32073, 0, "u") , (32074, 0, "r") , (32075, 0, "s") , (32076, 0, "o") , (32077, 0, "r") , (28226, 4, "c") , (28227, 0, "u") , (28228, 0, "r") , (28229, 0, "s") , (28230, 0, "o") , (28231, 0, "r") , (34637, 1, "") , (34636, 1, "") , (34635, 1, "") , (34634, 1, "") , (34634, 0, "c") , (34635, 0, "u") , (34636, 0, "r") , (34637, 0, "s") , (34638, 0, "o") , (34639, 0, "r") , (29703, 3, "curso") , (27769, 3, "curso") , (27847, 0, "\n ") , (27864, 0, "a") , (27865, 0, "s") , (27866, 0, "s") , (27867, 0, "e") , (27868, 0, "r") , (27864, 5, "assert_eq!") , (27874, 0, "(") , (27875, 0, "n") , (27876, 0, "o") , (27877, 0, "r") , (27878, 0, "m") , (27879, 0, "a") , (27875, 5, "normal_iter") , (27886, 0, ".") , (27887, 0, "u") , (27888, 0, "s") , (27889, 0, "e") , (27890, 0, "p") , (27891, 0, "o") , (27891, 1, "") , (27890, 1, "") , (27890, 0, "r") , (27891, 0, "p") , (27892, 0, "o") , (27893, 0, "s") , (27894, 0, ",") , (27895, 0, " ") , (27896, 0, "n") , (27897, 0, "u") , (27898, 0, "m") , (27899, 0, "_") , (27900, 0, "u") , (27896, 5, "num_usercount") , (27909, 0, ")") , (27910, 0, ";") , ( 27911 , 0 , "\n assert_eq!(normal_iter.userpos, num_usercount);" ) , (27911, 64, "") , (28041, 0, "\n ") , (28058, 0, "i") , (28059, 0, "f") , (28060, 0, " ") , (28061, 0, "p") , (28061, 1, "") , (28061, 0, "N") , (28062, 0, ":") , (28063, 0, ":") , (28064, 0, "notifications_used()") , (28084, 0, " ") , (28085, 0, "{") , (28397, 16, " ") , (28291, 16, " ") , (28227, 16, " ") , (28209, 16, " ") , (28161, 20, " ") , (28087, 16, " ") , (28472, 0, "\n ") , (28473, 20, " }") , (26687, 247, "") , (26341, 0, "\n ") , (26358, 0, "i") , (26359, 0, "f") , (26360, 0, " ") , (26361, 0, "N") , (26362, 0, ":") , (26363, 0, ":") , (26364, 0, "notifications_used()") , (26384, 0, " ") , (26385, 0, "{") , (26733, 16, " ") , (26713, 16, " ") , (26669, 20, " ") , (26644, 16, " ") , (26562, 20, " ") , (26505, 16, " ") , (26444, 20, " ") , (26387, 16, " ") , (26847, 0, "\n ") , (26848, 20, " }") , (38144, 0, " if cfg!(debug_assertions) {\n") , (38184, 0, " ") , (38182, 1, "") , (38181, 1, "") , (38159, 22, "") , (38158, 1, "") , (38157, 1, "") , (38144, 13, "") , (38144, 0, "cfg!(debug_assertions)") , ( 38133 , 95 , " if cfg!(debug_assertions) N::notifications_used() && new_height_usize > 1 {" ) , (38166, 0, " ") , (38167, 0, "|") , (38168, 0, "|") , (38144, 0, "(") , (38194, 0, ")") , (38221, 1, "") , (38144, 51, "") , (38144, 0, "s") , (38145, 0, "e") , (38146, 0, "l") , (38147, 0, "f") , (38148, 0, ".") , (38149, 0, "s") , (38150, 0, "t") , (38151, 0, "o") , (38152, 0, "r") , (38153, 0, "e") , (38153, 1, "") , (38152, 1, "") , (38151, 1, "") , (38150, 1, "") , (38149, 1, "") , (38149, 0, "u") , (38150, 0, "s") , (38151, 0, "e") , (38152, 0, "_") , (38153, 0, "p") , (38154, 0, "a") , (38155, 0, "r") , (38156, 0, "e") , (38157, 0, "n") , (38158, 0, "t") , (38159, 0, "s") , (38160, 0, "(") , (38161, 0, ")") , (24736, 0, "\n ") , (24741, 0, "\n ") , (24737, 4, "") , (24742, 0, "#") , (24743, 0, "[") , (24744, 0, "i") , (24745, 0, "n") , (24746, 0, "l") , (24747, 0, "i") , (24748, 0, "n") , (24749, 0, "e") , (24750, 0, "(") , (24751, 0, "a") , (24752, 0, "l") , (24753, 0, "w") , (24754, 0, "a") , (24755, 0, "y") , (24756, 0, "s") , (24757, 0, ")") , (24758, 0, "]") , (24759, 0, "\n ") , (24764, 0, "f") , (24765, 0, "n") , (24766, 0, " ") , (24767, 0, "u") , (24768, 0, "s") , (24769, 0, "e") , (24770, 0, "_") , (24771, 0, "p") , (24772, 0, "a") , (24773, 0, "r") , (24774, 0, "e") , (24775, 0, "n") , (24776, 0, "t") , (24777, 0, "s") , (24778, 0, "(") , (24779, 0, "&") , (24780, 0, "s") , (24781, 0, "e") , (24781, 1, "") , (24780, 1, "") , (24779, 1, "") , (24779, 0, ")") , (24780, 0, " ") , (24781, 0, "-") , (24782, 0, ">") , (24783, 0, " ") , (24784, 0, "b") , (24785, 0, "o") , (24786, 0, "o") , (24787, 0, "l") , (24788, 0, " ") , (24789, 0, "{") , (24790, 0, "\n ") , (24799, 0, "\n ") , (24791, 8, "") , (24792, 8, " }") , (24791, 0, "(cfg!(debug_assertions) || N::notifications_used())") , (24791, 0, " ") , (24799, 1, "") , (24848, 1, "") , (38262, 5, "") , (38262, 0, "S") , (38263, 0, "e") , (38264, 0, "l") , (38265, 0, "f") , (38266, 0, ":") , (38267, 0, ":") , (49447, 23, "Self::use_parents()") , (26479, 23, "Self::use_parents()") , (28023, 23, "Self::use_parents()") , (28023, 19, "N::notifications_used()") , (28023, 23, "Self::use_parents()") , (32324, 1, "") , (32324, 1, "") , (32324, 1, "") , (32324, 1, "") , (32324, 0, "c") , (32325, 0, "u") , (32326, 0, "r") , (32327, 0, "s") , (32328, 0, "o") , (32329, 0, "r") , (32298, 23, "Self::use_parents()") , (3771, 0, "// ") , (3704, 0, "// ") , (3628, 0, "// ") , (3611, 0, "// ") , (3589, 0, "// ") , ( 34004 , 0 , " pub(super) unsafe fn cursor_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n" ) , (34163, 0, "// ") , ( 34316 , 0 , "\n pub(super) unsafe fn cursor_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {" ) , (34004, 155, "") , (34246, 29, "") , (34245, 1, "") , (34245, 0, "i") , (34246, 0, "m") , (34247, 0, "p") , (34248, 0, "l") , (34249, 0, " ") , (34250, 0, "F") , (34251, 0, "n") , (34252, 0, "M") , (34253, 0, "u") , (34253, 1, "") , (34252, 1, "") , (34252, 0, "(") , (34203, 0, "<") , (34204, 0, "F") , (34205, 0, ">") , (34205, 1, "") , (34204, 1, "") , (34204, 0, "Q") , (34205, 0, ">") , (34248, 8, "Q") , (34264, 24, "") , (34263, 1, "") , (34263, 1, "") , (34263, 0, "\n ") , (34268, 0, "w") , (34269, 0, "h") , (34270, 0, "e") , (34271, 0, "r") , (34272, 0, "e") , (34273, 0, " ") , ( 34274 , 0 , "fn contains_item(&self, query: &Self::Query) -> Option;" ) , (34274, 0, "W") , (34275, 0, ":") , (34276, 0, " ") , (34276, 1, "") , (34275, 1, "") , (34274, 1, "") , (34274, 0, "Q") , (34275, 0, ":") , (34276, 0, " ") , (34277, 16, "F") , (34278, 0, "n") , (34280, 5, "") , (34280, 0, "C") , (34281, 0, ":") , (34282, 0, ":") , (34283, 0, "I") , (34284, 0, "t") , (34285, 0, "e") , (34286, 0, "m") , (34287, 21, "") , (34280, 0, "&") , (34280, 0, "i") , (34281, 0, "t") , (34282, 0, "e") , (34283, 0, "m") , (34284, 0, ":") , (34285, 0, " ") , (34312, 1, "") , (34312, 0, " ") , (34280, 6, "") , (34603, 5, "p") , (34241, 5, "p") , (34600, 0, "r") , (34242, 0, "r") , (34602, 0, "e") , (34243, 0, "e") , (34604, 0, "d") , (34244, 0, "d") , (34606, 0, "i") , (34245, 0, "i") , (34608, 0, "c") , (34246, 0, "c") , (34610, 0, "a") , (34247, 0, "a") , (34612, 0, "t") , (34248, 0, "t") , (34614, 0, "e") , (34249, 0, "e") , (34252, 1, "") , (34252, 0, "P") , (34204, 1, "") , (34204, 0, "P") , (34278, 1, "") , (34278, 0, "P") , (34588, 0, "p") , (34589, 0, "r") , (34590, 0, "e") , (34591, 0, "d") , (34592, 0, "i") , (34593, 0, "c") , (34594, 0, "a") , (34595, 0, "t") , (34596, 0, "e") , (34597, 0, "(") , (34602, 0, ")") , (34603, 25, "") , (3588, 200, "\n") , (3588, 1, "") , (33804, 158, "") , (32094, 0, ")") , (32085, 0, "(") , (32095, 0, ",") , (32096, 0, " ") , (32097, 0, "u") , (32098, 0, "s") , (32099, 0, "i") , (32100, 0, "z") , (32101, 0, "e") , (33663, 0, "(") , (33670, 0, ",") , (33671, 0, " ") , (33672, 0, "9") , (33672, 1, "") , (33672, 0, "0") , (33673, 0, ")") , (33672, 2, "") , (33672, 0, "9") , (33671, 2, "") , (33670, 1, "") , (33663, 1, "") , (32096, 6, "") , (32095, 1, "") , (32095, 1, "") , (32085, 1, "") , ( 33804 , 0 , " // pub(super) unsafe fn cursor_at_marker(&mut self, marker: ItemMarker, query: &::Query) -> Cursor where C::Item: Queryable {\n" ) , (33804, 158, "") , (32094, 0, ")") , (32085, 0, "(") , (32095, 1, "") , (32085, 1, "") , (31987, 0, "\n ") , (31992, 0, "/") , (31993, 0, "/") , (31994, 0, " ") , (31994, 1, "") , (31994, 0, "/") , (31995, 0, " ") , (31996, 0, "G") , (31997, 0, "e") , (31997, 1, "") , (31996, 1, "") , (31996, 0, "C") , (31997, 0, "r") , (31998, 0, "e") , (31999, 0, "a") , (32000, 0, "t") , (32001, 0, "e") , (32002, 0, " ") , (32003, 0, "a") , (32004, 0, " ") , (32005, 0, "c") , (32006, 0, "u") , (32007, 0, "r") , (32008, 0, "s") , (32009, 0, "o") , (32010, 0, "r") , (32011, 0, " ") , (32012, 0, "a") , (32013, 0, "t") , (32014, 0, " ") , (32015, 0, "t") , (32016, 0, "h") , (32017, 0, "e") , (32018, 0, " ") , (32019, 0, "s") , (32020, 0, "p") , (32021, 0, "e") , (32022, 0, "c") , (32023, 0, "i") , (32024, 0, "f") , (32025, 0, "i") , (32026, 0, "e") , (32027, 0, "d") , (32028, 0, " ") , (32029, 0, "n") , (32030, 0, "o") , (32031, 0, "d") , (32032, 0, "e") , (32033, 0, ",") , (32034, 0, " ") , (32035, 0, "u") , (32036, 0, "s") , (32037, 0, "i") , (32038, 0, "n") , (32039, 0, "g") , (32040, 0, " ") , (32041, 0, "t") , (32042, 0, "h") , (32043, 0, "e") , (32044, 0, " ") , (32045, 0, "p") , (32046, 0, "a") , (32047, 0, "r") , (32048, 0, "e") , (32049, 0, "n") , (32050, 0, "t") , (32051, 0, "s") , (32052, 0, " ") , (32053, 0, "i") , (32054, 0, "n") , (32055, 0, "f") , (32056, 0, "r") , (32057, 0, "a") , (32058, 0, "s") , (32059, 0, "t") , (32060, 0, "r") , (32061, 0, "u") , (32062, 0, "c") , (32063, 0, "t") , (32064, 0, "u") , (32065, 0, "r") , (32066, 0, "e") , (32067, 0, " ") , (32068, 0, "t") , (32069, 0, "o") , (32070, 0, " ") , (32071, 0, "c") , (32072, 0, "a") , (32073, 0, "l") , (32074, 0, "c") , (32075, 0, "u") , (32076, 0, "l") , (32077, 0, "a") , (32078, 0, "t") , (32079, 0, "e") , (32080, 0, " ") , (32081, 0, "o") , (32082, 0, "f") , (32083, 0, "f") , (32084, 0, "s") , (32085, 0, "e") , (32086, 0, "t") , (32087, 0, "s") , (32088, 0, ".") , (32089, 0, "q") , (32089, 1, "") , ( 31988 , 101 , " /// Create a cursor at the specified node, using the parents infrastructure\n /// to calculate offsets." ) , (32097, 0, " ") , (32098, 0, "N") , (32099, 0, "o") , (32100, 0, "t") , (32101, 0, "e") , (32102, 0, " ") , (32103, 0, "t") , (32104, 0, "h") , (32105, 0, "i") , (32106, 0, "s") , (32107, 0, " ") , (32108, 0, "i") , (32098, 11, "") , (32097, 1, "") , (32097, 0, " ") , (32098, 0, "T") , (32099, 0, "e") , (32100, 0, "h") , (32101, 0, " ") , (32102, 0, "o") , (32102, 1, "") , (32101, 1, "") , (32100, 1, "") , (32099, 1, "") , (32099, 0, "h") , (32100, 0, "e") , (32101, 0, " ") , (32102, 0, "o") , (32103, 0, "f") , (32104, 0, "f") , (32105, 0, "s") , (32106, 0, "e") , (32107, 0, "t") , (32108, 0, " ") , (32109, 0, "a") , (32110, 0, "n") , (32111, 0, "d") , (32112, 0, " ") , (32113, 0, "l") , (32114, 0, "o") , (32115, 0, "c") , (32116, 0, "a") , (32117, 0, "l") , (32118, 0, "_") , (32119, 0, "i") , (32120, 0, "n") , (32121, 0, "d") , (32122, 0, "e") , (32123, 0, "x") , (32124, 0, " ") , (32125, 0, "p") , (32126, 0, "a") , (32127, 0, "r") , (32128, 0, "a") , (32129, 0, "m") , (32130, 0, "e") , (32131, 0, "t") , (32132, 0, "e") , (32133, 0, "r") , (32134, 0, "s") , (32135, 0, " ") , (32136, 0, "a") , (32137, 0, "r") , (32138, 0, "e") , (32139, 0, " ") , (32140, 0, "n") , (32141, 0, "o") , (32141, 1, "") , (32140, 1, "") , (32140, 0, "u") , (32141, 0, "n") , (32142, 0, "c") , (32143, 0, "k") , (32144, 0, "e") , (32145, 0, "d") , (32145, 1, "") , (32145, 0, "c") , (32146, 0, "k") , (32140, 7, "u") , (32141, 0, "n") , (32142, 0, "c") , (32143, 0, "k") , (32144, 0, "e") , (32136, 9, "m") , (32137, 0, "u") , (32138, 0, "s") , (32139, 0, "t") , (32140, 0, " ") , (32141, 0, "s") , (32142, 0, "p") , (32143, 0, "e") , (32144, 0, "c") , (32136, 9, "s") , (32137, 0, "h") , (32138, 0, "o") , (32139, 0, "u") , (32140, 0, "l") , (32141, 0, "d") , (32142, 0, " ") , (32143, 0, "s") , (32144, 0, "p") , (32145, 0, "e") , (32146, 0, "c") , (32147, 0, "i") , (32148, 0, "f") , (32149, 0, "y") , (32150, 0, " ") , (32151, 0, "t") , (32152, 0, "h") , (32153, 0, "e") , (32154, 0, " ") , (32155, 0, "o") , (32156, 0, "f") , (32157, 0, "f") , (32158, 0, "s") , (32159, 0, "e") , (32160, 0, "t") , (32161, 0, " ") , (32162, 0, "i") , (32163, 0, "n") , (32164, 0, "t") , (32165, 0, "o") , (32166, 0, " ") , (32167, 0, "t") , (32168, 0, "h") , (32169, 0, "e") , (32170, 0, " ") , (32171, 0, "c") , (32172, 0, "u") , (32173, 0, "r") , (32174, 0, "r") , (32175, 0, "e") , (32176, 0, "n") , (32177, 0, "t") , (32178, 0, " ") , (32179, 0, "n") , (32180, 0, "o") , (32181, 0, "d") , (32182, 0, "e") , (32183, 0, ".") , (32184, 0, " ") , (32185, 0, "T") , (32186, 0, "h") , (32187, 0, "e") , (32188, 0, " ") , (32185, 4, "") , (32185, 0, "O") , (32186, 0, "f") , (32187, 0, "f") , (32188, 0, "s") , (32189, 0, "e") , (32190, 0, "t") , (32191, 0, " ") , (32192, 0, "m") , (32193, 0, "u") , (32193, 1, "") , (32192, 1, "") , (32192, 0, "*") , (32193, 0, "m") , (32194, 0, "u") , (32195, 0, "s") , (32196, 0, "t") , (32197, 0, "*") , (32198, 0, " ") , (32199, 0, "b") , (32200, 0, "e") , (32201, 0, " ") , (32202, 0, "s") , (32203, 0, "p") , (32204, 0, "e") , (32205, 0, "c") , (32206, 0, "i") , (32207, 0, "f") , (32208, 0, "i") , (32209, 0, "e") , (32210, 0, "d") , (32202, 9, "a") , (32203, 0, "t") , (32204, 0, " ") , (32205, 0, "a") , (32206, 0, " ") , (32206, 1, "") , (32206, 0, "n") , (32207, 0, " ") , (32208, 0, "i") , (32209, 0, "t") , (32210, 0, "e") , (32211, 0, "m") , (32212, 0, " ") , (32213, 0, "b") , (32214, 0, "o") , (32215, 0, "u") , (32216, 0, "n") , (32217, 0, "d") , (32218, 0, "a") , (32219, 0, "r") , (32220, 0, "y") , (32184, 0, " ") , (32185, 0, "T") , (32186, 0, "h") , (32187, 0, "e") , (32188, 0, "y") , (32189, 0, " ") , (32190, 0, "a") , (32191, 0, "r") , (32192, 0, "e") , (32193, 0, " ") , (32194, 0, "a") , (32195, 0, "c") , (32196, 0, "c") , (32197, 0, "e") , (32198, 0, "p") , (32199, 0, "t") , (32200, 0, "e") , (32201, 0, "d") , (32202, 0, " ") , (32203, 0, "a") , (32204, 0, "s") , (32205, 0, "-") , (32206, 0, "i") , (32207, 0, "s") , (32208, 0, ".") , ( 32068 , 178 , " /// to calculate offsets. The offset and local_index parameters should\n /// specify the offset into the current node. They are accepted as-is.\n /// Offset *must* be at an item boundary" ) , (34398, 0, "\n ") , (34407, 0, "l") , (34408, 0, "e") , (34409, 0, "t") , (34410, 0, " ") , (34411, 0, "m") , (34412, 0, "u") , (34413, 0, "t") , (34414, 0, " ") , (34415, 0, "i") , (34416, 0, "t") , (34417, 0, "e") , (34418, 0, "m") , (34419, 0, "_") , (34420, 0, "o") , (34421, 0, "f") , (34422, 0, "f") , (34423, 0, "s") , (34424, 0, "e") , (34425, 0, "t") , (34426, 0, " ") , (34427, 0, "=") , (34428, 0, " ") , (34429, 0, "0") , (34430, 0, ";") , (34429, 1, "") , (34428, 1, "") , (34427, 1, "") , (34426, 1, "") , (34426, 0, " = 0") , (34534, 0, "_") , (34573, 0, "// ") , (34598, 0, "\n ") , (34615, 0, "i") , (34616, 0, "t") , (34617, 0, "e") , (34618, 0, "m") , (34619, 0, "_") , (34620, 0, "o") , (34615, 6, "item_offset") , (34626, 0, " ") , (34627, 0, "=") , (34628, 0, " ") , (34629, 0, "i") , (34630, 0, "t") , (34631, 0, "e") , (34632, 0, "m") , (34629, 4, "item_offset_") , (34641, 0, ";") , (34897, 0, "(") , (34941, 0, ",") , (34942, 0, " ") , (34943, 0, "i") , (34944, 0, "t") , (34945, 0, "e") , (34946, 0, "m") , (34947, 0, "_") , (34943, 5, "item_offset") , (34954, 0, ")") , (34175, 0, "(") , (34185, 0, ",") , (34186, 0, " ") , (34187, 0, "u") , (34188, 0, "s") , (34189, 0, "i") , (34190, 0, "z") , (34191, 0, "e") , (34192, 0, ")") , (34175, 0, "O") , (34176, 0, "p") , (34177, 0, "t") , (34178, 0, "i") , (34179, 0, "o") , (34180, 0, "n") , (34181, 0, "<") , (34200, 0, ">") , (34816, 0, "\n ") , (34825, 0, "i") , (34826, 0, "f") , (34827, 0, " ") , (34817, 11, "") , (34816, 1, "") , (34825, 0, "// ") , (34816, 0, "\n ") , (34825, 0, "m") , (34825, 1, "") , (34825, 0, "i") , (34826, 0, "f") , (34827, 0, " ") , (34828, 0, "l") , (34829, 0, "e") , (34830, 0, "t") , (34831, 0, " ") , (34832, 0, "l") , (34833, 0, "o") , (34834, 0, "c") , (34835, 0, "a") , (34832, 4, "local_index") , (34843, 0, " ") , (34844, 0, " ") , (34844, 1, "") , (34844, 0, "=") , (34845, 0, " ") , (34846, 0, "l") , (34847, 0, "o") , (34848, 0, "c") , (34849, 0, "a") , (34850, 0, "l") , (34846, 5, "local_index") , (34857, 0, " ") , (34858, 0, "{") , ( 35018 , 0 , "\n // let local_index = local_index.expect(\"Invalid marker - item not found in node\");" ) , (34952, 8, " ") , (34860, 92, "") , (34930, 0, "\n ") , (34931, 12, " }") , (34940, 0, " ") , (34941, 0, "e") , (34942, 0, "l") , (34943, 0, "s") , (34944, 0, "e") , (34945, 0, " ") , (34946, 0, "{") , (34947, 0, " ") , (34948, 0, "N") , (34949, 0, "o") , (34950, 0, "n") , (34951, 0, "e") , (34952, 0, " ") , (34953, 0, "}") , (34832, 0, "S") , (34833, 0, "o") , (34834, 0, "m") , (34835, 0, "e") , (34836, 0, "(") , (34848, 0, ")") , (34878, 0, "C") , (34879, 0, "o") , (34880, 0, "m") , (34881, 0, "e") , (34881, 1, "") , (34880, 1, "") , (34879, 1, "") , (34878, 1, "") , (34878, 0, "S") , (34879, 0, "o") , (34880, 0, "m") , (34881, 0, "e") , (34882, 0, "(") , (34941, 0, ")") , (34816, 0, "\n ") , (34825, 0, "l") , (34826, 0, "o") , (34827, 0, "c") , (34828, 0, "a") , (34825, 4, "local_index") , (34836, 0, ".") , (34837, 0, "m") , (34838, 0, "a") , (34837, 2, "map(f: F)") , (34841, 5, "") , (34841, 0, "l") , (34841, 1, "") , (34841, 0, "\\") , (34841, 1, "") , (34841, 0, "|") , (34842, 0, "l") , (34843, 0, "o") , (34844, 0, "c") , (34845, 0, "a") , (34846, 0, "l") , (34842, 5, "local_index") , (34853, 0, "|") , (34855, 66, "") , (34854, 1, "") , (34854, 0, "\n ") , (34854, 0, "{") , (34854, 1, "") , (34854, 0, " ") , (34855, 0, "{") , (34928, 0, "\n ") , (34929, 12, " }") , (34938, 0, ")") , (34927, 1, "") , (34939, 116, "") , ( 34939 , 0 , " } else { None }\n // let local_index = local_index.expect(\"Invalid marker - item not found in node\");\n" ) , (34939, 24, "") , (34939, 92, "") , (55306, 1, "") , (55305, 1, "") , (10576, 8, "") , (32654, 13, "") , (58218, 229, "") , ( 57449 , 0 , "\nimpl> fmt::Debug for SkipList where C::Item: fmt::Debug {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_list().entries(self.iter()).finish()\n }\n}\n" ) , ( 57450 , 0 , "impl> fmt::Debug for SkipList where C::Item: fmt::Debug {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_list().entries(self.iter()).finish()\n }\n}\n" ) , (57678, 0, "\n") , (57725, 10, "D") , (57726, 0, "e") , (57727, 0, "f") , (57728, 0, "a") , (57729, 0, "u") , (57730, 0, "l") , (57731, 0, "t") , (57751, 26, "") , (57761, 3, "d") , (57762, 0, "e") , (57763, 0, "f") , (57764, 0, "a") , (57765, 0, "u") , (57766, 0, "l") , (57767, 0, "t") , (57807, 11, "S") , (57808, 0, "e") , (57809, 0, "l") , (57810, 0, "f") , (57769, 33, "") , (57789, 44, "") , (57789, 0, "S") , (57790, 0, "k") , (57789, 2, "SkipList") , (57797, 0, ":") , (57798, 0, ":") , (57799, 0, "n") , (57800, 0, "e") , (57801, 0, "w") , (57802, 0, "(") , (57803, 0, ")") , (56481, 7, "") , (56497, 1, "") , (18854, 0, "// ") , (18844, 0, "// ") , (18789, 0, "// ") , (18736, 0, "// ") , (18719, 0, "// ") , (18651, 0, "// ") , (18601, 0, "// ") , (18545, 0, "// ") , (18503, 0, "// ") , (18417, 0, "// ") , (57729, 7, "y") , (57500, 7, "y") , (57148, 7, "y") , (56565, 7, "y") , (56020, 7, "y") , (22665, 7, "y") , (21233, 7, "y") , (20443, 7, "y") , (20238, 7, "y") , (7663, 7, "y") , (3439, 7, "y") , (3155, 7, "y") , (2409, 10, "") , (2409, 0, "ListConfig") , (2409, 10, "L") , (2410, 0, "i") , (2411, 0, "s") , (2412, 0, "t") , (2413, 0, "I") , (2414, 0, "t") , (2415, 0, "e") , (2416, 0, "m") , (2420, 14, "") , (2419, 1, "") , (2325, 73, "") , (2324, 1, "") , (2346, 36, "") , (2618, 7, "") , (2623, 6, "") , (2619, 4, "s") , (2620, 0, "e") , (2621, 0, "l") , (2622, 0, "f") , (2678, 6, "") , (2826, 6, "") , (2814, 7, "") , (2249, 1, "") , (2054, 1, "") , (2009, 1, "") , (1892, 1, "") , (1846, 1, "") , (1760, 1, "") , (1621, 1, "") , (2242, 1, "") , (2048, 1, "") , (2004, 1, "") , (1888, 1, "") , (1843, 1, "") , (1758, 1, "") , (1620, 1, "") , (2235, 1, "") , (2042, 1, "") , (1999, 1, "") , (1884, 1, "") , (1840, 1, "") , (1756, 1, "") , (1619, 1, "") , (2228, 1, "") , (2036, 1, "") , (1994, 1, "") , (1880, 1, "") , (1837, 1, "") , (1754, 1, "") , (1618, 1, "") , (2221, 1, "") , (2030, 1, "") , (1989, 1, "") , (1876, 1, "") , (1834, 1, "") , (1752, 1, "") , (1617, 1, "") , (2214, 1, "") , (2024, 1, "") , (1984, 1, "") , (1872, 1, "") , (1831, 1, "") , (1750, 1, "") , (1616, 1, "") , (2208, 0, "I") , (2019, 0, "I") , (1980, 0, "I") , (1869, 0, "I") , (1829, 0, "I") , (1749, 0, "I") , (1616, 0, "I") , (2215, 0, "t") , (2025, 0, "t") , (1985, 0, "t") , (1873, 0, "t") , (1832, 0, "t") , (1751, 0, "t") , (1617, 0, "t") , (2222, 0, "e") , (2031, 0, "e") , (1990, 0, "e") , (1877, 0, "e") , (1835, 0, "e") , (1753, 0, "e") , (1618, 0, "e") , (2229, 0, "m") , (2037, 0, "m") , (1995, 0, "m") , (1881, 0, "m") , (1838, 0, "m") , (1755, 0, "m") , (1619, 0, "m") , (2225, 1, "") , (2032, 1, "") , (1989, 1, "") , (1874, 1, "") , (1830, 1, "") , (1746, 1, "") , (1609, 1, "") , (2219, 0, "I") , (2027, 0, "I") , (1985, 0, "I") , (1871, 0, "I") , (1828, 0, "I") , (1745, 0, "I") , (1609, 0, "I") , (1654, 1, "") , (1654, 0, "I") , (1780, 1, "") , (1780, 0, "I") , (1863, 1, "") , (1863, 0, "I") , (1913, 1, "") , (1912, 1, "") , (1912, 0, "I") , (1913, 0, ">") , (2020, 1, "") , (2020, 0, "I") , (2261, 1, "") , (2093, 1, "") , (2056, 1, "") , (2259, 0, "I") , (2092, 0, "I") , (2056, 0, "I") , (4117, 13, "I") , (4031, 13, "I") , (3986, 13, "I") , (3556, 13, "I") , (3240, 13, "I") , (2990, 13, "I") , (4058, 0, ":") , (3984, 0, ":") , (3951, 0, ":") , (3533, 0, ":") , (3229, 0, ":") , (2991, 0, ":") , (4064, 0, " ") , (3989, 0, " ") , (3955, 0, " ") , (3536, 0, " ") , (3231, 0, " ") , (2992, 0, " ") , (4070, 0, "L") , (3994, 0, "L") , (3959, 0, "L") , (3539, 0, "L") , (3233, 0, "L") , (2993, 0, "L") , (4076, 0, "i") , (3999, 0, "i") , (3963, 0, "i") , (3542, 0, "i") , (3235, 0, "i") , (2994, 0, "i") , (4082, 0, "s") , (4004, 0, "s") , (3967, 0, "s") , (3545, 0, "s") , (3237, 0, "s") , (2995, 0, "s") , (4088, 0, "t") , (4009, 0, "t") , (3971, 0, "t") , (3548, 0, "t") , (3239, 0, "t") , (2996, 0, "t") , (4094, 0, "I") , (4014, 0, "I") , (3975, 0, "I") , (3551, 0, "I") , (3241, 0, "I") , (2997, 0, "I") , (4100, 0, "t") , (4019, 0, "t") , (3979, 0, "t") , (3554, 0, "t") , (3243, 0, "t") , (2998, 0, "t") , (4106, 0, "e") , (4024, 0, "e") , (3983, 0, "e") , (3557, 0, "e") , (3245, 0, "e") , (2999, 0, "e") , (4112, 0, "m") , (4029, 0, "m") , (3987, 0, "m") , (3560, 0, "m") , (3247, 0, "m") , (3000, 0, "m") , (3357, 7, "L") , (3193, 7, "L") , (3352, 0, "i") , (3194, 0, "i") , (3354, 0, "s") , (3195, 0, "s") , (3356, 0, "t") , (3196, 0, "t") , (3358, 0, "I") , (3197, 0, "I") , (3360, 0, "t") , (3198, 0, "t") , (3362, 0, "e") , (3199, 0, "e") , (3364, 0, "m") , (3200, 0, "m") , (3226, 1, "") , (3226, 0, "I") , (3392, 1, "") , (3392, 0, "I") , (3358, 8, "I") , (3193, 8, "I") , (3258, 1, "") , (3258, 0, "I") , (3610, 1, "") , (3610, 0, "I") , (4118, 1, "") , (4044, 1, "") , (4000, 1, "") , (4116, 0, "I") , (4043, 0, "I") , (4000, 0, "I") , (5363, 13, "I") , (5364, 0, "L") , (5364, 1, "") , (5364, 0, ":") , (5365, 0, " ") , (5366, 0, "L") , (5367, 0, "i") , (5368, 0, "s") , (5369, 0, "t") , (5370, 0, "I") , (5366, 5, "ListItem") , (5815, 7, "I") , (6363, 1, "") , (6363, 0, "I") , (6651, 1, "") , (6651, 0, "I") , (7032, 0, "// ") , (6975, 0, "// ") , (6969, 0, "// ") , (6910, 0, "// ") , (6886, 0, "// ") , (6849, 0, "// ") , (6826, 0, "// ") , (6821, 0, "\n ") , (6826, 0, "s") , (6827, 0, "t") , (6828, 0, "r") , (6829, 0, "u") , (6830, 0, "c") , (6831, 0, "t") , (6832, 0, " ") , (6833, 0, "I") , (6834, 0, "t") , (6835, 0, "e") , (6836, 0, "m") , (6837, 0, "(") , (6838, 0, "u") , (6839, 0, "8") , (6840, 0, ")") , (6841, 0, ";") , (7002, 3, "") , (6940, 3, "") , (6913, 3, "") , (6873, 3, "") , (6843, 25, "") , (6842, 1, "") , (6852, 10, "L") , (6853, 0, "i") , (6854, 0, "s") , (6855, 0, "t") , (6856, 0, "I") , (6857, 0, "t") , (6858, 0, "e") , (6859, 0, "m") , (6865, 10, "I") , (6866, 0, "t") , (6867, 0, "e") , (6868, 0, "m") , (6872, 23, "") , (6871, 1, "") , (7087, 3, "") , (7001, 3, "") , (6941, 3, "") , (6976, 10, "I") , (6977, 0, "t") , (6978, 0, "e") , (6979, 0, "m") , (7054, 10, "I") , (7055, 0, "t") , (7056, 0, "e") , (7057, 0, "m") , (7069, 0, "// ") , (7380, 10, "L") , (7381, 0, "i") , (7382, 0, "s") , (7383, 0, "t") , (7380, 4, "ListItem") , (7377, 1, "") , (7377, 0, "I") , (8693, 1, "") , (8693, 0, "I") , (9206, 1, "") , (9206, 0, "I") , (9262, 13, "I") , (9263, 0, ":") , (9264, 0, " ") , (9264, 1, "") , (9264, 0, " ") , (9265, 0, "I") , (9265, 1, "") , (9265, 0, "L") , (9266, 0, "i") , (9267, 0, "s") , (9268, 0, "t") , (9269, 0, "I") , (9265, 5, "ListItem") , (9280, 1, "") , (9280, 0, "I") , (9436, 1, "") , (9436, 0, "I") , (11466, 1, "") , (11240, 1, "") , (11123, 1, "") , (10679, 1, "") , (10583, 1, "") , (10172, 1, "") , (10016, 1, "") , (9943, 1, "") , (9883, 1, "") , (9850, 1, "") , (9605, 1, "") , (11456, 0, "I") , (11231, 0, "I") , (11115, 0, "I") , (10672, 0, "I") , (10577, 0, "I") , (10167, 0, "I") , (10012, 0, "I") , (9940, 0, "I") , (9881, 0, "I") , (9849, 0, "I") , (9605, 0, "I") , (7406, 1, "") , (7406, 0, "I") , (10885, 7, "I") , (11905, 13, "I") , (11859, 13, "I") , (11516, 13, "I") , (11882, 0, ":") , (11848, 0, ":") , (11517, 0, ":") , (11885, 0, " ") , (11850, 0, " ") , (11518, 0, " ") , (11888, 0, "L") , (11852, 0, "L") , (11519, 0, "L") , (11891, 0, "i") , (11854, 0, "i") , (11520, 0, "i") , (11894, 0, "s") , (11856, 0, "s") , (11521, 0, "s") , (11897, 0, "t") , (11858, 0, "t") , (11522, 0, "t") , (11900, 0, "I") , (11860, 0, "I") , (11523, 0, "I") , (11898, 5, "ListItem") , (11857, 5, "ListItem") , (11519, 5, "ListItem") , (11543, 1, "") , (11543, 0, "I") , (12017, 1, "") , (11970, 1, "") , (11886, 1, "") , (12015, 0, "I") , (11969, 0, "I") , (11886, 0, "I") , (11940, 1, "") , (11940, 0, "I") , (13016, 2, "I") , (13017, 11, ":") , (13018, 0, " ") , (13019, 0, "L") , (13020, 0, "i") , (13021, 0, "s") , (13022, 0, "t") , (13023, 0, "I") , (13019, 5, "ListItem") , (13749, 1, "I") , (14054, 13, "I") , (14055, 0, "L") , (14055, 1, "") , (14055, 0, ":") , (14056, 0, " ") , (14057, 0, "L") , (14058, 0, "i") , (14059, 0, "s") , (14060, 0, "t") , (14057, 4, "ListItem") , (14074, 1, "") , (14074, 0, "I") , (14804, 1, "I") , (15969, 15, "") , (15969, 1, "") , (16008, 1, "") , (16007, 1, "") , (16006, 1, "") , (15997, 0, " ") , (15998, 0, "}") , (16008, 0, ".") , (16009, 0, "g") , (16010, 0, "e") , (16011, 0, "t") , (16012, 0, "_") , (16013, 0, "u") , (16014, 0, "s") , (16015, 0, "e") , (16016, 0, "r") , (16009, 8, "get_usersize") , (16021, 0, "(") , (16022, 0, ")") , (17769, 7, "I") , (17476, 7, "I") , (17052, 7, "I") , (16626, 7, "I") , (18672, 1, "I") , (19448, 13, "I") , (19407, 13, "I") , (18720, 13, "I") , (19425, 0, ":") , (19396, 0, ":") , (18721, 0, ":") , (19428, 0, "L") , (19398, 0, "L") , (18722, 0, "L") , (19431, 0, "i") , (19400, 0, "i") , (18723, 0, "i") , (19434, 0, "s") , (19402, 0, "s") , (18724, 0, "s") , (19437, 0, "t") , (19404, 0, "t") , (18725, 0, "t") , (19440, 0, "I") , (19406, 0, "I") , (18726, 0, "I") , (19438, 5, "ListItem") , (19403, 5, "ListItem") , (18722, 5, "ListItem") , (19444, 0, " ") , (19406, 0, " ") , (18722, 0, " ") , (20124, 1, "") , (19925, 1, "") , (19479, 1, "") , (19432, 1, "") , (18754, 1, "") , (20120, 0, "I") , (19922, 0, "I") , (19477, 0, "I") , (19431, 0, "I") , (18754, 0, "I") , (20877, 13, "I") , (20093, 13, "I") , (19894, 13, "I") , (20854, 0, "L") , (20082, 0, "L") , (19895, 0, "L") , (20856, 1, "") , (20083, 1, "") , (19895, 1, "") , (20854, 0, ":") , (20082, 0, ":") , (19895, 0, ":") , (20857, 0, " ") , (20084, 0, " ") , (19896, 0, " ") , (20860, 0, "L") , (20086, 0, "L") , (19897, 0, "L") , (20863, 0, "i") , (20088, 0, "i") , (19898, 0, "i") , (20866, 0, "s") , (20090, 0, "s") , (19899, 0, "s") , (20869, 0, "t") , (20092, 0, "t") , (19900, 0, "t") , (20872, 0, "I") , (20094, 0, "I") , (19901, 0, "I") , (20870, 5, "ListItem") , (20091, 5, "ListItem") , (19897, 5, "ListItem") , (20963, 7, "I") , (20664, 7, "I") , (20602, 7, "I") , (20025, 7, "I") , (20001, 7, "I") , (20060, 1, "") , (20060, 0, "I") , (20132, 1, "") , (20132, 0, "I") , (20878, 1, "I") , (20915, 1, "") , (20915, 0, "I") , (21389, 7, "I") , (22261, 13, "I: ListItem") , (22290, 1, "") , (22290, 0, "I") , (22303, 1, "") , (22303, 0, "I") , (22357, 1, "") , (22357, 0, "I") , (24917, 1, "") , (24114, 1, "") , (23934, 1, "") , (23632, 1, "") , (23554, 1, "") , (24913, 0, "I") , (24111, 0, "I") , (23932, 0, "I") , (23631, 0, "I") , (23554, 0, "I") , (25809, 1, "") , (25809, 0, "I") , (29321, 1, "I") , (30812, 1, "") , (29418, 1, "") , (30811, 0, "I") , (29418, 0, "I") , (31351, 1, "I") , (31351, 16, "") , (31388, 1, "") , (31388, 0, ".") , (31389, 0, "g") , (31390, 0, "e") , (31391, 0, "t") , (31392, 0, "_") , (31393, 0, "u") , (31394, 0, "s") , (31389, 6, "get_usersize") , (31401, 0, "(") , (31402, 0, ")") , (31360, 1, "") , (31997, 1, "") , (31944, 1, "") , (31996, 0, "I") , (31944, 0, "I") , (31997, 1, "") , (31944, 1, "") , (31996, 0, "C") , (31944, 0, "C") , (35012, 1, "") , (34882, 1, "") , (33807, 1, "") , (33771, 1, "") , (32138, 1, "") , (31997, 1, "") , (31944, 1, "") , (35006, 0, "I") , (34877, 0, "I") , (33803, 0, "I") , (33768, 0, "I") , (32136, 0, "I") , (31996, 0, "I") , (31944, 0, "I") , (33836, 7, "I") , (34380, 16, "") , (34384, 1, "") , (34384, 0, ".") , (34385, 0, "g") , (34386, 0, "e") , (34387, 0, "t") , (34388, 0, "_") , (34389, 0, "u") , (34390, 0, "s") , (34391, 0, "e") , (34392, 0, "r") , (34385, 8, "get_usersize") , (34397, 0, "(") , (34398, 0, ")") , (34971, 0, "t") , (34972, 0, "e") , (34973, 0, "r") , (35101, 0, "t") , (35102, 0, "e") , (35103, 0, "r") , (35120, 7, "I") , (35655, 7, "I") , (35757, 1, "") , (35757, 0, "I") , (38936, 0, "t") , (38937, 0, "e") , (38938, 0, "r") , (38972, 1, "") , (38972, 0, "I") , (39029, 0, "t") , (39030, 0, "e") , (39031, 0, "r") , (39057, 7, "I") , (41720, 1, "") , (41720, 0, "I") , (45343, 1, "") , (45343, 0, "I") , (46058, 1, "I") , (47505, 7, "I") , (47726, 1, "I") , (51262, 0, "t") , (51263, 0, "e") , (51264, 0, "r") , (51352, 0, "t") , (51353, 0, "e") , (51354, 0, "r") , (51392, 0, "t") , (51393, 0, "e") , (51394, 0, "r") , (51420, 7, "I") , (51298, 1, "") , (51298, 0, "I") , (52387, 1, "I") , (52816, 1, "I") , (54183, 1, "I") , (54197, 7, "I") , (54629, 7, "I") , (55576, 13, "I::get_usersize(") , (55576, 16, "C: ListConfig") , (55576, 13, "I") , (55577, 0, ":") , (55578, 0, " ") , (55579, 0, "L") , (55580, 0, "i") , (55581, 0, "s") , (55582, 0, "t") , (55583, 0, "I") , (55579, 5, "ListItem") , (56554, 1, "") , (56144, 1, "") , (55605, 1, "") , (56552, 0, "I") , (56143, 0, "I") , (55605, 0, "I") , (55618, 1, "") , (55618, 0, "I") , (55630, 7, "I") , (56845, 7, "I") , (56805, 7, "I") , (56764, 7, "I") , (56728, 7, "I") , (56583, 7, "I") , (55680, 7, "I") , (56101, 13, "I: ListItem") , (56152, 1, "") , (56152, 0, "I") , (56504, 13, "I: ListItem") , (56611, 1, "") , (56611, 0, "I") , (56611, 1, "") , (56611, 0, "C") , (56504, 11, "C: ListConfig") , (56152, 1, "") , (56152, 0, "I") , (56504, 13, "I: ListItem") , (56611, 1, "") , (56611, 0, "I") , (56502, 0, "t") , (56503, 0, "e") , (56504, 0, "r") , (56551, 0, "t") , (56552, 0, "e") , (56553, 0, "r") , (56603, 0, "t") , (56604, 0, "e") , (56605, 0, "r") , (56677, 13, "I: ListItem") , (56737, 1, "") , (56737, 0, "I") , (56706, 1, "") , (56706, 0, "I") , (57496, 13, "I: ListItem") , (57373, 13, "I: ListItem") , (57220, 13, "I: ListItem") , (56997, 13, "I: ListItem") , (57410, 1, "") , (57247, 1, "") , (57026, 1, "") , (57408, 0, "I") , (57246, 0, "I") , (57026, 0, "I") , (57272, 1, "") , (57054, 1, "") , (57271, 0, "I") , (57054, 0, "I") , (57558, 7, "I") , (57066, 7, "I") , (57527, 1, "I") , (2839, 6, "") , (2827, 6, "") , (6884, 18, "&") , (6885, 0, "s") , (6886, 0, "e") , (6887, 0, "l") , (6888, 0, "f") , (57459, 1, "") , (57338, 1, "") , (57187, 1, "") , (56972, 1, "") , (56652, 1, "") , (56482, 1, "") , (56076, 1, "") , (55551, 1, "") , (22236, 1, "") , (20824, 1, "") , (20054, 1, "") , (19869, 1, "") , (19419, 1, "") , (19380, 1, "") , (18695, 1, "") , (14029, 1, "") , (12991, 1, "") , (11876, 1, "") , (11832, 1, "") , (11491, 1, "") , (9237, 1, "") , (7352, 1, "") , (5351, 1, "") , (4083, 1, "") , (3999, 1, "") , (3956, 1, "") , (3528, 1, "") , (3220, 1, "") , (2978, 1, "") , (2225, 1, "") , (2032, 1, "") , (1989, 1, "") , (1874, 1, "") , (1830, 1, "") , (1746, 1, "") , (1609, 1, "") , (57424, 0, "I") , (57304, 0, "I") , (57154, 0, "I") , (56940, 0, "I") , (56621, 0, "I") , (56452, 0, "I") , (56047, 0, "I") , (55523, 0, "I") , (22209, 0, "I") , (20798, 0, "I") , (20029, 0, "I") , (19845, 0, "I") , (19396, 0, "I") , (19358, 0, "I") , (18674, 0, "I") , (14009, 0, "I") , (12972, 0, "I") , (11858, 0, "I") , (11815, 0, "I") , (11475, 0, "I") , (9222, 0, "I") , (7338, 0, "I") , (5338, 0, "I") , (4071, 0, "I") , (3988, 0, "I") , (3946, 0, "I") , (3519, 0, "I") , (3212, 0, "I") , (2971, 0, "I") , (2219, 0, "I") , (2027, 0, "I") , (1985, 0, "I") , (1871, 0, "I") , (1828, 0, "I") , (1745, 0, "I") , (1609, 0, "I") , (57459, 1, "") , (57338, 1, "") , (57187, 1, "") , (56972, 1, "") , (56652, 1, "") , (56482, 1, "") , (56076, 1, "") , (55551, 1, "") , (22236, 1, "") , (20824, 1, "") , (20054, 1, "") , (19869, 1, "") , (19419, 1, "") , (19380, 1, "") , (18695, 1, "") , (14029, 1, "") , (12991, 1, "") , (11876, 1, "") , (11832, 1, "") , (11491, 1, "") , (9237, 1, "") , (7352, 1, "") , (5351, 1, "") , (4083, 1, "") , (3999, 1, "") , (3956, 1, "") , (3528, 1, "") , (3220, 1, "") , (2978, 1, "") , (2225, 1, "") , (2032, 1, "") , (1989, 1, "") , (1874, 1, "") , (1830, 1, "") , (1746, 1, "") , (1609, 1, "") , (57424, 0, "T") , (57304, 0, "T") , (57154, 0, "T") , (56940, 0, "T") , (56621, 0, "T") , (56452, 0, "T") , (56047, 0, "T") , (55523, 0, "T") , (22209, 0, "T") , (20798, 0, "T") , (20029, 0, "T") , (19845, 0, "T") , (19396, 0, "T") , (19358, 0, "T") , (18674, 0, "T") , (14009, 0, "T") , (12972, 0, "T") , (11858, 0, "T") , (11815, 0, "T") , (11475, 0, "T") , (9222, 0, "T") , (7338, 0, "T") , (5338, 0, "T") , (4071, 0, "T") , (3988, 0, "T") , (3946, 0, "T") , (3519, 0, "T") , (3212, 0, "T") , (2971, 0, "T") , (2219, 0, "T") , (2027, 0, "T") , (1985, 0, "T") , (1871, 0, "T") , (1828, 0, "T") , (1745, 0, "T") , (1609, 0, "T") , (57459, 1, "") , (57338, 1, "") , (57187, 1, "") , (56972, 1, "") , (56652, 1, "") , (56482, 1, "") , (56076, 1, "") , (55551, 1, "") , (22236, 1, "") , (20824, 1, "") , (20054, 1, "") , (19869, 1, "") , (19419, 1, "") , (19380, 1, "") , (18695, 1, "") , (14029, 1, "") , (12991, 1, "") , (11876, 1, "") , (11832, 1, "") , (11491, 1, "") , (9237, 1, "") , (7352, 1, "") , (5351, 1, "") , (4083, 1, "") , (3999, 1, "") , (3956, 1, "") , (3528, 1, "") , (3220, 1, "") , (2978, 1, "") , (2225, 1, "") , (2032, 1, "") , (1989, 1, "") , (1874, 1, "") , (1830, 1, "") , (1746, 1, "") , (1609, 1, "") , (57424, 0, "V") , (57304, 0, "V") , (57154, 0, "V") , (56940, 0, "V") , (56621, 0, "V") , (56452, 0, "V") , (56047, 0, "V") , (55523, 0, "V") , (22209, 0, "V") , (20798, 0, "V") , (20029, 0, "V") , (19845, 0, "V") , (19396, 0, "V") , (19358, 0, "V") , (18674, 0, "V") , (14009, 0, "V") , (12972, 0, "V") , (11858, 0, "V") , (11815, 0, "V") , (11475, 0, "V") , (9222, 0, "V") , (7338, 0, "V") , (5338, 0, "V") , (4071, 0, "V") , (3988, 0, "V") , (3946, 0, "V") , (3519, 0, "V") , (3212, 0, "V") , (2971, 0, "V") , (2219, 0, "V") , (2027, 0, "V") , (1985, 0, "V") , (1871, 0, "V") , (1828, 0, "V") , (1745, 0, "V") , (1609, 0, "V") , (57459, 1, "") , (57338, 1, "") , (57187, 1, "") , (56972, 1, "") , (56652, 1, "") , (56482, 1, "") , (56076, 1, "") , (55551, 1, "") , (22236, 1, "") , (20824, 1, "") , (20054, 1, "") , (19869, 1, "") , (19419, 1, "") , (19380, 1, "") , (18695, 1, "") , (14029, 1, "") , (12991, 1, "") , (11876, 1, "") , (11832, 1, "") , (11491, 1, "") , (9237, 1, "") , (7352, 1, "") , (5351, 1, "") , (4083, 1, "") , (3999, 1, "") , (3956, 1, "") , (3528, 1, "") , (3220, 1, "") , (2978, 1, "") , (2225, 1, "") , (2032, 1, "") , (1989, 1, "") , (1874, 1, "") , (1830, 1, "") , (1746, 1, "") , (1609, 1, "") , (57424, 0, "I") , (57304, 0, "I") , (57154, 0, "I") , (56940, 0, "I") , (56621, 0, "I") , (56452, 0, "I") , (56047, 0, "I") , (55523, 0, "I") , (22209, 0, "I") , (20798, 0, "I") , (20029, 0, "I") , (19845, 0, "I") , (19396, 0, "I") , (19358, 0, "I") , (18674, 0, "I") , (14009, 0, "I") , (12972, 0, "I") , (11858, 0, "I") , (11815, 0, "I") , (11475, 0, "I") , (9222, 0, "I") , (7338, 0, "I") , (5338, 0, "I") , (4071, 0, "I") , (3988, 0, "I") , (3946, 0, "I") , (3519, 0, "I") , (3212, 0, "I") , (2971, 0, "I") , (2219, 0, "I") , (2027, 0, "I") , (1985, 0, "I") , (1871, 0, "I") , (1828, 0, "I") , (1745, 0, "I") , (1609, 0, "I") , (57460, 0, "t") , (57339, 0, "t") , (57188, 0, "t") , (56973, 0, "t") , (56653, 0, "t") , (56483, 0, "t") , (56077, 0, "t") , (55552, 0, "t") , (22237, 0, "t") , (20825, 0, "t") , (20055, 0, "t") , (19870, 0, "t") , (19420, 0, "t") , (19381, 0, "t") , (18696, 0, "t") , (14030, 0, "t") , (12992, 0, "t") , (11877, 0, "t") , (11833, 0, "t") , (11492, 0, "t") , (9238, 0, "t") , (7353, 0, "t") , (5352, 0, "t") , (4084, 0, "t") , (4000, 0, "t") , (3957, 0, "t") , (3529, 0, "t") , (3221, 0, "t") , (2979, 0, "t") , (2226, 0, "t") , (2033, 0, "t") , (1990, 0, "t") , (1875, 0, "t") , (1831, 0, "t") , (1747, 0, "t") , (1610, 0, "t") , (57496, 0, "e") , (57374, 0, "e") , (57222, 0, "e") , (57006, 0, "e") , (56685, 0, "e") , (56514, 0, "e") , (56107, 0, "e") , (55581, 0, "e") , (22265, 0, "e") , (20852, 0, "e") , (20081, 0, "e") , (19895, 0, "e") , (19444, 0, "e") , (19404, 0, "e") , (18718, 0, "e") , (14051, 0, "e") , (13012, 0, "e") , (11896, 0, "e") , (11851, 0, "e") , (11509, 0, "e") , (9254, 0, "e") , (7368, 0, "e") , (5366, 0, "e") , (4097, 0, "e") , (4012, 0, "e") , (3968, 0, "e") , (3539, 0, "e") , (3230, 0, "e") , (2987, 0, "e") , (2233, 0, "e") , (2039, 0, "e") , (1995, 0, "e") , (1879, 0, "e") , (1834, 0, "e") , (1749, 0, "e") , (1611, 0, "e") , (57532, 0, "m") , (57409, 0, "m") , (57256, 0, "m") , (57039, 0, "m") , (56717, 0, "m") , (56545, 0, "m") , (56137, 0, "m") , (55610, 0, "m") , (22293, 0, "m") , (20879, 0, "m") , (20107, 0, "m") , (19920, 0, "m") , (19468, 0, "m") , (19427, 0, "m") , (18740, 0, "m") , (14072, 0, "m") , (13032, 0, "m") , (11915, 0, "m") , (11869, 0, "m") , (11526, 0, "m") , (9270, 0, "m") , (7383, 0, "m") , (5380, 0, "m") , (4110, 0, "m") , (4024, 0, "m") , (3979, 0, "m") , (3549, 0, "m") , (3239, 0, "m") , (2995, 0, "m") , (2240, 0, "m") , (2045, 0, "m") , (2000, 0, "m") , (1883, 0, "m") , (1837, 0, "m") , (1751, 0, "m") , (1612, 0, "m") , (57485, 0, "t") , (57319, 0, "t") , (57101, 0, "t") , (56890, 0, "t") , (56856, 0, "t") , (56791, 0, "t") , (56778, 0, "t") , (56689, 0, "t") , (56610, 0, "t") , (56594, 0, "t") , (56196, 0, "t") , (55668, 0, "t") , (54243, 0, "t") , (51358, 0, "t") , (47565, 0, "t") , (46118, 0, "t") , (39032, 0, "t") , (35067, 0, "t") , (34934, 0, "t") , (33867, 0, "t") , (33831, 0, "t") , (32198, 0, "t") , (32057, 0, "t") , (32004, 0, "t") , (30872, 0, "t") , (29478, 0, "t") , (29381, 0, "t") , (24977, 0, "t") , (24174, 0, "t") , (23994, 0, "t") , (23692, 0, "t") , (23614, 0, "t") , (22350, 0, "t") , (21446, 0, "t") , (20935, 0, "t") , (20644, 0, "t") , (20162, 0, "t") , (20052, 0, "t") , (19974, 0, "t") , (19527, 0, "t") , (19477, 0, "t") , (18796, 0, "t") , (18711, 0, "t") , (14843, 0, "t") , (14113, 0, "t") , (13785, 0, "t") , (12050, 0, "t") , (12003, 0, "t") , (11916, 0, "t") , (11570, 0, "t") , (11484, 0, "t") , (11258, 0, "t") , (11141, 0, "t") , (10703, 0, "t") , (10607, 0, "t") , (10196, 0, "t") , (10040, 0, "t") , (9967, 0, "t") , (9907, 0, "t") , (9874, 0, "t") , (9629, 0, "t") , (9460, 0, "t") , (9304, 0, "t") , (9227, 0, "t") , (8714, 0, "t") , (7427, 0, "t") , (6682, 0, "t") , (6394, 0, "t") , (5846, 0, "t") , (4146, 0, "t") , (4069, 0, "t") , (4022, 0, "t") , (3629, 0, "t") , (3394, 0, "t") , (3274, 0, "t") , (3232, 0, "t") , (2283, 0, "t") , (2112, 0, "t") , (2075, 0, "t") , (2036, 0, "t") , (1925, 0, "t") , (1873, 0, "t") , (1787, 0, "t") , (1658, 0, "t") , (57569, 0, "e") , (57402, 0, "e") , (57183, 0, "e") , (56971, 0, "e") , (56936, 0, "e") , (56870, 0, "e") , (56856, 0, "e") , (56766, 0, "e") , (56686, 0, "e") , (56669, 0, "e") , (56270, 0, "e") , (55741, 0, "e") , (54315, 0, "e") , (51429, 0, "e") , (47635, 0, "e") , (46187, 0, "e") , (39100, 0, "e") , (35134, 0, "e") , (35000, 0, "e") , (33932, 0, "e") , (33895, 0, "e") , (32261, 0, "e") , (32119, 0, "e") , (32065, 0, "e") , (30932, 0, "e") , (29537, 0, "e") , (29439, 0, "e") , (25034, 0, "e") , (24230, 0, "e") , (24049, 0, "e") , (23746, 0, "e") , (23667, 0, "e") , (22402, 0, "e") , (21497, 0, "e") , (20985, 0, "e") , (20693, 0, "e") , (20210, 0, "e") , (20099, 0, "e") , (20020, 0, "e") , (19572, 0, "e") , (19521, 0, "e") , (18839, 0, "e") , (18753, 0, "e") , (14884, 0, "e") , (14153, 0, "e") , (13824, 0, "e") , (12088, 0, "e") , (12040, 0, "e") , (11952, 0, "e") , (11605, 0, "e") , (11518, 0, "e") , (11291, 0, "e") , (11173, 0, "e") , (10734, 0, "e") , (10637, 0, "e") , (10225, 0, "e") , (10068, 0, "e") , (9994, 0, "e") , (9933, 0, "e") , (9899, 0, "e") , (9653, 0, "e") , (9483, 0, "e") , (9326, 0, "e") , (9248, 0, "e") , (8734, 0, "e") , (7446, 0, "e") , (6700, 0, "e") , (6411, 0, "e") , (5862, 0, "e") , (4161, 0, "e") , (4083, 0, "e") , (4035, 0, "e") , (3641, 0, "e") , (3405, 0, "e") , (3284, 0, "e") , (3241, 0, "e") , (2291, 0, "e") , (2119, 0, "e") , (2081, 0, "e") , (2041, 0, "e") , (1929, 0, "e") , (1876, 0, "e") , (1789, 0, "e") , (1659, 0, "e") , (57653, 0, "m") , (57485, 0, "m") , (57265, 0, "m") , (57052, 0, "m") , (57016, 0, "m") , (56949, 0, "m") , (56934, 0, "m") , (56843, 0, "m") , (56762, 0, "m") , (56744, 0, "m") , (56344, 0, "m") , (55814, 0, "m") , (54387, 0, "m") , (51500, 0, "m") , (47705, 0, "m") , (46256, 0, "m") , (39168, 0, "m") , (35201, 0, "m") , (35066, 0, "m") , (33997, 0, "m") , (33959, 0, "m") , (32324, 0, "m") , (32181, 0, "m") , (32126, 0, "m") , (30992, 0, "m") , (29596, 0, "m") , (29497, 0, "m") , (25091, 0, "m") , (24286, 0, "m") , (24104, 0, "m") , (23800, 0, "m") , (23720, 0, "m") , (22454, 0, "m") , (21548, 0, "m") , (21035, 0, "m") , (20742, 0, "m") , (20258, 0, "m") , (20146, 0, "m") , (20066, 0, "m") , (19617, 0, "m") , (19565, 0, "m") , (18882, 0, "m") , (18795, 0, "m") , (14925, 0, "m") , (14193, 0, "m") , (13863, 0, "m") , (12126, 0, "m") , (12077, 0, "m") , (11988, 0, "m") , (11640, 0, "m") , (11552, 0, "m") , (11324, 0, "m") , (11205, 0, "m") , (10765, 0, "m") , (10667, 0, "m") , (10254, 0, "m") , (10096, 0, "m") , (10021, 0, "m") , (9959, 0, "m") , (9924, 0, "m") , (9677, 0, "m") , (9506, 0, "m") , (9348, 0, "m") , (9269, 0, "m") , (8754, 0, "m") , (7465, 0, "m") , (6718, 0, "m") , (6428, 0, "m") , (5878, 0, "m") , (4176, 0, "m") , (4097, 0, "m") , (4048, 0, "m") , (3653, 0, "m") , (3416, 0, "m") , (3294, 0, "m") , (3250, 0, "m") , (2299, 0, "m") , (2126, 0, "m") , (2087, 0, "m") , (2046, 0, "m") , (1933, 0, "m") , (1879, 0, "m") , (1791, 0, "m") , (1660, 0, "m") , (3230, 0, "t") , (3231, 0, "e") , (3232, 0, "m") , (3400, 0, "t") , (3401, 0, "e") , (3402, 0, "m") , (55968, 0, "t") , (11008, 0, "t") , (55970, 0, "e") , (11009, 0, "e") , (55972, 0, "m") , (11010, 0, "m") , (57875, 0, "t") , (12090, 0, "t") , (57877, 0, "e") , (12091, 0, "e") , (57879, 0, "m") , (12092, 0, "m") , (17925, 0, "t") , (16800, 0, "t") , (17927, 0, "e") , (16801, 0, "e") , (17929, 0, "m") , (16802, 0, "m") , (17223, 0, "t") , (17224, 0, "e") , (17225, 0, "m") , (17644, 0, "t") , (17645, 0, "e") , (17646, 0, "m") , (17647, 0, "8") , (17647, 1, "") , (20235, 0, "tem") , (20279, 0, "tem") , (20360, 0, "tem") , (20880, 0, "tem") , (21158, 0, "tem") , (21185, 0, "tem") , (22561, 0, "tem") , (22618, 0, "tem") , (26088, 0, "tem") , (34142, 0, "tem") , (35341, 0, "tem") , (35438, 0, "tem") , (35976, 0, "tem") , (36081, 0, "tem") , (39321, 0, "tem") , (39390, 0, "tem") , (42056, 0, "tem") , (45682, 0, "tem") , (48074, 0, "tem") , (51774, 0, "tem") , (52744, 0, "tem") , (53176, 0, "tem") , (54563, 0, "tem") , (54998, 0, "tem") , (55996, 0, "tem") , (55996, 3, "") , (57692, 0, "tem") , (57474, 0, "tem") , (57145, 0, "tem") , (56539, 0, "tem") , (55996, 0, "tem") , (57498, 0, "tem") , (57166, 0, "tem") , (56011, 0, "tem") , (56984, 0, "tem") , (58017, 0, "tem") , (39320, 4, "I") , (39321, 0, "t") , (39322, 0, "e") , (39323, 0, "r") , (2720, 0, " ") , (2721, 0, "w") , (2722, 0, "h") , (2723, 0, "e") , (2724, 0, "r") , (2725, 0, "e") , (2726, 0, " ") , (2727, 0, "S") , (2728, 0, "e") , (2729, 0, "l") , (2730, 0, "f") , (2731, 0, ":") , (2732, 0, " ") , (2733, 0, "L") , (2734, 0, "S") , (2734, 1, "") , (2733, 1, "") , (2733, 0, "S") , (2734, 0, "i") , (2735, 0, "z") , (2736, 0, "e") , (2737, 0, "d") , (2720, 18, "") , (2374, 0, " where Self: Sized") , (2374, 18, ":") , (2375, 0, " ") , (2376, 0, "S") , (2377, 0, "i") , (2378, 0, "z") , (2379, 0, "e") , (2380, 0, "d") , (35350, 1, "") , (35349, 1, "") , (35348, 1, "") , (35348, 0, "t") , (35349, 0, "e") , (35350, 0, "r") , (56965, 30, "") , (56954, 11, "") , (56907, 0, ": ExactSizeIterator") , (56907, 30, "") , (56954, 0, " where Iter") , (56965, 0, ": ExactSizeIterator") , (56913, 0, "x") , (56995, 0, "x") , (56935, 0, "x") , (56955, 0, "x") , (57042, 0, "x") , (57042, 1, "") , (56955, 1, "") , (56935, 1, "") , (56995, 1, "") , (56913, 1, "") , (35348, 3, "") , (35348, 0, "ter") , (56961, 4, "I") , (56903, 4, "I") , (57010, 4, "I") , (56927, 4, "I") , (51751, 4, "I") , (51711, 4, "I") , (51618, 4, "I") , (39367, 4, "I") , (39327, 4, "I") , (39268, 4, "I") , (35424, 4, "I") , (35347, 4, "I") , (35288, 4, "I") , (31657, 0, "&") , (2999, 4, "") , (2998, 1, "") , (2997, 1, "") , (3000, 0, "\n") , (3001, 0, "\n") , (3001, 0, "i") , (3002, 0, "m") , (3003, 0, "p") , (3004, 0, "l") , (3005, 0, " ") , (3006, 0, "L") , (3007, 0, "i") , (3008, 0, "s") , (3009, 0, "t") , (3010, 0, "I") , (3011, 0, "t") , (3012, 0, "e") , (3013, 0, "m") , (3014, 0, " ") , (3015, 0, "f") , (3016, 0, "o") , (3017, 0, "r") , (3018, 0, " ") , (3005, 0, "<") , (3006, 0, "T") , (3007, 0, ">") , (3021, 1, "") , (3017, 0, "<") , (3018, 0, "T") , (3019, 0, ">") , (3024, 0, " ") , (3025, 0, "T") , (3026, 0, ":") , (3027, 0, " ") , (3028, 0, "S") , (3029, 0, "i") , (3030, 0, "z") , (3031, 0, "e") , (3032, 0, "d") , (3033, 0, " ") , (3034, 0, "{") , (3035, 0, "}") , (3021, 3, "w") , (3022, 0, "h") , (3023, 0, "e") , (3024, 0, "r") , (3025, 0, "e") , (3020, 0, " ") , (3021, 0, "f") , (3022, 0, "o") , (3023, 0, "r") , (3024, 0, " ") , (3025, 0, "T") , (3019, 1, "") , (3018, 1, "") , (3017, 1, "") , (3000, 42, "") , (2853, 1, "") , (2853, 0, "s") , (55959, 0, ",") , (55960, 0, " ") , (55961, 0, "R") , (55962, 0, "h") , (55963, 0, "s") , (55964, 0, ":") , (55965, 0, " ") , (55966, 0, "?") , (55967, 0, "S") , (55968, 0, "i") , (55969, 0, "z") , (55970, 0, "e") , (55971, 0, "d") , (55972, 0, " ") , (55973, 0, "+") , (55974, 0, " ") , (55974, 1, "") , (55973, 1, "") , (55972, 0, " ") , (55973, 0, "=") , (55974, 0, " ") , (55975, 0, "I") , (55976, 0, "t") , (55977, 0, "e") , (55978, 0, "m") , (55979, 1, "") , (56020, 0, "<") , (56021, 0, "R") , (56022, 0, "h") , (56023, 0, "s") , (56024, 0, ">") , (56063, 4, "R") , (56064, 0, "h") , (56065, 0, "s") , (55972, 7, "") , (55959, 13, "") , (56026, 0, "<") , (56027, 0, ", Rhs: ?Sized") , (56040, 0, ">") , (56028, 1, "") , (56027, 1, "") , (55978, 27, "") , (56042, 0, " ") , (56043, 0, " where Item: PartialEq") , (56043, 1, "") , (56003, 8, "") , (6963, 45, "") , (6962, 1, "") , (6934, 34, " impl ListItem for Item { }") , (6962, 1, "") , (2999, 0, "\n") , (3000, 0, "\n") , (3001, 0, "/") , (3002, 0, "/") , (3003, 0, " ") , (3004, 0, "B") , (3005, 0, "l") , (3006, 0, "a") , (3007, 0, "n") , (3008, 0, "k") , (3009, 0, "e") , (3010, 0, "t") , (3011, 0, " ") , (3012, 0, "i") , (3013, 0, "m") , (3014, 0, "p") , (3015, 0, "l") , (3016, 0, "e") , (3017, 0, "m") , (3018, 0, "e") , (3019, 0, "n") , (3020, 0, "t") , (3021, 0, "a") , (3022, 0, "t") , (3023, 0, "i") , (3024, 0, "o") , (3025, 0, "n") , (3026, 0, "s") , (3027, 0, " ") , (3028, 0, "f") , (3029, 0, "o") , (3030, 0, "r") , (3031, 0, " ") , (3032, 0, "b") , (3033, 0, "u") , (3034, 0, "i") , (3035, 0, "l") , (3036, 0, "t") , (3037, 0, "i") , (3038, 0, "n") , (3032, 0, "s") , (3033, 0, "o") , (3034, 0, "m") , (3035, 0, "e") , (3036, 0, " ") , (3037, 0, "c") , (3038, 0, "o") , (3039, 0, "m") , (3040, 0, "m") , (3041, 0, "o") , (3042, 0, "n") , (3043, 0, " ") , (3051, 0, " ") , (3052, 0, "t") , (3053, 0, "y") , (3054, 0, "p") , (3055, 0, "e") , (3056, 0, "s") , (3057, 0, ";") , (3058, 0, " ") , (3058, 1, "") , (3057, 1, "") , (3057, 0, ",") , (3058, 0, " ") , (3059, 0, "b") , (3060, 0, "e") , (3061, 0, "c") , (3062, 0, "a") , (3063, 0, "u") , (3064, 0, "s") , (3065, 0, "e") , (3066, 0, " ") , (3067, 0, "i") , (3068, 0, "t") , (3069, 0, "s") , (3070, 0, " ") , (3071, 0, "i") , (3072, 0, "m") , (3073, 0, "p") , (3074, 0, "o") , (3075, 0, "s") , (3076, 0, "s") , (3077, 0, "i") , (3078, 0, "b") , (3079, 0, "l") , (3080, 0, "e") , (3081, 0, " ") , (3082, 0, "t") , (3083, 0, "o") , (3084, 0, " ") , (3085, 0, "a") , (3086, 0, "d") , (3087, 0, "d") , (3088, 0, " ") , (3089, 0, "t") , (3090, 0, "h") , (3091, 0, "e") , (3092, 0, "s") , (3093, 0, "e") , (3094, 0, " ") , (3095, 0, "l") , (3096, 0, "a") , (3097, 0, "t") , (3098, 0, "e") , (3099, 0, "r") , (3100, 0, ".") , (3101, 0, " ") , (3102, 0, "T") , (3103, 0, "h") , (3104, 0, "e") , (3105, 0, "s") , (3106, 0, "e") , (3107, 0, " ") , (3108, 0, "a") , (3109, 0, "l") , (3110, 0, "l") , (3111, 0, " ") , (3112, 0, "u") , (3113, 0, "s") , (3114, 0, "e") , (3115, 0, " ") , (3101, 15, "") , ( 3001 , 100 , "// Blanket implementations for some common builtin types, because its impossible\n// to add these later." ) , (3104, 0, "\n") , (3105, 0, "i") , (3106, 0, "m") , (3107, 0, "p") , (3108, 0, "l") , (3109, 0, " ") , (3110, 0, "L") , (3111, 0, "i") , (3112, 0, "s") , (3113, 0, "t") , (3114, 0, "I") , (3115, 0, "t") , (3116, 0, "e") , (3117, 0, "m") , (3118, 0, " ") , (3119, 0, "f") , (3120, 0, "o") , (3121, 0, "r") , (3122, 0, " ") , (3123, 0, "u") , (3124, 0, "8") , (3125, 0, " ") , (3126, 0, "{") , (3127, 0, "}") , (3105, 0, "impl ListItem for u8 {}\n") , (3129, 0, "impl ListItem for u8 {}\n") , (3153, 0, "impl ListItem for u8 {}\n") , (3177, 0, "impl ListItem for u8 {}\n") , (3147, 1, "") , (3147, 0, "s") , (3172, 1, "") , (3172, 0, "1") , (3173, 0, "6") , (3197, 1, "") , (3197, 0, "3") , (3198, 0, "2") , (3222, 1, "") , (3221, 1, "") , (3221, 0, "f") , (3222, 0, "3") , (3223, 0, "2") , (3203, 0, "impl ListItem for f32 {}\n") , (3248, 1, "") , (3247, 1, "") , (3247, 0, "6") , (3248, 0, "4") , (3128, 24, "") , (3129, 0, "impl ListItem for u16 {}\n") , (3172, 1, "") , (3172, 0, "s") , (3179, 0, "impl ListItem for u32 {}\n") , (3222, 1, "") , (3222, 0, "s") , (3172, 1, "") , (3172, 0, "i") , (3222, 1, "") , (3222, 0, "i") , (3105, 0, "impl ListItem for u8 {}\n") , (3147, 1, "") , (3147, 0, "i") , (3128, 0, "\nimpl ListItem for u8 {}") , (3124, 1, "") , (3123, 1, "") , (3123, 0, "(") , (3124, 0, ")") , (3128, 0, "\n") , (3128, 1, "") , (3105, 0, "impl ListItem for () {}\n") , (3133, 0, "<") , (3134, 0, "X") , (3135, 0, ",") , (3136, 0, " ") , (3137, 0, "Y") , (3138, 0, ">") , (3154, 0, "X") , (3155, 0, ",") , (3156, 0, " ") , (3157, 0, "Y") , (3129, 0, "impl ListItem for (X, Y) {}\n") , (3172, 0, ",") , (3173, 0, " ") , (3174, 0, "Z") , (3195, 0, ",") , (3196, 0, " ") , (3197, 0, "Z") , (3163, 0, "impl ListItem for (X, Y, Z) {}\n") , (3207, 9, "") , (3207, 0, "<") , (3208, 0, "V") , (3209, 0, ">") , (3224, 9, "") , (3224, 0, "O") , (3225, 0, "p") , (3226, 0, "t") , (3227, 0, "i") , (3228, 0, "o") , (3229, 0, "n") , (3230, 0, "<") , (3231, 0, "V") , (3232, 0, ">") , (3236, 0, "\n") , (3203, 0, "impl ListItem for Option {}\n") , (3242, 1, "") , (3242, 0, "E") , (3243, 0, ",") , (3244, 0, " ") , (3245, 0, "R") , (3261, 6, "R") , (3262, 0, "e") , (3263, 0, "s") , (3264, 0, "u") , (3265, 0, "l") , (3266, 0, "t") , (3268, 1, "") , (3268, 0, "E") , (3269, 0, ",") , (3270, 0, " ") , (3271, 0, "R") , (3268, 4, "T") , (3242, 4, "T") , (3266, 0, ",") , (3243, 0, ",") , (3268, 0, " ") , (3244, 0, " ") , (3270, 0, "E") , (3245, 0, "E") , (3104, 0, " ") , (3105, 0, "T") , (3106, 0, "h") , (3107, 0, "e") , (3108, 0, "s") , (3109, 0, "e") , (3110, 0, " ") , (3111, 0, "a") , (3112, 0, "l") , (3113, 0, "l") , (3114, 0, " ") , (3115, 0, "m") , (3116, 0, "a") , (3117, 0, "k") , (3118, 0, "e") , (3119, 0, " ") , (3120, 0, "e") , (3121, 0, "a") , (3122, 0, "c") , (3123, 0, "h") , (3124, 0, " ") , (3115, 10, "s") , (3116, 0, "e") , (3116, 1, "") , (3115, 1, "") , (3115, 0, "u") , (3116, 0, "s") , (3117, 0, "e") , (3118, 0, " ") , (3115, 4, "m") , (3116, 0, "a") , (3117, 0, "k") , (3118, 0, "e") , (3119, 0, " ") , (3120, 0, "e") , (3121, 0, "v") , (3122, 0, "e") , (3123, 0, "r") , (3124, 0, "y") , (3125, 0, "t") , (3126, 0, "h") , (3127, 0, "i") , (3128, 0, "n") , (3129, 0, "g") , (3130, 0, " ") , (3131, 0, "a") , (3131, 1, "") , (3131, 0, "h") , (3132, 0, "a") , (3133, 0, "v") , (3134, 0, "e") , (3135, 0, " ") , (3136, 0, "a") , (3137, 0, " ") , (3138, 0, "s") , (3139, 0, "i") , (3140, 0, "z") , (3141, 0, "e") , (3142, 0, " ") , (3143, 0, "o") , (3144, 0, "f") , (3145, 0, " ") , (3146, 0, "1") , (3147, 0, ".") , (3111, 8, "m") , (3112, 0, "a") , (3113, 0, "k") , (3114, 0, "e") , (3115, 0, " ") , (3116, 0, "e") , (3117, 0, "v") , (3118, 0, "e") , (3119, 0, "r") , (3120, 0, "y") , (3121, 0, " ") , (3122, 0, "i") , (3123, 0, "t") , (3124, 0, "e") , (3125, 0, "m") , (3126, 11, "") , ( 3318 , 0 , "impl ListItem for u8 {}\nimpl ListItem for i8 {}\nimpl ListItem for u16 {}\nimpl ListItem for i16 {}\nimpl ListItem for u32 {}\nimpl ListItem for i32 {}\nimpl ListItem for f32 {}\nimpl ListItem for f64 {}\n" ) , (3516, 0, "\n") , (3535, 0, "&") , (3560, 0, "&") , (3710, 0, "&") , (3685, 0, "&") , (3660, 0, "&") , (3635, 0, "&") , (3610, 0, "&") , (3585, 0, "&") , ( 3169 , 0 , "impl ListItem for (X, Y) {}\nimpl ListItem for (X, Y, Z) {}\nimpl ListItem for Option {}\nimpl ListItem for Result {}\n" ) , (3449, 0, "&") , (3412, 0, "&") , (3378, 0, "&") , (3341, 0, "&") , (3316, 0, "\n") , (4315, 0, "\n ") , (4320, 0, "f") , (4321, 0, "n") , (4322, 0, " ") , (4323, 0, "n") , (4324, 0, "o") , (4325, 0, "t") , (4326, 0, "i") , (4327, 0, "f") , (4328, 0, "y") , (4329, 0, "_") , (4330, 0, "r") , (4331, 0, "e") , (4332, 0, "m") , (4333, 0, "o") , (4334, 0, "v") , (4335, 0, "e") , (4336, 0, "d") , (4254, 0, "_") , (4255, 0, "c") , (4256, 0, "h") , (4257, 0, "a") , (4258, 0, "n") , (4259, 0, "g") , (4260, 0, "e") , (4261, 0, "d") , (4345, 0, "(") , (4346, 0, "*") , (4346, 1, "") , (4346, 0, "&") , (4347, 0, "m") , (4348, 0, "u") , (4349, 0, "t") , (4350, 0, " ") , (4351, 0, "s") , (4352, 0, "e") , (4353, 0, "l") , (4354, 0, "f") , (4355, 0, " ") , (4355, 1, "") , (4355, 0, ",") , (4356, 0, " ") , (4357, 0, "_") , (4328, 30, "") , (4142, 0, "\n ") , (4147, 0, "fn notify_removed(&mut self, _") , (4176, 1, "") , (4176, 0, "k") , (4177, 0, "t") , (4178, 0, "e") , (4179, 0, "m") , (4179, 1, "") , (4178, 1, "") , (4177, 1, "") , (4176, 1, "") , (4176, 0, "i") , (4177, 0, "t") , (4178, 0, "e") , (4179, 0, "m") , (4180, 0, "s") , (4181, 0, ":") , (4182, 0, " ") , (4183, 0, "*") , (4183, 1, "") , (4183, 0, "&") , (4184, 0, "[") , (4185, 0, "I") , (4186, 0, "t") , (4187, 0, "e") , (4188, 0, "m") , (4189, 0, "]") , (4190, 0, ")") , (4191, 0, ";") , (4304, 8, "") , (4370, 0, "fn notify_removed(&mut self, items: &[Item]);") , (4415, 0, " ") , (4416, 0, "{") , (4417, 0, "}") , (4414, 1, "") , (4399, 0, "_") , (47346, 0, ", notify: &mut N") , (48739, 0, "\n ") , (48756, 0, "n") , (48757, 0, "o") , (48758, 0, "t") , (48759, 0, "i") , (48760, 0, "f") , (48761, 0, "y") , (48762, 0, ".") , (48763, 0, "notify_removed(items: &[Item])") , (48778, 14, "c") , (48779, 0, "[") , (48778, 2, "item_idx..item_idx + removed_here") , (48812, 0, ";") , (48778, 0, "c") , (48779, 0, "[") , (48813, 0, "]") , (48778, 0, " ") , (48778, 0, "m") , (48779, 0, "a") , (48780, 0, "y") , (48781, 0, "b") , (48778, 4, "maybeinit_slice_get_ref(slice: &[MaybeUninit])") , (48802, 24, "") , (48802, 1, "") , (48802, 1, "") , (48839, 0, "\n ") , (48856, 0, "0") , (48856, 1, "") , (48852, 4, "") , (48848, 4, "") , (48844, 4, "") , (48840, 4, "") , (48839, 1, "") , (48839, 0, ")") , (48802, 0, "&") , (48739, 0, "\n ") , (48756, 0, "i") , (48757, 0, "f") , (48758, 0, " ") , (48759, 0, "(") , (48760, 0, "n") , (48761, 0, "o") , (48762, 0, "t") , (48763, 0, "i") , (48763, 1, "") , (48762, 1, "") , (48761, 1, "") , (48760, 1, "") , (48759, 1, "") , (48759, 0, "n") , (48760, 0, "o") , (48761, 0, "t") , (48762, 0, "i") , (48763, 0, "f") , (48764, 0, "y") , (48765, 0, ".") , (48766, 0, "n") , (48767, 0, "o") , (48768, 0, "t") , (48769, 0, "i") , (48770, 0, "f") , (48771, 0, "i") , (48766, 6, "") , (48765, 1, "") , (48765, 0, ".") , (48759, 7, "N") , (48760, 0, ":") , (48761, 0, ":") , (48762, 0, "notifications_used()") , (48782, 0, " ") , (48783, 0, "{") , (48887, 0, "\n ") , (48888, 16, " }") , (48801, 0, " ") , (48784, 0, "\n ") , (48784, 21, "") , (48739, 0, "\n ") , (48756, 0, "/") , (48757, 0, "/") , (48758, 0, " ") , (48759, 0, "G") , (48760, 0, "u") , (48761, 0, "a") , (48762, 0, "r") , (48763, 0, "d") , (48764, 0, " ") , (48765, 0, "m") , (48766, 0, "a") , (48767, 0, "y") , (48768, 0, " ") , (48769, 0, "h") , (48770, 0, "a") , (48771, 0, "v") , (48772, 0, "e") , (48773, 0, " ") , (48774, 0, "n") , (48775, 0, "o") , (48776, 0, " ") , (48777, 0, "e") , (48778, 0, "f") , (48779, 0, "f") , (48780, 0, "e") , (48781, 0, "c") , (48782, 0, "c") , (48783, 0, "t") , (48783, 1, "") , (48782, 1, "") , (48782, 0, "t") , (48783, 0, ".") , (48784, 0, " ") , (48785, 0, "N") , (48786, 0, "o") , (48787, 0, "t") , (48788, 0, " ") , (48789, 0, "s") , (48790, 0, "u") , (48791, 0, "r") , (48792, 0, "e") , (48793, 0, " ") , (48794, 0, "h") , (48795, 0, "o") , (48796, 0, "w") , (48797, 0, " ") , (4244, 0, "\n ") , (4249, 0, "c") , (4250, 0, "o") , (4251, 0, "n") , (4252, 0, "s") , (4253, 0, "t") , (4254, 0, " ") , (4255, 0, "f") , (4256, 0, "o") , (4257, 0, "o") , (4258, 0, ":") , (4259, 0, " ") , (4260, 0, "b") , (4261, 0, "o") , (4262, 0, "o") , (4263, 0, "l") , (4264, 0, ",") , (4264, 1, "") , (4264, 0, ";") , (4245, 20, "") , (3917, 0, "\n ") , (3922, 0, " const foo: bool;") , (3918, 8, " ") , (3938, 0, "\n ") , (3939, 4, "") , (3928, 3, "n") , (3929, 0, "o") , (3930, 0, "t") , (3931, 0, "i") , (3932, 0, "f") , (3933, 0, "i") , (3928, 6, "notifications_used()") , (3947, 1, "") , (3946, 1, "") , (3954, 154, "") , (4133, 2, "c") , (4134, 0, "n") , (4134, 1, "") , (4134, 0, "o") , (4135, 0, "n") , (4136, 0, "s") , (4137, 0, "t") , (4127, 1, "") , (3952, 0, " ") , (3953, 0, "=") , (3954, 0, " ") , (3955, 0, "t") , (3956, 0, "r") , (3957, 0, "u") , (3958, 0, "e") , (4139, 44, "const notifications_used: bool = true;") , (4172, 5, "f") , (4173, 0, "a") , (4174, 0, "l") , (4175, 0, "s") , (4176, 0, "e") , (4177, 0, ";") , (4163, 6, "") , (4139, 6, "") , (4139, 0, "const ") , (4163, 0, ": bool") , (3928, 18, "u") , (3929, 0, "s") , (3930, 0, "e") , (3931, 0, "d") , (4131, 18, "u") , (4132, 0, "s") , (4133, 0, "e") , (4134, 0, "d") , (25340, 20, "u") , (25341, 0, "s") , (25342, 0, "e") , (25343, 0, "d") , (48665, 20, "u") , (48666, 0, "s") , (48667, 0, "e") , (48668, 0, "d") , (55432, 0, "&") , (55432, 1, "") , (55432, 0, ",") , (55433, 0, " ") , (55434, 0, "n") , (55435, 0, "o") , (55436, 0, "t") , (55437, 0, "i") , (55438, 0, "f") , (55439, 0, "y") , (48584, 59, "") , (48737, 0, "\n ") , (49821, 0, "\n ") , (48738, 16, "") , (49822, 0, "\n ") , (49806, 16, "") , ( 49823 , 0 , " if N::used {\n notify.notify_removed(maybeinit_slice_get_ref(&c[item_idx..item_idx + removed_here]));\n }\n" ) , (49807, 32, " ") , (49960, 1, "") , (49878, 62, "") , (49878, 0, "*") , (49879, 0, "(") , (49880, 0, "e") , (49881, 0, ")") , (49881, 1, "") , (49880, 1, "") , (49879, 1, "") , (49878, 1, "") , (49878, 0, "*") , (49878, 1, "") , (49878, 0, "(") , (49879, 0, "E") , (49879, 1, "") , (49879, 0, "*") , (49880, 0, "e") , (49881, 0, ")") , (49882, 0, ".") , (49883, 0, "g") , (49884, 0, "e") , (49885, 0, "t") , (49886, 0, "_") , (49887, 0, "c") , (49888, 0, "o") , (49889, 0, "n") , (49890, 0, "t") , (49891, 0, "e") , (49892, 0, "n") , (49893, 0, "t") , (49894, 0, "(") , (49895, 0, ")") , (49883, 11, "c") , (49884, 0, "o") , (49885, 0, "n") , (49886, 0, "t") , (49887, 0, "e") , (49888, 0, "n") , (49889, 0, "t") , (49883, 7, "content_slice") , (49829, 4, "USED") , (48606, 4, "USED") , (25340, 4, "USED") , (3928, 4, "USED") , (4131, 4, "U") , (4132, 0, "S") , (4133, 0, "E") , (4134, 0, "D") , (58117, 0, "\n") , (58117, 0, "\n") , (58118, 0, "i") , (58119, 0, "m") , (58120, 0, "p") , (58121, 0, "l") , (58122, 0, "<") , (58123, 0, "I") , (58123, 1, "") , (58122, 1, "") , (58121, 1, "") , (58120, 1, "") , (58119, 1, "") , (58118, 1, "") , (58118, 0, "i") , (58119, 0, "m") , (58120, 0, "p") , (58121, 0, "l") , (58122, 0, "<") , (58123, 0, "I") , (58124, 0, "t") , (58125, 0, "e") , (58126, 0, "m") , (58127, 0, ":") , (58128, 0, " ") , (58129, 0, "L") , (58130, 0, "i") , (58131, 0, "s") , (58132, 0, "t") , (58129, 4, "ListItem") , (58137, 0, ">") , (58138, 0, " ") , (58139, 0, "F") , (58140, 0, "r") , (58141, 0, "o") , (58142, 0, "m") , (58143, 0, "I") , (58144, 0, "t") , (58145, 0, "e") , (58146, 0, "r") , (58147, 0, "a") , (58148, 0, "t") , (58149, 0, "o") , (58150, 0, "r") , (58139, 0, "i") , (58140, 0, "t") , (58141, 0, "e") , (58142, 0, "r") , (58143, 0, ":") , (58144, 0, ":") , (58139, 0, "s") , (58140, 0, "t") , (58141, 0, "d") , (58142, 0, ":") , (58143, 0, ":") , (58162, 0, " ") , (58163, 0, "f") , (58164, 0, "o") , (58165, 0, "r") , (58166, 0, " ") , (58167, 0, "S") , (58168, 0, "k") , (58169, 0, "i") , (58170, 0, "p") , (58167, 4, "SkipList") , (58175, 0, "<") , (58176, 0, "I") , (58177, 0, "t") , (58178, 0, "e") , (58179, 0, "m") , (58180, 0, ">") , (58181, 0, " ") , (58182, 0, "{") , (58183, 0, "\n ") , (58188, 0, "\n ") , (58184, 4, "") , (58185, 4, "}") , (58139, 5, "") , (58179, 0, "fn from_iter>(iter: T) -> Self;") , (58179, 0, " ") , (58239, 1, "") , (58239, 0, " ") , (58240, 0, "{") , (58241, 0, "\n ") , (58250, 0, "\n ") , (58242, 8, "") , (58243, 8, " }") , (58242, 0, " ") , (58242, 8, "") , (58219, 1, "") , (58219, 0, "I") , (58220, 0, "t") , (58221, 0, "e") , (58222, 0, "m") , (58218, 1, "") , (58216, 1, "") , (58216, 0, " ") , (58218, 0, " ") , (58245, 0, " ") , (58253, 0, "S") , (58254, 0, "k") , (58255, 0, "i") , (58256, 0, "p") , (58253, 4, "SkipList") , (58261, 0, "<") , (58261, 1, "") , (58261, 0, ":") , (58262, 0, ":") , (58263, 0, "n") , (58264, 0, "e") , (58265, 0, "w") , (58265, 1, "") , (58264, 1, "") , (58263, 1, "") , (58263, 0, "from(iter: I)") , (58268, 7, "i") , (58269, 0, "t") , (58270, 0, "e") , (58271, 0, "r") , (58267, 0, "_") , (58268, 0, "i") , (58269, 0, "t") , (58270, 0, "e") , (58271, 0, "r") , (58157, 0, "<") , (58158, 0, "I") , (58159, 0, "t") , (58160, 0, "e") , (58161, 0, "m") , (58162, 0, ">") , (58269, 9, "n") , (58270, 0, "e") , (58271, 0, "w") , (58272, 0, "_") , (58273, 0, "f") , (58274, 0, "r") , (58275, 0, "o") , (58276, 0, "m") , (58269, 8, "new_from_iter") , (58182, 0, " ") , (58183, 0, "w") , (58184, 0, "h") , (58185, 0, "e") , (58186, 0, "r") , (58187, 0, "e") , (58188, 0, " ") , (58182, 7, "") , (58295, 0, "// ") , (58289, 0, "// ") , (58251, 0, "// ") , (58185, 0, "// ") , (58118, 0, "// ") , (58117, 0, "\n") , (58118, 0, "/") , (58119, 0, "/") , (58120, 0, " ") , (58121, 0, "N") , (58122, 0, "e") , (58123, 0, "e") , (58124, 0, "d") , (58125, 0, "s") , (58126, 0, " ") , (58127, 0, "m") , (58128, 0, "e") , (58129, 0, " ") , (58130, 0, "t") , (58131, 0, "o") , (58132, 0, " ") , (58133, 0, "r") , (58134, 0, "e") , (58135, 0, "l") , (58136, 0, "a") , (58137, 0, "x") , (58138, 0, " ") , (58139, 0, "t") , (58140, 0, "h") , (58141, 0, "e") , (58142, 0, " ") , (58143, 0, "E") , (58144, 0, "x") , (58145, 0, "a") , (58146, 0, "c") , (58147, 0, "t") , (58148, 0, "I") , (58148, 1, "") , (58148, 0, "S") , (58149, 0, "i") , (58150, 0, "z") , (58151, 0, "e") , (58152, 0, "I") , (58153, 0, "t") , (58154, 0, "e") , (58155, 0, "r") , (58156, 0, "a") , (58157, 0, "t") , (58158, 0, "o") , (58159, 0, "r") , (58160, 0, " ") , (58161, 0, "c") , (58162, 0, "o") , (58163, 0, "n") , (58164, 0, "s") , (58165, 0, "t") , (58166, 0, "r") , (58167, 0, "a") , (58168, 0, "i") , (58169, 0, "t") , (58170, 0, "n") , (58170, 1, "") , (58169, 1, "") , (58169, 0, "n") , (58170, 0, "t") , (58171, 0, " ") , (58172, 0, "o") , (58173, 0, "n") , (58174, 0, " ") , (58175, 0, "i") , (58176, 0, "n") , (58177, 0, "s") , (58178, 0, "e") , (58179, 0, "r") , (58180, 0, "t") , (58181, 0, ".") , (59202, 0, "O") , (59203, 0, "p") , (59204, 0, "t") , (59205, 0, "i") , (59206, 0, "o") , (59207, 0, "n") , (59208, 0, "<") , (59214, 0, ">") , (59795, 0, "\n ") , (59804, 0, "i") , (59805, 0, "f") , (59806, 0, " ") , (59807, 0, "l") , (59808, 0, "e") , (59809, 0, "t") , (59810, 0, " ") , (59811, 0, "s") , (59812, 0, "e") , (59813, 0, "l") , (59814, 0, "f") , (59815, 0, ".") , (59816, 0, "r") , (59817, 0, "e") , (59818, 0, "m") , (59819, 0, "a") , (59816, 4, "remaining_items") , (59810, 0, " ") , (59811, 0, "r") , (59812, 0, " ") , (59813, 0, "=") , (59835, 0, " ") , (59836, 0, "{") , (59846, 0, " ") , (59900, 0, "\n ") , (59901, 12, " }") , (59910, 0, " ") , (59911, 0, "e") , (59912, 0, "l") , (59913, 0, "s") , (59914, 0, "e") , (59915, 0, " ") , (59916, 0, "{") , (59917, 0, "\n ") , (59930, 0, "(") , (59931, 0, "0") , (59932, 0, ",") , (59933, 0, " ") , (59934, 0, "N") , (59935, 0, "o") , (59936, 0, "n") , (59937, 0, "e") , (59938, 0, ")") , (59939, 0, "\n ") , (59940, 12, " }") , (59878, 20, "r") , (59851, 20, "r") , (59811, 0, "S") , (59812, 0, "o") , (59813, 0, "m") , (59814, 0, "e") , (59815, 0, "(") , (59817, 0, ")") , (59232, 1, "") , (59232, 0, ",") , (59233, 0, " ") , (59234, 0, "o") , (59234, 1, "") , (59234, 0, "i") , (59235, 0, "f") , (59236, 0, " ") , (59237, 0, "k") , (59238, 0, "n") , (59239, 0, "o") , (59240, 0, "w") , (59241, 0, "n") , (59242, 0, ".") , (24805, 0, "S") , (24806, 0, "o") , (24807, 0, "m") , (24808, 0, "e") , (24809, 0, "(") , (24826, 0, ")") , (24843, 0, "\n ") , (24848, 0, "\n ") , (24844, 4, "") , (24849, 0, "f") , (24850, 0, "n") , (24851, 0, " ") , (24852, 0, "i") , (24853, 0, "t") , (24854, 0, "e") , (24855, 0, "r") , (24856, 0, "_") , (24857, 0, "f") , (24858, 0, "r") , (24859, 0, "o") , (24860, 0, "m") , (24861, 0, "_") , (24862, 0, "n") , (24863, 0, "o") , (24864, 0, "d") , (24865, 0, "e") , (24849, 0, "p") , (24850, 0, "u") , (24851, 0, "b") , (24852, 0, "(") , (24853, 0, "c") , (24854, 0, "r") , (24855, 0, "a") , (24856, 0, "t") , (24857, 0, "e") , (24858, 0, ")") , (24859, 0, " ") , (24877, 0, "(") , (24843, 35, "") , (12430, 0, "\n ") , (12435, 0, "\n ") , (12431, 4, "") , ( 12436 , 0 , "\n pub fn iter(&self) -> ListItemIter {\n ListItemIter {\n node: Some(&self.head),\n index: 0,\n remaining_items: Some(self.len_items())\n }\n }" ) , (12432, 4, "") , (12431, 1, "") , (12430, 1, "") , (12430, 0, "\n ") , (12443, 0, "(") , (12431, 4, "") , (12440, 0, "c") , (12441, 0, "r") , (12442, 0, "a") , (12443, 0, "t") , (12444, 0, "e") , (12445, 0, ")") , (12460, 0, ",") , (12461, 0, " ") , (12462, 0, "u") , (12463, 0, "s") , (12464, 0, "i") , (12465, 0, "z") , (12466, 0, "e") , (12462, 0, "i") , (12463, 0, "n") , (12464, 0, "d") , (12465, 0, "e") , (12466, 0, "x") , (12467, 0, ":") , (12468, 0, " ") , (12462, 0, "l") , (12463, 0, "o") , (12464, 0, "c") , (12465, 0, "a") , (12466, 0, "l") , (12467, 0, "_") , (12557, 5, "") , (12611, 22, "N") , (12612, 0, "o") , (12613, 0, "n") , (12614, 0, "e") , (12614, 1, "") , (12614, 0, "e") , (12580, 1, "") , (12579, 1, "") , (12579, 0, "l") , (12580, 0, "o") , (12581, 0, "c") , (12582, 0, "a") , (12583, 0, "l") , (12579, 5, "local_index") , (12590, 0, ",") , (3594, 0, "impl ListItem for i32 {}\n") , (3619, 0, "impl ListItem for i32 {}\n") , (3637, 3, "u") , (3638, 0, "s") , (3639, 0, "i") , (3640, 0, "z") , (3641, 0, "e") , (3664, 3, "i") , (3665, 0, "s") , (3666, 0, "i") , (3667, 0, "z") , (3668, 0, "e") , (3852, 0, "impl ListItem for &i32 {}\n") , (3878, 0, "impl ListItem for &i32 {}\n") , (3897, 3, "u") , (3898, 0, "s") , (3899, 0, "i") , (3900, 0, "z") , (3901, 0, "e") , (3925, 3, "i") , (3926, 0, "s") , (3927, 0, "i") , (3928, 0, "z") , (3929, 0, "e") , (50203, 1, "") , (50199, 3, "t") , (50197, 1, "del") , (50192, 4, "n") , (50190, 1, "") , (48980, 1, "") , (48976, 3, "t") , (48974, 1, "del") , (48969, 4, "n") , (48967, 1, "") , (4356, 1, "") , (4352, 3, "t") , (4350, 1, "del") , (4345, 4, "n") , (4343, 1, "") , (4149, 1, "") , (4145, 3, "t") , (4143, 1, "del") , (4138, 4, "n") , (4136, 1, "") , (55274, 3, "") , (55272, 1, "_se") , (55271, 0, "o") , (43854, 3, "") , (43852, 1, "_se") , (43851, 0, "o") , (40082, 3, "") , (40080, 1, "_se") , (40079, 0, "o") , (4266, 3, "") , (4264, 1, "_se") , (4263, 0, "o") , (4068, 3, "") , (4066, 1, "_se") , (4065, 0, "o") , (2354, 0, "\n") , (2355, 0, "\n") , ( 2356 , 0 , "//! Utilities for formatting and printing strings.\n\n#![stable(feature = \"rust1\", since = \"1.0.0\")]\n\nuse crate::cell::{Cell, Ref, RefCell, RefMut, UnsafeCell};\nuse crate::marker::PhantomData;\nuse crate::mem;\nuse crate::num::flt2dec;\nuse crate::ops::Deref;\nuse crate::result;\nuse crate::str;\n\nmod builders;\nmod float;\nmod num;\n\n#[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n/// Possible alignments returned by `Formatter::align`\n#[derive(Debug)]\npub enum Alignment {\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be left-aligned.\n Left,\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be right-aligned.\n Right,\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be center-aligned.\n Center,\n}\n\n#[stable(feature = \"debug_builders\", since = \"1.2.0\")]\npub use self::builders::{DebugList, DebugMap, DebugSet, DebugStruct, DebugTuple};\n\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n#[doc(hidden)]\npub mod rt {\n pub mod v1;\n}\n\n/// The type returned by formatter methods.\n///\n/// # Examples\n///\n/// ```\n/// use std::fmt;\n///\n/// #[derive(Debug)]\n/// struct Triangle {\n/// a: f32,\n/// b: f32,\n/// c: f32\n/// }\n///\n/// impl fmt::Display for Triangle {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// write!(f, \"({}, {}, {})\", self.a, self.b, self.c)\n/// }\n/// }\n///\n/// let pythagorean_triple = Triangle { a: 3.0, b: 4.0, c: 5.0 };\n///\n/// assert_eq!(format!(\"{}\", pythagorean_triple), \"(3, 4, 5)\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub type Result = result::Result<(), Error>;\n\n/// The error type which is returned from formatting a message into a stream.\n///\n/// This type does not support transmission of an error other than that an error\n/// occurred. Any extra information must be arranged to be transmitted through\n/// some other means.\n///\n/// An important thing to remember is that the type `fmt::Error` should not be\n/// confused with [`std::io::Error`] or [`std::error::Error`], which you may also\n/// have in scope.\n///\n/// [`std::io::Error`]: ../../std/io/struct.Error.html\n/// [`std::error::Error`]: ../../std/error/trait.Error.html\n///\n/// # Examples\n///\n/// ```rust\n/// use std::fmt::{self, write};\n///\n/// let mut output = String::new();\n/// if let Err(fmt::Error) = write(&mut output, format_args!(\"Hello {}!\", \"world\")) {\n/// panic!(\"An error occurred\");\n/// }\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct Error;\n\n/// A collection of methods that are required to format a message into a stream.\n///\n/// This trait is the type which this modules requires when formatting\n/// information. This is similar to the standard library's [`io::Write`] trait,\n/// but it is only intended for use in libcore.\n///\n/// This trait should generally not be implemented by consumers of the standard\n/// library. The [`write!`] macro accepts an instance of [`io::Write`], and the\n/// [`io::Write`] trait is favored over implementing this trait.\n///\n/// [`write!`]: ../../std/macro.write.html\n/// [`io::Write`]: ../../std/io/trait.Write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Write {\n /// Writes a string slice into this writer, returning whether the write\n /// succeeded.\n ///\n /// This method can only succeed if the entire string slice was successfully\n /// written, and this method will not return until all data has been\n /// written or an error occurs.\n ///\n /// # Errors\n ///\n /// This function will return an instance of [`Error`] on error.\n ///\n /// [`Error`]: struct.Error.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, s: &str) -> Result<(), Error> {\n /// f.write_str(s)\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, \"hola\").unwrap();\n /// assert_eq!(&buf, \"hola\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn write_str(&mut self, s: &str) -> Result;\n\n /// Writes a [`char`] into this writer, returning whether the write succeeded.\n ///\n /// A single [`char`] may be encoded as more than one byte.\n /// This method can only succeed if the entire byte sequence was successfully\n /// written, and this method will not return until all data has been\n /// written or an error occurs.\n ///\n /// # Errors\n ///\n /// This function will return an instance of [`Error`] on error.\n ///\n /// [`char`]: ../../std/primitive.char.html\n /// [`Error`]: struct.Error.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, c: char) -> Result<(), Error> {\n /// f.write_char(c)\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, 'a').unwrap();\n /// writer(&mut buf, 'b').unwrap();\n /// assert_eq!(&buf, \"ab\");\n /// ```\n #[stable(feature = \"fmt_write_char\", since = \"1.1.0\")]\n fn write_char(&mut self, c: char) -> Result {\n self.write_str(c.encode_utf8(&mut [0; 4]))\n }\n\n /// Glue for usage of the [`write!`] macro with implementors of this trait.\n ///\n /// This method should generally not be invoked manually, but rather through\n /// the [`write!`] macro itself.\n ///\n /// [`write!`]: ../../std/macro.write.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, s: &str) -> Result<(), Error> {\n /// f.write_fmt(format_args!(\"{}\", s))\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, \"world\").unwrap();\n /// assert_eq!(&buf, \"world\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn write_fmt(mut self: &mut Self, args: Arguments<'_>) -> Result {\n write(&mut self, args)\n }\n}\n\n#[stable(feature = \"fmt_write_blanket_impl\", since = \"1.4.0\")]\nimpl Write for &mut W {\n fn write_str(&mut self, s: &str) -> Result {\n (**self).write_str(s)\n }\n\n fn write_char(&mut self, c: char) -> Result {\n (**self).write_char(c)\n }\n\n fn write_fmt(&mut self, args: Arguments<'_>) -> Result {\n (**self).write_fmt(args)\n }\n}\n\n/// Configuration for formatting.\n///\n/// A `Formatter` represents various options related to formatting. Users do not\n/// construct `Formatter`s directly; a mutable reference to one is passed to\n/// the `fmt` method of all formatting traits, like [`Debug`] and [`Display`].\n///\n/// To interact with a `Formatter`, you'll call various methods to change the\n/// various options related to formatting. For examples, please see the\n/// documentation of the methods defined on `Formatter` below.\n///\n/// [`Debug`]: trait.Debug.html\n/// [`Display`]: trait.Display.html\n#[allow(missing_debug_implementations)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub struct Formatter<'a> {\n flags: u32,\n fill: char,\n align: rt::v1::Alignment,\n width: Option,\n precision: Option,\n\n buf: &'a mut (dyn Write + 'a),\n}\n\n// NB. Argument is essentially an optimized partially applied formatting function,\n// equivalent to `exists T.(&T, fn(&T, &mut Formatter<'_>) -> Result`.\n\nextern \"C\" {\n type Opaque;\n}\n\n/// This struct represents the generic \"argument\" which is taken by the Xprintf\n/// family of functions. It contains a function to format the given value. At\n/// compile time it is ensured that the function and the value have the correct\n/// types, and then this struct is used to canonicalize arguments to one type.\n#[derive(Copy, Clone)]\n#[allow(missing_debug_implementations)]\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n#[doc(hidden)]\npub struct ArgumentV1<'a> {\n value: &'a Opaque,\n formatter: fn(&Opaque, &mut Formatter<'_>) -> Result,\n}\n\n// This guarantees a single stable value for the function pointer associated with\n// indices/counts in the formatting infrastructure.\n//\n// Note that a function defined as such would not be correct as functions are\n// always tagged unnamed_addr with the current lowering to LLVM IR, so their\n// address is not considered important to LLVM and as such the as_usize cast\n// could have been miscompiled. In practice, we never call as_usize on non-usize\n// containing data (as a matter of static generation of the formatting\n// arguments), so this is merely an additional check.\n//\n// We primarily want to ensure that the function pointer at `USIZE_MARKER` has\n// an address corresponding *only* to functions that also take `&usize` as their\n// first argument. The read_volatile here ensures that we can safely ready out a\n// usize from the passed reference and that this address does not point at a\n// non-usize taking function.\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\nstatic USIZE_MARKER: fn(&usize, &mut Formatter<'_>) -> Result = |ptr, _| {\n // SAFETY: ptr is a reference\n let _v: usize = unsafe { crate::ptr::read_volatile(ptr) };\n loop {}\n};\n\nimpl<'a> ArgumentV1<'a> {\n #[doc(hidden)]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new<'b, T>(x: &'b T, f: fn(&T, &mut Formatter<'_>) -> Result) -> ArgumentV1<'b> {\n // SAFETY: `mem::transmute(x)` is safe because\n // 1. `&'b T` keeps the lifetime it originated with `'b`\n // (so as to not have an unbounded lifetime)\n // 2. `&'b T` and `&'b Opaque` have the same memory layout\n // (when `T` is `Sized`, as it is here)\n // `mem::transmute(f)` is safe since `fn(&T, &mut Formatter<'_>) -> Result`\n // and `fn(&Opaque, &mut Formatter<'_>) -> Result` have the same ABI\n // (as long as `T` is `Sized`)\n unsafe { ArgumentV1 { formatter: mem::transmute(f), value: mem::transmute(x) } }\n }\n\n #[doc(hidden)]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn from_usize(x: &usize) -> ArgumentV1<'_> {\n ArgumentV1::new(x, USIZE_MARKER)\n }\n\n fn as_usize(&self) -> Option {\n if self.formatter as usize == USIZE_MARKER as usize {\n // SAFETY: The `formatter` field is only set to USIZE_MARKER if\n // the value is a usize, so this is safe\n Some(unsafe { *(self.value as *const _ as *const usize) })\n } else {\n None\n }\n }\n}\n\n// flags available in the v1 format of format_args\n#[derive(Copy, Clone)]\nenum FlagV1 {\n SignPlus,\n SignMinus,\n Alternate,\n SignAwareZeroPad,\n DebugLowerHex,\n DebugUpperHex,\n}\n\nimpl<'a> Arguments<'a> {\n /// When using the format_args!() macro, this function is used to generate the\n /// Arguments structure.\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new_v1(pieces: &'a [&'a str], args: &'a [ArgumentV1<'a>]) -> Arguments<'a> {\n Arguments { pieces, fmt: None, args }\n }\n\n /// This function is used to specify nonstandard formatting parameters.\n /// The `pieces` array must be at least as long as `fmt` to construct\n /// a valid Arguments structure. Also, any `Count` within `fmt` that is\n /// `CountIsParam` or `CountIsNextParam` has to point to an argument\n /// created with `argumentusize`. However, failing to do so doesn't cause\n /// unsafety, but will ignore invalid .\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new_v1_formatted(\n pieces: &'a [&'a str],\n args: &'a [ArgumentV1<'a>],\n fmt: &'a [rt::v1::Argument],\n ) -> Arguments<'a> {\n Arguments { pieces, fmt: Some(fmt), args }\n }\n\n /// Estimates the length of the formatted text.\n ///\n /// This is intended to be used for setting initial `String` capacity\n /// when using `format!`. Note: this is neither the lower nor upper bound.\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn estimated_capacity(&self) -> usize {\n let pieces_length: usize = self.pieces.iter().map(|x| x.len()).sum();\n\n if self.args.is_empty() {\n pieces_length\n } else if self.pieces[0] == \"\" && pieces_length < 16 {\n // If the format string starts with an argument,\n // don't preallocate anything, unless length\n // of pieces is significant.\n 0\n } else {\n // There are some arguments, so any additional push\n // will reallocate the string. To avoid that,\n // we're \"pre-doubling\" the capacity here.\n pieces_length.checked_mul(2).unwrap_or(0)\n }\n }\n}\n\n/// This structure represents a safely precompiled version of a format string\n/// and its arguments. This cannot be generated at runtime because it cannot\n/// safely be done, so no constructors are given and the fields are private\n/// to prevent modification.\n///\n/// The [`format_args!`] macro will safely create an instance of this structure.\n/// The macro validates the format string at compile-time so usage of the\n/// [`write`] and [`format`] functions can be safely performed.\n///\n/// You can use the `Arguments<'a>` that [`format_args!`] returns in `Debug`\n/// and `Display` contexts as seen below. The example also shows that `Debug`\n/// and `Display` format to the same thing: the interpolated format string\n/// in `format_args!`.\n///\n/// ```rust\n/// let debug = format!(\"{:?}\", format_args!(\"{} foo {:?}\", 1, 2));\n/// let display = format!(\"{}\", format_args!(\"{} foo {:?}\", 1, 2));\n/// assert_eq!(\"1 foo 2\", display);\n/// assert_eq!(display, debug);\n/// ```\n///\n/// [`format_args!`]: ../../std/macro.format_args.html\n/// [`format`]: ../../std/fmt/fn.format.html\n/// [`write`]: ../../std/fmt/fn.write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[derive(Copy, Clone)]\npub struct Arguments<'a> {\n // Format string pieces to print.\n pieces: &'a [&'a str],\n\n // Placeholder specs, or `None` if all specs are default (as in \"{}{}\").\n fmt: Option<&'a [rt::v1::Argument]>,\n\n // Dynamic arguments for interpolation, to be interleaved with string\n // pieces. (Every argument is preceded by a string piece.)\n args: &'a [ArgumentV1<'a>],\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for Arguments<'_> {\n fn fmt(&self, fmt: &mut Formatter<'_>) -> Result {\n Display::fmt(self, fmt)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for Arguments<'_> {\n fn fmt(&self, fmt: &mut Formatter<'_>) -> Result {\n write(fmt.buf, *self)\n }\n}\n\n/// `?` formatting.\n///\n/// `Debug` should format the output in a programmer-facing, debugging context.\n///\n/// Generally speaking, you should just `derive` a `Debug` implementation.\n///\n/// When used with the alternate format specifier `#?`, the output is pretty-printed.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// This trait can be used with `#[derive]` if all fields implement `Debug`. When\n/// `derive`d for structs, it will use the name of the `struct`, then `{`, then a\n/// comma-separated list of each field's name and `Debug` value, then `}`. For\n/// `enum`s, it will use the name of the variant and, if applicable, `(`, then the\n/// `Debug` values of the fields, then `)`.\n///\n/// # Stability\n///\n/// Derived `Debug` formats are not stable, and so may change with future Rust\n/// versions. Additionally, `Debug` implementations of types provided by the\n/// standard library (`libstd`, `libcore`, `liballoc`, etc.) are not stable, and\n/// may also change with future Rust versions.\n///\n/// # Examples\n///\n/// Deriving an implementation:\n///\n/// ```\n/// #[derive(Debug)]\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:?}\", origin), \"The origin is: Point { x: 0, y: 0 }\");\n/// ```\n///\n/// Manually implementing:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// impl fmt::Debug for Point {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// f.debug_struct(\"Point\")\n/// .field(\"x\", &self.x)\n/// .field(\"y\", &self.y)\n/// .finish()\n/// }\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:?}\", origin), \"The origin is: Point { x: 0, y: 0 }\");\n/// ```\n///\n/// There are a number of helper methods on the [`Formatter`] struct to help you with manual\n/// implementations, such as [`debug_struct`].\n///\n/// `Debug` implementations using either `derive` or the debug builder API\n/// on [`Formatter`] support pretty-printing using the alternate flag: `{:#?}`.\n///\n/// [`debug_struct`]: ../../std/fmt/struct.Formatter.html#method.debug_struct\n/// [`Formatter`]: ../../std/fmt/struct.Formatter.html\n///\n/// Pretty-printing with `#?`:\n///\n/// ```\n/// #[derive(Debug)]\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:#?}\", origin),\n/// \"The origin is: Point {\n/// x: 0,\n/// y: 0,\n/// }\");\n/// ```\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_on_unimplemented(\n on(\n crate_local,\n label = \"`{Self}` cannot be formatted using `{{:?}}`\",\n note = \"add `#[derive(Debug)]` or manually implement `{Debug}`\"\n ),\n message = \"`{Self}` doesn't implement `{Debug}`\",\n label = \"`{Self}` cannot be formatted using `{{:?}}` because it doesn't implement `{Debug}`\"\n)]\n#[doc(alias = \"{:?}\")]\n#[rustc_diagnostic_item = \"debug_trait\"]\npub trait Debug {\n /// Formats the value using the given formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Position {\n /// longitude: f32,\n /// latitude: f32,\n /// }\n ///\n /// impl fmt::Debug for Position {\n /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n /// f.debug_tuple(\"\")\n /// .field(&self.longitude)\n /// .field(&self.latitude)\n /// .finish()\n /// }\n /// }\n ///\n /// let position = Position { longitude: 1.987, latitude: 2.983 };\n /// assert_eq!(format!(\"{:?}\", position), \"(1.987, 2.983)\");\n ///\n /// assert_eq!(format!(\"{:#?}\", position), \"(\n /// 1.987,\n /// 2.983,\n /// )\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n// Separate module to reexport the macro `Debug` from prelude without the trait `Debug`.\npub(crate) mod macros {\n /// Derive macro generating an impl of the trait `Debug`.\n #[rustc_builtin_macro]\n #[stable(feature = \"builtin_macro_prelude\", since = \"1.38.0\")]\n #[allow_internal_unstable(core_intrinsics)]\n pub macro Debug($item:item) {\n /* compiler built-in */\n }\n}\n#[stable(feature = \"builtin_macro_prelude\", since = \"1.38.0\")]\n#[doc(inline)]\npub use macros::Debug;\n\n/// Format trait for an empty format, `{}`.\n///\n/// `Display` is similar to [`Debug`][debug], but `Display` is for user-facing\n/// output, and so cannot be derived.\n///\n/// [debug]: trait.Debug.html\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Implementing `Display` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// impl fmt::Display for Point {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// write!(f, \"({}, {})\", self.x, self.y)\n/// }\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {}\", origin), \"The origin is: (0, 0)\");\n/// ```\n#[rustc_on_unimplemented(\n on(\n _Self = \"std::path::Path\",\n label = \"`{Self}` cannot be formatted with the default formatter; call `.display()` on it\",\n note = \"call `.display()` or `.to_string_lossy()` to safely print paths, \\\n as they may contain non-Unicode data\"\n ),\n message = \"`{Self}` doesn't implement `{Display}`\",\n label = \"`{Self}` cannot be formatted with the default formatter\",\n note = \"in format strings you may be able to use `{{:?}}` (or {{:#?}} for pretty-print) instead\"\n)]\n#[doc(alias = \"{}\")]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Display {\n /// Formats the value using the given formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Position {\n /// longitude: f32,\n /// latitude: f32,\n /// }\n ///\n /// impl fmt::Display for Position {\n /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n /// write!(f, \"({}, {})\", self.longitude, self.latitude)\n /// }\n /// }\n ///\n /// assert_eq!(\"(1.987, 2.983)\",\n /// format!(\"{}\", Position { longitude: 1.987, latitude: 2.983, }));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `o` formatting.\n///\n/// The `Octal` trait should format its output as a number in base-8.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0o` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '52' in octal\n///\n/// assert_eq!(format!(\"{:o}\", x), \"52\");\n/// assert_eq!(format!(\"{:#o}\", x), \"0o52\");\n///\n/// assert_eq!(format!(\"{:o}\", -16), \"37777777760\");\n/// ```\n///\n/// Implementing `Octal` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Octal for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::Octal::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(9);\n///\n/// assert_eq!(format!(\"l as octal is: {:o}\", l), \"l as octal is: 11\");\n///\n/// assert_eq!(format!(\"l as octal is: {:#06o}\", l), \"l as octal is: 0o0011\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Octal {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `b` formatting.\n///\n/// The `Binary` trait should format its output as a number in binary.\n///\n/// For primitive signed integers ([`i8`] to [`i128`], and [`isize`]),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0b` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// # Examples\n///\n/// Basic usage with [`i32`]:\n///\n/// ```\n/// let x = 42; // 42 is '101010' in binary\n///\n/// assert_eq!(format!(\"{:b}\", x), \"101010\");\n/// assert_eq!(format!(\"{:#b}\", x), \"0b101010\");\n///\n/// assert_eq!(format!(\"{:b}\", -16), \"11111111111111111111111111110000\");\n/// ```\n///\n/// Implementing `Binary` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Binary for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::Binary::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(107);\n///\n/// assert_eq!(format!(\"l as binary is: {:b}\", l), \"l as binary is: 1101011\");\n///\n/// assert_eq!(\n/// format!(\"l as binary is: {:#032b}\", l),\n/// \"l as binary is: 0b000000000000000000000001101011\"\n/// );\n/// ```\n///\n/// [module]: ../../std/fmt/index.html\n/// [`i8`]: ../../std/primitive.i8.html\n/// [`i128`]: ../../std/primitive.i128.html\n/// [`isize`]: ../../std/primitive.isize.html\n/// [`i32`]: ../../std/primitive.i32.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Binary {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `x` formatting.\n///\n/// The `LowerHex` trait should format its output as a number in hexadecimal, with `a` through `f`\n/// in lower case.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0x` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '2a' in hex\n///\n/// assert_eq!(format!(\"{:x}\", x), \"2a\");\n/// assert_eq!(format!(\"{:#x}\", x), \"0x2a\");\n///\n/// assert_eq!(format!(\"{:x}\", -16), \"fffffff0\");\n/// ```\n///\n/// Implementing `LowerHex` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::LowerHex for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::LowerHex::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(9);\n///\n/// assert_eq!(format!(\"l as hex is: {:x}\", l), \"l as hex is: 9\");\n///\n/// assert_eq!(format!(\"l as hex is: {:#010x}\", l), \"l as hex is: 0x00000009\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait LowerHex {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `X` formatting.\n///\n/// The `UpperHex` trait should format its output as a number in hexadecimal, with `A` through `F`\n/// in upper case.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0x` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '2A' in hex\n///\n/// assert_eq!(format!(\"{:X}\", x), \"2A\");\n/// assert_eq!(format!(\"{:#X}\", x), \"0x2A\");\n///\n/// assert_eq!(format!(\"{:X}\", -16), \"FFFFFFF0\");\n/// ```\n///\n/// Implementing `UpperHex` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::UpperHex for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::UpperHex::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(i32::MAX);\n///\n/// assert_eq!(format!(\"l as hex is: {:X}\", l), \"l as hex is: 7FFFFFFF\");\n///\n/// assert_eq!(format!(\"l as hex is: {:#010X}\", l), \"l as hex is: 0x7FFFFFFF\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait UpperHex {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `p` formatting.\n///\n/// The `Pointer` trait should format its output as a memory location. This is commonly presented\n/// as hexadecimal.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `&i32`:\n///\n/// ```\n/// let x = &42;\n///\n/// let address = format!(\"{:p}\", x); // this produces something like '0x7f06092ac6d0'\n/// ```\n///\n/// Implementing `Pointer` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Pointer for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// // use `as` to convert to a `*const T`, which implements Pointer, which we can use\n///\n/// let ptr = self as *const Self;\n/// fmt::Pointer::fmt(&ptr, f)\n/// }\n/// }\n///\n/// let l = Length(42);\n///\n/// println!(\"l is in memory here: {:p}\", l);\n///\n/// let l_ptr = format!(\"{:018p}\", l);\n/// assert_eq!(l_ptr.len(), 18);\n/// assert_eq!(&l_ptr[..2], \"0x\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Pointer {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `e` formatting.\n///\n/// The `LowerExp` trait should format its output in scientific notation with a lower-case `e`.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `f64`:\n///\n/// ```\n/// let x = 42.0; // 42.0 is '4.2e1' in scientific notation\n///\n/// assert_eq!(format!(\"{:e}\", x), \"4.2e1\");\n/// ```\n///\n/// Implementing `LowerExp` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::LowerExp for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = f64::from(self.0);\n/// fmt::LowerExp::fmt(&val, f) // delegate to f64's implementation\n/// }\n/// }\n///\n/// let l = Length(100);\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:e}\", l),\n/// \"l in scientific notation is: 1e2\"\n/// );\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:05e}\", l),\n/// \"l in scientific notation is: 001e2\"\n/// );\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait LowerExp {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `E` formatting.\n///\n/// The `UpperExp` trait should format its output in scientific notation with an upper-case `E`.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `f64`:\n///\n/// ```\n/// let x = 42.0; // 42.0 is '4.2E1' in scientific notation\n///\n/// assert_eq!(format!(\"{:E}\", x), \"4.2E1\");\n/// ```\n///\n/// Implementing `UpperExp` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::UpperExp for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = f64::from(self.0);\n/// fmt::UpperExp::fmt(&val, f) // delegate to f64's implementation\n/// }\n/// }\n///\n/// let l = Length(100);\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:E}\", l),\n/// \"l in scientific notation is: 1E2\"\n/// );\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:05E}\", l),\n/// \"l in scientific notation is: 001E2\"\n/// );\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait UpperExp {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// The `write` function takes an output stream, and an `Arguments` struct\n/// that can be precompiled with the `format_args!` macro.\n///\n/// The arguments will be formatted according to the specified format string\n/// into the output stream provided.\n///\n/// # Examples\n///\n/// Basic usage:\n///\n/// ```\n/// use std::fmt;\n///\n/// let mut output = String::new();\n/// fmt::write(&mut output, format_args!(\"Hello {}!\", \"world\"))\n/// .expect(\"Error occurred while trying to write in String\");\n/// assert_eq!(output, \"Hello world!\");\n/// ```\n///\n/// Please note that using [`write!`] might be preferable. Example:\n///\n/// ```\n/// use std::fmt::Write;\n///\n/// let mut output = String::new();\n/// write!(&mut output, \"Hello {}!\", \"world\")\n/// .expect(\"Error occurred while trying to write in String\");\n/// assert_eq!(output, \"Hello world!\");\n/// ```\n///\n/// [`write!`]: ../../std/macro.write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result {\n let mut formatter = Formatter {\n flags: 0,\n width: None,\n precision: None,\n buf: output,\n align: rt::v1::Alignment::Unknown,\n fill: ' ',\n };\n\n let mut idx = 0;\n\n match args.fmt {\n None => {\n // We can use default formatting parameters for all arguments.\n for (arg, piece) in args.args.iter().zip(args.pieces.iter()) {\n formatter.buf.write_str(*piece)?;\n (arg.formatter)(arg.value, &mut formatter)?;\n idx += 1;\n }\n }\n Some(fmt) => {\n // Every spec has a corresponding argument that is preceded by\n // a string piece.\n for (arg, piece) in fmt.iter().zip(args.pieces.iter()) {\n formatter.buf.write_str(*piece)?;\n run(&mut formatter, arg, &args.args)?;\n idx += 1;\n }\n }\n }\n\n // There can be only one trailing string piece left.\n if let Some(piece) = args.pieces.get(idx) {\n formatter.buf.write_str(*piece)?;\n }\n\n Ok(())\n}\n\nfn run(fmt: &mut Formatter<'_>, arg: &rt::v1::Argument, args: &[ArgumentV1<'_>]) -> Result {\n fmt.fill = arg.format.fill;\n fmt.align = arg.format.align;\n fmt.flags = arg.format.flags;\n fmt.width = getcount(args, &arg.format.width);\n fmt.precision = getcount(args, &arg.format.precision);\n\n // Extract the correct argument\n let value = args[arg.position];\n\n // Then actually do some printing\n (value.formatter)(value.value, fmt)\n}\n\nfn getcount(args: &[ArgumentV1<'_>], cnt: &rt::v1::Count) -> Option {\n match *cnt {\n rt::v1::Count::Is(n) => Some(n),\n rt::v1::Count::Implied => None,\n rt::v1::Count::Param(i) => args[i].as_usize(),\n }\n}\n\n/// Padding after the end of something. Returned by `Formatter::padding`.\n#[must_use = \"don't forget to write the post padding\"]\nstruct PostPadding {\n fill: char,\n padding: usize,\n}\n\nimpl PostPadding {\n fn new(fill: char, padding: usize) -> PostPadding {\n PostPadding { fill, padding }\n }\n\n /// Write this post padding.\n fn write(self, buf: &mut dyn Write) -> Result {\n for _ in 0..self.padding {\n buf.write_char(self.fill)?;\n }\n Ok(())\n }\n}\n\nimpl<'a> Formatter<'a> {\n fn wrap_buf<'b, 'c, F>(&'b mut self, wrap: F) -> Formatter<'c>\n where\n 'b: 'c,\n F: FnOnce(&'b mut (dyn Write + 'b)) -> &'c mut (dyn Write + 'c),\n {\n Formatter {\n // We want to change this\n buf: wrap(self.buf),\n\n // And preserve these\n flags: self.flags,\n fill: self.fill,\n align: self.align,\n width: self.width,\n precision: self.precision,\n }\n }\n\n // Helper methods used for padding and processing formatting arguments that\n // all formatting traits can use.\n\n /// Performs the correct padding for an integer which has already been\n /// emitted into a str. The str should *not* contain the sign for the\n /// integer, that will be added by this method.\n ///\n /// # Arguments\n ///\n /// * is_nonnegative - whether the original integer was either positive or zero.\n /// * prefix - if the '#' character (Alternate) is provided, this\n /// is the prefix to put in front of the number.\n /// * buf - the byte array that the number has been formatted into\n ///\n /// This function will correctly account for the flags provided as well as\n /// the minimum width. It will not take precision into account.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo { nb: i32 };\n ///\n /// impl Foo {\n /// fn new(nb: i32) -> Foo {\n /// Foo {\n /// nb,\n /// }\n /// }\n /// }\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// // We need to remove \"-\" from the number output.\n /// let tmp = self.nb.abs().to_string();\n ///\n /// formatter.pad_integral(self.nb > 0, \"Foo \", &tmp)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo::new(2)), \"2\");\n /// assert_eq!(&format!(\"{}\", Foo::new(-1)), \"-1\");\n /// assert_eq!(&format!(\"{:#}\", Foo::new(-1)), \"-Foo 1\");\n /// assert_eq!(&format!(\"{:0>#8}\", Foo::new(-1)), \"00-Foo 1\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn pad_integral(&mut self, is_nonnegative: bool, prefix: &str, buf: &str) -> Result {\n let mut width = buf.len();\n\n let mut sign = None;\n if !is_nonnegative {\n sign = Some('-');\n width += 1;\n } else if self.sign_plus() {\n sign = Some('+');\n width += 1;\n }\n\n let prefix = if self.alternate() {\n width += prefix.chars().count();\n Some(prefix)\n } else {\n None\n };\n\n // Writes the sign if it exists, and then the prefix if it was requested\n #[inline(never)]\n fn write_prefix(f: &mut Formatter<'_>, sign: Option, prefix: Option<&str>) -> Result {\n if let Some(c) = sign {\n f.buf.write_char(c)?;\n }\n if let Some(prefix) = prefix { f.buf.write_str(prefix) } else { Ok(()) }\n }\n\n // The `width` field is more of a `min-width` parameter at this point.\n match self.width {\n // If there's no minimum length requirements then we can just\n // write the bytes.\n None => {\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)\n }\n // Check if we're over the minimum width, if so then we can also\n // just write the bytes.\n Some(min) if width >= min => {\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)\n }\n // The sign and prefix goes before the padding if the fill character\n // is zero\n Some(min) if self.sign_aware_zero_pad() => {\n let old_fill = crate::mem::replace(&mut self.fill, '0');\n let old_align = crate::mem::replace(&mut self.align, rt::v1::Alignment::Right);\n write_prefix(self, sign, prefix)?;\n let post_padding = self.padding(min - width, rt::v1::Alignment::Right)?;\n self.buf.write_str(buf)?;\n post_padding.write(self.buf)?;\n self.fill = old_fill;\n self.align = old_align;\n Ok(())\n }\n // Otherwise, the sign and prefix goes after the padding\n Some(min) => {\n let post_padding = self.padding(min - width, rt::v1::Alignment::Right)?;\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)?;\n post_padding.write(self.buf)\n }\n }\n }\n\n /// This function takes a string slice and emits it to the internal buffer\n /// after applying the relevant formatting flags specified. The flags\n /// recognized for generic strings are:\n ///\n /// * width - the minimum width of what to emit\n /// * fill/align - what to emit and where to emit it if the string\n /// provided needs to be padded\n /// * precision - the maximum length to emit, the string is truncated if it\n /// is longer than this length\n ///\n /// Notably this function ignores the `flag` parameters.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.pad(\"Foo\")\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:<4}\", Foo), \"Foo \");\n /// assert_eq!(&format!(\"{:0>4}\", Foo), \"0Foo\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn pad(&mut self, s: &str) -> Result {\n // Make sure there's a fast path up front\n if self.width.is_none() && self.precision.is_none() {\n return self.buf.write_str(s);\n }\n // The `precision` field can be interpreted as a `max-width` for the\n // string being formatted.\n let s = if let Some(max) = self.precision {\n // If our string is longer that the precision, then we must have\n // truncation. However other flags like `fill`, `width` and `align`\n // must act as always.\n if let Some((i, _)) = s.char_indices().nth(max) {\n // LLVM here can't prove that `..i` won't panic `&s[..i]`, but\n // we know that it can't panic. Use `get` + `unwrap_or` to avoid\n // `unsafe` and otherwise don't emit any panic-related code\n // here.\n s.get(..i).unwrap_or(&s)\n } else {\n &s\n }\n } else {\n &s\n };\n // The `width` field is more of a `min-width` parameter at this point.\n match self.width {\n // If we're under the maximum length, and there's no minimum length\n // requirements, then we can just emit the string\n None => self.buf.write_str(s),\n // If we're under the maximum width, check if we're over the minimum\n // width, if so it's as easy as just emitting the string.\n Some(width) if s.chars().count() >= width => self.buf.write_str(s),\n // If we're under both the maximum and the minimum width, then fill\n // up the minimum width with the specified string + some alignment.\n Some(width) => {\n let align = rt::v1::Alignment::Left;\n let post_padding = self.padding(width - s.chars().count(), align)?;\n self.buf.write_str(s)?;\n post_padding.write(self.buf)\n }\n }\n }\n\n /// Write the pre-padding and return the unwritten post-padding. Callers are\n /// responsible for ensuring post-padding is written after the thing that is\n /// being padded.\n fn padding(\n &mut self,\n padding: usize,\n default: rt::v1::Alignment,\n ) -> result::Result {\n let align = match self.align {\n rt::v1::Alignment::Unknown => default,\n _ => self.align,\n };\n\n let (pre_pad, post_pad) = match align {\n rt::v1::Alignment::Left => (0, padding),\n rt::v1::Alignment::Right | rt::v1::Alignment::Unknown => (padding, 0),\n rt::v1::Alignment::Center => (padding / 2, (padding + 1) / 2),\n };\n\n for _ in 0..pre_pad {\n self.buf.write_char(self.fill)?;\n }\n\n Ok(PostPadding::new(self.fill, post_pad))\n }\n\n /// Takes the formatted parts and applies the padding.\n /// Assumes that the caller already has rendered the parts with required precision,\n /// so that `self.precision` can be ignored.\n fn pad_formatted_parts(&mut self, formatted: &flt2dec::Formatted<'_>) -> Result {\n if let Some(mut width) = self.width {\n // for the sign-aware zero padding, we render the sign first and\n // behave as if we had no sign from the beginning.\n let mut formatted = formatted.clone();\n let old_fill = self.fill;\n let old_align = self.align;\n let mut align = old_align;\n if self.sign_aware_zero_pad() {\n // a sign always goes first\n let sign = formatted.sign;\n self.buf.write_str(sign)?;\n\n // remove the sign from the formatted parts\n formatted.sign = \"\";\n width = width.saturating_sub(sign.len());\n align = rt::v1::Alignment::Right;\n self.fill = '0';\n self.align = rt::v1::Alignment::Right;\n }\n\n // remaining parts go through the ordinary padding process.\n let len = formatted.len();\n let ret = if width <= len {\n // no padding\n self.write_formatted_parts(&formatted)\n } else {\n let post_padding = self.padding(width - len, align)?;\n self.write_formatted_parts(&formatted)?;\n post_padding.write(self.buf)\n };\n self.fill = old_fill;\n self.align = old_align;\n ret\n } else {\n // this is the common case and we take a shortcut\n self.write_formatted_parts(formatted)\n }\n }\n\n fn write_formatted_parts(&mut self, formatted: &flt2dec::Formatted<'_>) -> Result {\n fn write_bytes(buf: &mut dyn Write, s: &[u8]) -> Result {\n // SAFETY: This is used for `flt2dec::Part::Num` and `flt2dec::Part::Copy`.\n // It's safe to use for `flt2dec::Part::Num` since every char `c` is between\n // `b'0'` and `b'9'`, which means `s` is valid UTF-8.\n // It's also probably safe in practice to use for `flt2dec::Part::Copy(buf)`\n // since `buf` should be plain ASCII, but it's possible for someone to pass\n // in a bad value for `buf` into `flt2dec::to_shortest_str` since it is a\n // public function.\n // FIXME: Determine whether this could result in UB.\n buf.write_str(unsafe { str::from_utf8_unchecked(s) })\n }\n\n if !formatted.sign.is_empty() {\n self.buf.write_str(formatted.sign)?;\n }\n for part in formatted.parts {\n match *part {\n flt2dec::Part::Zero(mut nzeroes) => {\n const ZEROES: &str = // 64 zeroes\n \"0000000000000000000000000000000000000000000000000000000000000000\";\n while nzeroes > ZEROES.len() {\n self.buf.write_str(ZEROES)?;\n nzeroes -= ZEROES.len();\n }\n if nzeroes > 0 {\n self.buf.write_str(&ZEROES[..nzeroes])?;\n }\n }\n flt2dec::Part::Num(mut v) => {\n let mut s = [0; 5];\n let len = part.len();\n for c in s[..len].iter_mut().rev() {\n *c = b'0' + (v % 10) as u8;\n v /= 10;\n }\n write_bytes(self.buf, &s[..len])?;\n }\n flt2dec::Part::Copy(buf) => {\n write_bytes(self.buf, buf)?;\n }\n }\n }\n Ok(())\n }\n\n /// Writes some data to the underlying buffer contained within this\n /// formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.write_str(\"Foo\")\n /// // This is equivalent to:\n /// // write!(formatter, \"Foo\")\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo), \"Foo\");\n /// assert_eq!(&format!(\"{:0>8}\", Foo), \"Foo\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn write_str(&mut self, data: &str) -> Result {\n self.buf.write_str(data)\n }\n\n /// Writes some formatted information into this instance.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.write_fmt(format_args!(\"Foo {}\", self.0))\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo(-1)), \"Foo -1\");\n /// assert_eq!(&format!(\"{:0>8}\", Foo(2)), \"Foo 2\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result {\n write(self.buf, fmt)\n }\n\n /// Flags for formatting\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_deprecated(\n since = \"1.24.0\",\n reason = \"use the `sign_plus`, `sign_minus`, `alternate`, \\\n or `sign_aware_zero_pad` methods instead\"\n )]\n pub fn flags(&self) -> u32 {\n self.flags\n }\n\n /// Character used as 'fill' whenever there is alignment.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// let c = formatter.fill();\n /// if let Some(width) = formatter.width() {\n /// for _ in 0..width {\n /// write!(formatter, \"{}\", c)?;\n /// }\n /// Ok(())\n /// } else {\n /// write!(formatter, \"{}\", c)\n /// }\n /// }\n /// }\n ///\n /// // We set alignment to the left with \">\".\n /// assert_eq!(&format!(\"{:G>3}\", Foo), \"GGG\");\n /// assert_eq!(&format!(\"{:t>6}\", Foo), \"tttttt\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn fill(&self) -> char {\n self.fill\n }\n\n /// Flag indicating what form of alignment was requested.\n ///\n /// # Examples\n ///\n /// ```\n /// extern crate core;\n ///\n /// use std::fmt::{self, Alignment};\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// let s = if let Some(s) = formatter.align() {\n /// match s {\n /// Alignment::Left => \"left\",\n /// Alignment::Right => \"right\",\n /// Alignment::Center => \"center\",\n /// }\n /// } else {\n /// \"into the void\"\n /// };\n /// write!(formatter, \"{}\", s)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:<}\", Foo), \"left\");\n /// assert_eq!(&format!(\"{:>}\", Foo), \"right\");\n /// assert_eq!(&format!(\"{:^}\", Foo), \"center\");\n /// assert_eq!(&format!(\"{}\", Foo), \"into the void\");\n /// ```\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n pub fn align(&self) -> Option {\n match self.align {\n rt::v1::Alignment::Left => Some(Alignment::Left),\n rt::v1::Alignment::Right => Some(Alignment::Right),\n rt::v1::Alignment::Center => Some(Alignment::Center),\n rt::v1::Alignment::Unknown => None,\n }\n }\n\n /// Optionally specified integer width that the output should be.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if let Some(width) = formatter.width() {\n /// // If we received a width, we use it\n /// write!(formatter, \"{:width$}\", &format!(\"Foo({})\", self.0), width = width)\n /// } else {\n /// // Otherwise we do nothing special\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:10}\", Foo(23)), \"Foo(23) \");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn width(&self) -> Option {\n self.width\n }\n\n /// Optionally specified precision for numeric types. Alternatively, the\n /// maximum width for string types.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(f32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if let Some(precision) = formatter.precision() {\n /// // If we received a precision, we use it.\n /// write!(formatter, \"Foo({1:.*})\", precision, self.0)\n /// } else {\n /// // Otherwise we default to 2.\n /// write!(formatter, \"Foo({:.2})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:.4}\", Foo(23.2)), \"Foo(23.2000)\");\n /// assert_eq!(&format!(\"{}\", Foo(23.2)), \"Foo(23.20)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn precision(&self) -> Option {\n self.precision\n }\n\n /// Determines if the `+` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.sign_plus() {\n /// write!(formatter,\n /// \"Foo({}{})\",\n /// if self.0 < 0 { '-' } else { '+' },\n /// self.0)\n /// } else {\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:+}\", Foo(23)), \"Foo(+23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_plus(&self) -> bool {\n self.flags & (1 << FlagV1::SignPlus as u32) != 0\n }\n\n /// Determines if the `-` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.sign_minus() {\n /// // You want a minus sign? Have one!\n /// write!(formatter, \"-Foo({})\", self.0)\n /// } else {\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:-}\", Foo(23)), \"-Foo(23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_minus(&self) -> bool {\n self.flags & (1 << FlagV1::SignMinus as u32) != 0\n }\n\n /// Determines if the `#` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.alternate() {\n /// write!(formatter, \"Foo({})\", self.0)\n /// } else {\n /// write!(formatter, \"{}\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:#}\", Foo(23)), \"Foo(23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"23\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn alternate(&self) -> bool {\n self.flags & (1 << FlagV1::Alternate as u32) != 0\n }\n\n /// Determines if the `0` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// assert!(formatter.sign_aware_zero_pad());\n /// assert_eq!(formatter.width(), Some(4));\n /// // We ignore the formatter's options.\n /// write!(formatter, \"{}\", self.0)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:04}\", Foo(23)), \"23\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_aware_zero_pad(&self) -> bool {\n self.flags & (1 << FlagV1::SignAwareZeroPad as u32) != 0\n }\n\n // FIXME: Decide what public API we want for these two flags.\n // https://github.com/rust-lang/rust/issues/48584\n fn debug_lower_hex(&self) -> bool {\n self.flags & (1 << FlagV1::DebugLowerHex as u32) != 0\n }\n\n fn debug_upper_hex(&self) -> bool {\n self.flags & (1 << FlagV1::DebugUpperHex as u32) != 0\n }\n\n /// Creates a [`DebugStruct`] builder designed to assist with creation of\n /// [`fmt::Debug`] implementations for structs.\n ///\n /// [`DebugStruct`]: ../../std/fmt/struct.DebugStruct.html\n /// [`fmt::Debug`]: ../../std/fmt/trait.Debug.html\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n /// use std::net::Ipv4Addr;\n ///\n /// struct Foo {\n /// bar: i32,\n /// baz: String,\n /// addr: Ipv4Addr,\n /// }\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_struct(\"Foo\")\n /// .field(\"bar\", &self.bar)\n /// .field(\"baz\", &self.baz)\n /// .field(\"addr\", &format_args!(\"{}\", self.addr))\n /// .finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// \"Foo { bar: 10, baz: \\\"Hello World\\\", addr: 127.0.0.1 }\",\n /// format!(\"{:?}\", Foo {\n /// bar: 10,\n /// baz: \"Hello World\".to_string(),\n /// addr: Ipv4Addr::new(127, 0, 0, 1),\n /// })\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_struct<'b>(&'b mut self, name: &str) -> DebugStruct<'b, 'a> {\n builders::debug_struct_new(self, name)\n }\n\n /// Creates a `DebugTuple` builder designed to assist with creation of\n /// `fmt::Debug` implementations for tuple structs.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n /// use std::marker::PhantomData;\n ///\n /// struct Foo(i32, String, PhantomData);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_tuple(\"Foo\")\n /// .field(&self.0)\n /// .field(&self.1)\n /// .field(&format_args!(\"_\"))\n /// .finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// \"Foo(10, \\\"Hello\\\", _)\",\n /// format!(\"{:?}\", Foo(10, \"Hello\".to_string(), PhantomData::))\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_tuple<'b>(&'b mut self, name: &str) -> DebugTuple<'b, 'a> {\n builders::debug_tuple_new(self, name)\n }\n\n /// Creates a `DebugList` builder designed to assist with creation of\n /// `fmt::Debug` implementations for list-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_list().entries(self.0.iter()).finish()\n /// }\n /// }\n ///\n /// assert_eq!(format!(\"{:?}\", Foo(vec![10, 11])), \"[10, 11]\");\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_list<'b>(&'b mut self) -> DebugList<'b, 'a> {\n builders::debug_list_new(self)\n }\n\n /// Creates a `DebugSet` builder designed to assist with creation of\n /// `fmt::Debug` implementations for set-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_set().entries(self.0.iter()).finish()\n /// }\n /// }\n ///\n /// assert_eq!(format!(\"{:?}\", Foo(vec![10, 11])), \"{10, 11}\");\n /// ```\n ///\n /// [`format_args!`]: ../../std/macro.format_args.html\n ///\n /// In this more complex example, we use [`format_args!`] and `.debug_set()`\n /// to build a list of match arms:\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Arm<'a, L: 'a, R: 'a>(&'a (L, R));\n /// struct Table<'a, K: 'a, V: 'a>(&'a [(K, V)], V);\n ///\n /// impl<'a, L, R> fmt::Debug for Arm<'a, L, R>\n /// where\n /// L: 'a + fmt::Debug, R: 'a + fmt::Debug\n /// {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// L::fmt(&(self.0).0, fmt)?;\n /// fmt.write_str(\" => \")?;\n /// R::fmt(&(self.0).1, fmt)\n /// }\n /// }\n ///\n /// impl<'a, K, V> fmt::Debug for Table<'a, K, V>\n /// where\n /// K: 'a + fmt::Debug, V: 'a + fmt::Debug\n /// {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_set()\n /// .entries(self.0.iter().map(Arm))\n /// .entry(&Arm(&(format_args!(\"_\"), &self.1)))\n /// .finish()\n /// }\n /// }\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_set<'b>(&'b mut self) -> DebugSet<'b, 'a> {\n builders::debug_set_new(self)\n }\n\n /// Creates a `DebugMap` builder designed to assist with creation of\n /// `fmt::Debug` implementations for map-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec<(String, i32)>);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_map().entries(self.0.iter().map(|&(ref k, ref v)| (k, v))).finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// format!(\"{:?}\", Foo(vec![(\"A\".to_string(), 10), (\"B\".to_string(), 11)])),\n /// r#\"{\"A\": 10, \"B\": 11}\"#\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_map<'b>(&'b mut self) -> DebugMap<'b, 'a> {\n builders::debug_map_new(self)\n }\n}\n\n#[stable(since = \"1.2.0\", feature = \"formatter_write\")]\nimpl Write for Formatter<'_> {\n fn write_str(&mut self, s: &str) -> Result {\n self.buf.write_str(s)\n }\n\n fn write_char(&mut self, c: char) -> Result {\n self.buf.write_char(c)\n }\n\n fn write_fmt(&mut self, args: Arguments<'_>) -> Result {\n write(self.buf, args)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for Error {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(\"an error occurred when formatting an argument\", f)\n }\n}\n\n// Implementations of the core formatting traits\n\nmacro_rules! fmt_refs {\n ($($tr:ident),*) => {\n $(\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl $tr for &T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result { $tr::fmt(&**self, f) }\n }\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl $tr for &mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result { $tr::fmt(&**self, f) }\n }\n )*\n }\n}\n\nfmt_refs! { Debug, Display, Octal, Binary, LowerHex, UpperHex, LowerExp, UpperExp }\n\n#[unstable(feature = \"never_type\", issue = \"35121\")]\nimpl Debug for ! {\n fn fmt(&self, _: &mut Formatter<'_>) -> Result {\n *self\n }\n}\n\n#[unstable(feature = \"never_type\", issue = \"35121\")]\nimpl Display for ! {\n fn fmt(&self, _: &mut Formatter<'_>) -> Result {\n *self\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for bool {\n #[inline]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(self, f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for bool {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(if *self { \"true\" } else { \"false\" }, f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for str {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.write_char('\"')?;\n let mut from = 0;\n for (i, c) in self.char_indices() {\n let esc = c.escape_debug();\n // If char needs escaping, flush backlog so far and write, else skip\n if esc.len() != 1 {\n f.write_str(&self[from..i])?;\n for c in esc {\n f.write_char(c)?;\n }\n from = i + c.len_utf8();\n }\n }\n f.write_str(&self[from..])?;\n f.write_char('\"')\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for str {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for char {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.write_char('\\'')?;\n for c in self.escape_debug() {\n f.write_char(c)?\n }\n f.write_char('\\'')\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for char {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n if f.width.is_none() && f.precision.is_none() {\n f.write_char(*self)\n } else {\n f.pad(self.encode_utf8(&mut [0; 4]))\n }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for *const T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n let old_width = f.width;\n let old_flags = f.flags;\n\n // The alternate flag is already treated by LowerHex as being special-\n // it denotes whether to prefix with 0x. We use it to work out whether\n // or not to zero extend, and then unconditionally set it to get the\n // prefix.\n if f.alternate() {\n f.flags |= 1 << (FlagV1::SignAwareZeroPad as u32);\n\n if f.width.is_none() {\n f.width = Some(((mem::size_of::() * 8) / 4) + 2);\n }\n }\n f.flags |= 1 << (FlagV1::Alternate as u32);\n\n let ret = LowerHex::fmt(&(*self as *const () as usize), f);\n\n f.width = old_width;\n f.flags = old_flags;\n\n ret\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for *mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(*self as *const T), f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for &T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(*self as *const T), f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for &mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(&**self as *const T), f)\n }\n}\n\n// Implementation of Display/Debug for various core types\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for *const T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(self, f)\n }\n}\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for *mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(self, f)\n }\n}\n\nmacro_rules! peel {\n ($name:ident, $($other:ident,)*) => (tuple! { $($other,)* })\n}\n\nmacro_rules! tuple {\n () => ();\n ( $($name:ident,)+ ) => (\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl<$($name:Debug),+> Debug for ($($name,)+) where last_type!($($name,)+): ?Sized {\n #[allow(non_snake_case, unused_assignments)]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n let mut builder = f.debug_tuple(\"\");\n let ($(ref $name,)+) = *self;\n $(\n builder.field(&$name);\n )+\n\n builder.finish()\n }\n }\n peel! { $($name,)+ }\n )\n}\n\nmacro_rules! last_type {\n ($a:ident,) => { $a };\n ($a:ident, $($rest_a:ident,)+) => { last_type!($($rest_a,)+) };\n}\n\ntuple! { T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, }\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for [T] {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.debug_list().entries(self.iter()).finish()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for () {\n #[inline]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(\"()\")\n }\n}\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for PhantomData {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(\"PhantomData\")\n }\n}" ) , (2356, 69106, "") , ( 2356 , 0 , "//! Utilities for formatting and printing strings.\n\n#![stable(feature = \"rust1\", since = \"1.0.0\")]\n\nuse crate::cell::{Cell, Ref, RefCell, RefMut, UnsafeCell};\nuse crate::marker::PhantomData;\nuse crate::mem;\nuse crate::num::flt2dec;\nuse crate::ops::Deref;\nuse crate::result;\nuse crate::str;\n\nmod builders;\nmod float;\nmod num;\n\n#[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n/// Possible alignments returned by `Formatter::align`\n#[derive(Debug)]\npub enum Alignment {\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be left-aligned.\n Left,\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be right-aligned.\n Right,\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n /// Indication that contents should be center-aligned.\n Center,\n}\n\n#[stable(feature = \"debug_builders\", since = \"1.2.0\")]\npub use self::builders::{DebugList, DebugMap, DebugSet, DebugStruct, DebugTuple};\n\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n#[doc(hidden)]\npub mod rt {\n pub mod v1;\n}\n\n/// The type returned by formatter methods.\n///\n/// # Examples\n///\n/// ```\n/// use std::fmt;\n///\n/// #[derive(Debug)]\n/// struct Triangle {\n/// a: f32,\n/// b: f32,\n/// c: f32\n/// }\n///\n/// impl fmt::Display for Triangle {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// write!(f, \"({}, {}, {})\", self.a, self.b, self.c)\n/// }\n/// }\n///\n/// let pythagorean_triple = Triangle { a: 3.0, b: 4.0, c: 5.0 };\n///\n/// assert_eq!(format!(\"{}\", pythagorean_triple), \"(3, 4, 5)\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub type Result = result::Result<(), Error>;\n\n/// The error type which is returned from formatting a message into a stream.\n///\n/// This type does not support transmission of an error other than that an error\n/// occurred. Any extra information must be arranged to be transmitted through\n/// some other means.\n///\n/// An important thing to remember is that the type `fmt::Error` should not be\n/// confused with [`std::io::Error`] or [`std::error::Error`], which you may also\n/// have in scope.\n///\n/// [`std::io::Error`]: ../../std/io/struct.Error.html\n/// [`std::error::Error`]: ../../std/error/trait.Error.html\n///\n/// # Examples\n///\n/// ```rust\n/// use std::fmt::{self, write};\n///\n/// let mut output = String::new();\n/// if let Err(fmt::Error) = write(&mut output, format_args!(\"Hello {}!\", \"world\")) {\n/// panic!(\"An error occurred\");\n/// }\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct Error;\n\n/// A collection of methods that are required to format a message into a stream.\n///\n/// This trait is the type which this modules requires when formatting\n/// information. This is similar to the standard library's [`io::Write`] trait,\n/// but it is only intended for use in libcore.\n///\n/// This trait should generally not be implemented by consumers of the standard\n/// library. The [`write!`] macro accepts an instance of [`io::Write`], and the\n/// [`io::Write`] trait is favored over implementing this trait.\n///\n/// [`write!`]: ../../std/macro.write.html\n/// [`io::Write`]: ../../std/io/trait.Write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Write {\n /// Writes a string slice into this writer, returning whether the write\n /// succeeded.\n ///\n /// This method can only succeed if the entire string slice was successfully\n /// written, and this method will not return until all data has been\n /// written or an error occurs.\n ///\n /// # Errors\n ///\n /// This function will return an instance of [`Error`] on error.\n ///\n /// [`Error`]: struct.Error.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, s: &str) -> Result<(), Error> {\n /// f.write_str(s)\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, \"hola\").unwrap();\n /// assert_eq!(&buf, \"hola\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn write_str(&mut self, s: &str) -> Result;\n\n /// Writes a [`char`] into this writer, returning whether the write succeeded.\n ///\n /// A single [`char`] may be encoded as more than one byte.\n /// This method can only succeed if the entire byte sequence was successfully\n /// written, and this method will not return until all data has been\n /// written or an error occurs.\n ///\n /// # Errors\n ///\n /// This function will return an instance of [`Error`] on error.\n ///\n /// [`char`]: ../../std/primitive.char.html\n /// [`Error`]: struct.Error.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, c: char) -> Result<(), Error> {\n /// f.write_char(c)\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, 'a').unwrap();\n /// writer(&mut buf, 'b').unwrap();\n /// assert_eq!(&buf, \"ab\");\n /// ```\n #[stable(feature = \"fmt_write_char\", since = \"1.1.0\")]\n fn write_char(&mut self, c: char) -> Result {\n self.write_str(c.encode_utf8(&mut [0; 4]))\n }\n\n /// Glue for usage of the [`write!`] macro with implementors of this trait.\n ///\n /// This method should generally not be invoked manually, but rather through\n /// the [`write!`] macro itself.\n ///\n /// [`write!`]: ../../std/macro.write.html\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt::{Error, Write};\n ///\n /// fn writer(f: &mut W, s: &str) -> Result<(), Error> {\n /// f.write_fmt(format_args!(\"{}\", s))\n /// }\n ///\n /// let mut buf = String::new();\n /// writer(&mut buf, \"world\").unwrap();\n /// assert_eq!(&buf, \"world\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn write_fmt(mut self: &mut Self, args: Arguments<'_>) -> Result {\n write(&mut self, args)\n }\n}\n\n#[stable(feature = \"fmt_write_blanket_impl\", since = \"1.4.0\")]\nimpl Write for &mut W {\n fn write_str(&mut self, s: &str) -> Result {\n (**self).write_str(s)\n }\n\n fn write_char(&mut self, c: char) -> Result {\n (**self).write_char(c)\n }\n\n fn write_fmt(&mut self, args: Arguments<'_>) -> Result {\n (**self).write_fmt(args)\n }\n}\n\n/// Configuration for formatting.\n///\n/// A `Formatter` represents various options related to formatting. Users do not\n/// construct `Formatter`s directly; a mutable reference to one is passed to\n/// the `fmt` method of all formatting traits, like [`Debug`] and [`Display`].\n///\n/// To interact with a `Formatter`, you'll call various methods to change the\n/// various options related to formatting. For examples, please see the\n/// documentation of the methods defined on `Formatter` below.\n///\n/// [`Debug`]: trait.Debug.html\n/// [`Display`]: trait.Display.html\n#[allow(missing_debug_implementations)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub struct Formatter<'a> {\n flags: u32,\n fill: char,\n align: rt::v1::Alignment,\n width: Option,\n precision: Option,\n\n buf: &'a mut (dyn Write + 'a),\n}\n\n// NB. Argument is essentially an optimized partially applied formatting function,\n// equivalent to `exists T.(&T, fn(&T, &mut Formatter<'_>) -> Result`.\n\nextern \"C\" {\n type Opaque;\n}\n\n/// This struct represents the generic \"argument\" which is taken by the Xprintf\n/// family of functions. It contains a function to format the given value. At\n/// compile time it is ensured that the function and the value have the correct\n/// types, and then this struct is used to canonicalize arguments to one type.\n#[derive(Copy, Clone)]\n#[allow(missing_debug_implementations)]\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n#[doc(hidden)]\npub struct ArgumentV1<'a> {\n value: &'a Opaque,\n formatter: fn(&Opaque, &mut Formatter<'_>) -> Result,\n}\n\n// This guarantees a single stable value for the function pointer associated with\n// indices/counts in the formatting infrastructure.\n//\n// Note that a function defined as such would not be correct as functions are\n// always tagged unnamed_addr with the current lowering to LLVM IR, so their\n// address is not considered important to LLVM and as such the as_usize cast\n// could have been miscompiled. In practice, we never call as_usize on non-usize\n// containing data (as a matter of static generation of the formatting\n// arguments), so this is merely an additional check.\n//\n// We primarily want to ensure that the function pointer at `USIZE_MARKER` has\n// an address corresponding *only* to functions that also take `&usize` as their\n// first argument. The read_volatile here ensures that we can safely ready out a\n// usize from the passed reference and that this address does not point at a\n// non-usize taking function.\n#[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\nstatic USIZE_MARKER: fn(&usize, &mut Formatter<'_>) -> Result = |ptr, _| {\n // SAFETY: ptr is a reference\n let _v: usize = unsafe { crate::ptr::read_volatile(ptr) };\n loop {}\n};\n\nimpl<'a> ArgumentV1<'a> {\n #[doc(hidden)]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new<'b, T>(x: &'b T, f: fn(&T, &mut Formatter<'_>) -> Result) -> ArgumentV1<'b> {\n // SAFETY: `mem::transmute(x)` is safe because\n // 1. `&'b T` keeps the lifetime it originated with `'b`\n // (so as to not have an unbounded lifetime)\n // 2. `&'b T` and `&'b Opaque` have the same memory layout\n // (when `T` is `Sized`, as it is here)\n // `mem::transmute(f)` is safe since `fn(&T, &mut Formatter<'_>) -> Result`\n // and `fn(&Opaque, &mut Formatter<'_>) -> Result` have the same ABI\n // (as long as `T` is `Sized`)\n unsafe { ArgumentV1 { formatter: mem::transmute(f), value: mem::transmute(x) } }\n }\n\n #[doc(hidden)]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn from_usize(x: &usize) -> ArgumentV1<'_> {\n ArgumentV1::new(x, USIZE_MARKER)\n }\n\n fn as_usize(&self) -> Option {\n if self.formatter as usize == USIZE_MARKER as usize {\n // SAFETY: The `formatter` field is only set to USIZE_MARKER if\n // the value is a usize, so this is safe\n Some(unsafe { *(self.value as *const _ as *const usize) })\n } else {\n None\n }\n }\n}\n\n// flags available in the v1 format of format_args\n#[derive(Copy, Clone)]\nenum FlagV1 {\n SignPlus,\n SignMinus,\n Alternate,\n SignAwareZeroPad,\n DebugLowerHex,\n DebugUpperHex,\n}\n\nimpl<'a> Arguments<'a> {\n /// When using the format_args!() macro, this function is used to generate the\n /// Arguments structure.\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new_v1(pieces: &'a [&'a str], args: &'a [ArgumentV1<'a>]) -> Arguments<'a> {\n Arguments { pieces, fmt: None, args }\n }\n\n /// This function is used to specify nonstandard formatting parameters.\n /// The `pieces` array must be at least as long as `fmt` to construct\n /// a valid Arguments structure. Also, any `Count` within `fmt` that is\n /// `CountIsParam` or `CountIsNextParam` has to point to an argument\n /// created with `argumentusize`. However, failing to do so doesn't cause\n /// unsafety, but will ignore invalid .\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn new_v1_formatted(\n pieces: &'a [&'a str],\n args: &'a [ArgumentV1<'a>],\n fmt: &'a [rt::v1::Argument],\n ) -> Arguments<'a> {\n Arguments { pieces, fmt: Some(fmt), args }\n }\n\n /// Estimates the length of the formatted text.\n ///\n /// This is intended to be used for setting initial `String` capacity\n /// when using `format!`. Note: this is neither the lower nor upper bound.\n #[doc(hidden)]\n #[inline]\n #[unstable(feature = \"fmt_internals\", reason = \"internal to format_args!\", issue = \"none\")]\n pub fn estimated_capacity(&self) -> usize {\n let pieces_length: usize = self.pieces.iter().map(|x| x.len()).sum();\n\n if self.args.is_empty() {\n pieces_length\n } else if self.pieces[0] == \"\" && pieces_length < 16 {\n // If the format string starts with an argument,\n // don't preallocate anything, unless length\n // of pieces is significant.\n 0\n } else {\n // There are some arguments, so any additional push\n // will reallocate the string. To avoid that,\n // we're \"pre-doubling\" the capacity here.\n pieces_length.checked_mul(2).unwrap_or(0)\n }\n }\n}\n\n/// This structure represents a safely precompiled version of a format string\n/// and its arguments. This cannot be generated at runtime because it cannot\n/// safely be done, so no constructors are given and the fields are private\n/// to prevent modification.\n///\n/// The [`format_args!`] macro will safely create an instance of this structure.\n/// The macro validates the format string at compile-time so usage of the\n/// [`write`] and [`format`] functions can be safely performed.\n///\n/// You can use the `Arguments<'a>` that [`format_args!`] returns in `Debug`\n/// and `Display` contexts as seen below. The example also shows that `Debug`\n/// and `Display` format to the same thing: the interpolated format string\n/// in `format_args!`.\n///\n/// ```rust\n/// let debug = format!(\"{:?}\", format_args!(\"{} foo {:?}\", 1, 2));\n/// let display = format!(\"{}\", format_args!(\"{} foo {:?}\", 1, 2));\n/// assert_eq!(\"1 foo 2\", display);\n/// assert_eq!(display, debug);\n/// ```\n///\n/// [`format_args!`]: ../../std/macro.format_args.html\n/// [`format`]: ../../std/fmt/fn.format.html\n/// [`write`]: ../../std/fmt/fn.write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[derive(Copy, Clone)]\npub struct Arguments<'a> {\n // Format string pieces to print.\n pieces: &'a [&'a str],\n\n // Placeholder specs, or `None` if all specs are default (as in \"{}{}\").\n fmt: Option<&'a [rt::v1::Argument]>,\n\n // Dynamic arguments for interpolation, to be interleaved with string\n // pieces. (Every argument is preceded by a string piece.)\n args: &'a [ArgumentV1<'a>],\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for Arguments<'_> {\n fn fmt(&self, fmt: &mut Formatter<'_>) -> Result {\n Display::fmt(self, fmt)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for Arguments<'_> {\n fn fmt(&self, fmt: &mut Formatter<'_>) -> Result {\n write(fmt.buf, *self)\n }\n}\n\n/// `?` formatting.\n///\n/// `Debug` should format the output in a programmer-facing, debugging context.\n///\n/// Generally speaking, you should just `derive` a `Debug` implementation.\n///\n/// When used with the alternate format specifier `#?`, the output is pretty-printed.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// This trait can be used with `#[derive]` if all fields implement `Debug`. When\n/// `derive`d for structs, it will use the name of the `struct`, then `{`, then a\n/// comma-separated list of each field's name and `Debug` value, then `}`. For\n/// `enum`s, it will use the name of the variant and, if applicable, `(`, then the\n/// `Debug` values of the fields, then `)`.\n///\n/// # Stability\n///\n/// Derived `Debug` formats are not stable, and so may change with future Rust\n/// versions. Additionally, `Debug` implementations of types provided by the\n/// standard library (`libstd`, `libcore`, `liballoc`, etc.) are not stable, and\n/// may also change with future Rust versions.\n///\n/// # Examples\n///\n/// Deriving an implementation:\n///\n/// ```\n/// #[derive(Debug)]\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:?}\", origin), \"The origin is: Point { x: 0, y: 0 }\");\n/// ```\n///\n/// Manually implementing:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// impl fmt::Debug for Point {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// f.debug_struct(\"Point\")\n/// .field(\"x\", &self.x)\n/// .field(\"y\", &self.y)\n/// .finish()\n/// }\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:?}\", origin), \"The origin is: Point { x: 0, y: 0 }\");\n/// ```\n///\n/// There are a number of helper methods on the [`Formatter`] struct to help you with manual\n/// implementations, such as [`debug_struct`].\n///\n/// `Debug` implementations using either `derive` or the debug builder API\n/// on [`Formatter`] support pretty-printing using the alternate flag: `{:#?}`.\n///\n/// [`debug_struct`]: ../../std/fmt/struct.Formatter.html#method.debug_struct\n/// [`Formatter`]: ../../std/fmt/struct.Formatter.html\n///\n/// Pretty-printing with `#?`:\n///\n/// ```\n/// #[derive(Debug)]\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {:#?}\", origin),\n/// \"The origin is: Point {\n/// x: 0,\n/// y: 0,\n/// }\");\n/// ```\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[rustc_on_unimplemented(\n on(\n crate_local,\n label = \"`{Self}` cannot be formatted using `{{:?}}`\",\n note = \"add `#[derive(Debug)]` or manually implement `{Debug}`\"\n ),\n message = \"`{Self}` doesn't implement `{Debug}`\",\n label = \"`{Self}` cannot be formatted using `{{:?}}` because it doesn't implement `{Debug}`\"\n)]\n#[doc(alias = \"{:?}\")]\n#[rustc_diagnostic_item = \"debug_trait\"]\npub trait Debug {\n /// Formats the value using the given formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Position {\n /// longitude: f32,\n /// latitude: f32,\n /// }\n ///\n /// impl fmt::Debug for Position {\n /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n /// f.debug_tuple(\"\")\n /// .field(&self.longitude)\n /// .field(&self.latitude)\n /// .finish()\n /// }\n /// }\n ///\n /// let position = Position { longitude: 1.987, latitude: 2.983 };\n /// assert_eq!(format!(\"{:?}\", position), \"(1.987, 2.983)\");\n ///\n /// assert_eq!(format!(\"{:#?}\", position), \"(\n /// 1.987,\n /// 2.983,\n /// )\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n// Separate module to reexport the macro `Debug` from prelude without the trait `Debug`.\npub(crate) mod macros {\n /// Derive macro generating an impl of the trait `Debug`.\n #[rustc_builtin_macro]\n #[stable(feature = \"builtin_macro_prelude\", since = \"1.38.0\")]\n #[allow_internal_unstable(core_intrinsics)]\n pub macro Debug($item:item) {\n /* compiler built-in */\n }\n}\n#[stable(feature = \"builtin_macro_prelude\", since = \"1.38.0\")]\n#[doc(inline)]\npub use macros::Debug;\n\n/// Format trait for an empty format, `{}`.\n///\n/// `Display` is similar to [`Debug`][debug], but `Display` is for user-facing\n/// output, and so cannot be derived.\n///\n/// [debug]: trait.Debug.html\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Implementing `Display` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Point {\n/// x: i32,\n/// y: i32,\n/// }\n///\n/// impl fmt::Display for Point {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// write!(f, \"({}, {})\", self.x, self.y)\n/// }\n/// }\n///\n/// let origin = Point { x: 0, y: 0 };\n///\n/// assert_eq!(format!(\"The origin is: {}\", origin), \"The origin is: (0, 0)\");\n/// ```\n#[rustc_on_unimplemented(\n on(\n _Self = \"std::path::Path\",\n label = \"`{Self}` cannot be formatted with the default formatter; call `.display()` on it\",\n note = \"call `.display()` or `.to_string_lossy()` to safely print paths, \\\n as they may contain non-Unicode data\"\n ),\n message = \"`{Self}` doesn't implement `{Display}`\",\n label = \"`{Self}` cannot be formatted with the default formatter\",\n note = \"in format strings you may be able to use `{{:?}}` (or {{:#?}} for pretty-print) instead\"\n)]\n#[doc(alias = \"{}\")]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Display {\n /// Formats the value using the given formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Position {\n /// longitude: f32,\n /// latitude: f32,\n /// }\n ///\n /// impl fmt::Display for Position {\n /// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n /// write!(f, \"({}, {})\", self.longitude, self.latitude)\n /// }\n /// }\n ///\n /// assert_eq!(\"(1.987, 2.983)\",\n /// format!(\"{}\", Position { longitude: 1.987, latitude: 2.983, }));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `o` formatting.\n///\n/// The `Octal` trait should format its output as a number in base-8.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0o` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '52' in octal\n///\n/// assert_eq!(format!(\"{:o}\", x), \"52\");\n/// assert_eq!(format!(\"{:#o}\", x), \"0o52\");\n///\n/// assert_eq!(format!(\"{:o}\", -16), \"37777777760\");\n/// ```\n///\n/// Implementing `Octal` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Octal for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::Octal::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(9);\n///\n/// assert_eq!(format!(\"l as octal is: {:o}\", l), \"l as octal is: 11\");\n///\n/// assert_eq!(format!(\"l as octal is: {:#06o}\", l), \"l as octal is: 0o0011\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Octal {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `b` formatting.\n///\n/// The `Binary` trait should format its output as a number in binary.\n///\n/// For primitive signed integers ([`i8`] to [`i128`], and [`isize`]),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0b` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// # Examples\n///\n/// Basic usage with [`i32`]:\n///\n/// ```\n/// let x = 42; // 42 is '101010' in binary\n///\n/// assert_eq!(format!(\"{:b}\", x), \"101010\");\n/// assert_eq!(format!(\"{:#b}\", x), \"0b101010\");\n///\n/// assert_eq!(format!(\"{:b}\", -16), \"11111111111111111111111111110000\");\n/// ```\n///\n/// Implementing `Binary` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Binary for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::Binary::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(107);\n///\n/// assert_eq!(format!(\"l as binary is: {:b}\", l), \"l as binary is: 1101011\");\n///\n/// assert_eq!(\n/// format!(\"l as binary is: {:#032b}\", l),\n/// \"l as binary is: 0b000000000000000000000001101011\"\n/// );\n/// ```\n///\n/// [module]: ../../std/fmt/index.html\n/// [`i8`]: ../../std/primitive.i8.html\n/// [`i128`]: ../../std/primitive.i128.html\n/// [`isize`]: ../../std/primitive.isize.html\n/// [`i32`]: ../../std/primitive.i32.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Binary {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `x` formatting.\n///\n/// The `LowerHex` trait should format its output as a number in hexadecimal, with `a` through `f`\n/// in lower case.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0x` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '2a' in hex\n///\n/// assert_eq!(format!(\"{:x}\", x), \"2a\");\n/// assert_eq!(format!(\"{:#x}\", x), \"0x2a\");\n///\n/// assert_eq!(format!(\"{:x}\", -16), \"fffffff0\");\n/// ```\n///\n/// Implementing `LowerHex` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::LowerHex for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::LowerHex::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(9);\n///\n/// assert_eq!(format!(\"l as hex is: {:x}\", l), \"l as hex is: 9\");\n///\n/// assert_eq!(format!(\"l as hex is: {:#010x}\", l), \"l as hex is: 0x00000009\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait LowerHex {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `X` formatting.\n///\n/// The `UpperHex` trait should format its output as a number in hexadecimal, with `A` through `F`\n/// in upper case.\n///\n/// For primitive signed integers (`i8` to `i128`, and `isize`),\n/// negative values are formatted as the two_s complement representation.\n///\n/// The alternate flag, `#`, adds a `0x` in front of the output.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `i32`:\n///\n/// ```\n/// let x = 42; // 42 is '2A' in hex\n///\n/// assert_eq!(format!(\"{:X}\", x), \"2A\");\n/// assert_eq!(format!(\"{:#X}\", x), \"0x2A\");\n///\n/// assert_eq!(format!(\"{:X}\", -16), \"FFFFFFF0\");\n/// ```\n///\n/// Implementing `UpperHex` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::UpperHex for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = self.0;\n///\n/// fmt::UpperHex::fmt(&val, f) // delegate to i32's implementation\n/// }\n/// }\n///\n/// let l = Length(i32::MAX);\n///\n/// assert_eq!(format!(\"l as hex is: {:X}\", l), \"l as hex is: 7FFFFFFF\");\n///\n/// assert_eq!(format!(\"l as hex is: {:#010X}\", l), \"l as hex is: 0x7FFFFFFF\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait UpperHex {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `p` formatting.\n///\n/// The `Pointer` trait should format its output as a memory location. This is commonly presented\n/// as hexadecimal.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `&i32`:\n///\n/// ```\n/// let x = &42;\n///\n/// let address = format!(\"{:p}\", x); // this produces something like '0x7f06092ac6d0'\n/// ```\n///\n/// Implementing `Pointer` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::Pointer for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// // use `as` to convert to a `*const T`, which implements Pointer, which we can use\n///\n/// let ptr = self as *const Self;\n/// fmt::Pointer::fmt(&ptr, f)\n/// }\n/// }\n///\n/// let l = Length(42);\n///\n/// println!(\"l is in memory here: {:p}\", l);\n///\n/// let l_ptr = format!(\"{:018p}\", l);\n/// assert_eq!(l_ptr.len(), 18);\n/// assert_eq!(&l_ptr[..2], \"0x\");\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait Pointer {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `e` formatting.\n///\n/// The `LowerExp` trait should format its output in scientific notation with a lower-case `e`.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `f64`:\n///\n/// ```\n/// let x = 42.0; // 42.0 is '4.2e1' in scientific notation\n///\n/// assert_eq!(format!(\"{:e}\", x), \"4.2e1\");\n/// ```\n///\n/// Implementing `LowerExp` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::LowerExp for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = f64::from(self.0);\n/// fmt::LowerExp::fmt(&val, f) // delegate to f64's implementation\n/// }\n/// }\n///\n/// let l = Length(100);\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:e}\", l),\n/// \"l in scientific notation is: 1e2\"\n/// );\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:05e}\", l),\n/// \"l in scientific notation is: 001e2\"\n/// );\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait LowerExp {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// `E` formatting.\n///\n/// The `UpperExp` trait should format its output in scientific notation with an upper-case `E`.\n///\n/// For more information on formatters, see [the module-level documentation][module].\n///\n/// [module]: ../../std/fmt/index.html\n///\n/// # Examples\n///\n/// Basic usage with `f64`:\n///\n/// ```\n/// let x = 42.0; // 42.0 is '4.2E1' in scientific notation\n///\n/// assert_eq!(format!(\"{:E}\", x), \"4.2E1\");\n/// ```\n///\n/// Implementing `UpperExp` on a type:\n///\n/// ```\n/// use std::fmt;\n///\n/// struct Length(i32);\n///\n/// impl fmt::UpperExp for Length {\n/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n/// let val = f64::from(self.0);\n/// fmt::UpperExp::fmt(&val, f) // delegate to f64's implementation\n/// }\n/// }\n///\n/// let l = Length(100);\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:E}\", l),\n/// \"l in scientific notation is: 1E2\"\n/// );\n///\n/// assert_eq!(\n/// format!(\"l in scientific notation is: {:05E}\", l),\n/// \"l in scientific notation is: 001E2\"\n/// );\n/// ```\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub trait UpperExp {\n /// Formats the value using the given formatter.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result;\n}\n\n/// The `write` function takes an output stream, and an `Arguments` struct\n/// that can be precompiled with the `format_args!` macro.\n///\n/// The arguments will be formatted according to the specified format string\n/// into the output stream provided.\n///\n/// # Examples\n///\n/// Basic usage:\n///\n/// ```\n/// use std::fmt;\n///\n/// let mut output = String::new();\n/// fmt::write(&mut output, format_args!(\"Hello {}!\", \"world\"))\n/// .expect(\"Error occurred while trying to write in String\");\n/// assert_eq!(output, \"Hello world!\");\n/// ```\n///\n/// Please note that using [`write!`] might be preferable. Example:\n///\n/// ```\n/// use std::fmt::Write;\n///\n/// let mut output = String::new();\n/// write!(&mut output, \"Hello {}!\", \"world\")\n/// .expect(\"Error occurred while trying to write in String\");\n/// assert_eq!(output, \"Hello world!\");\n/// ```\n///\n/// [`write!`]: ../../std/macro.write.html\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result {\n let mut formatter = Formatter {\n flags: 0,\n width: None,\n precision: None,\n buf: output,\n align: rt::v1::Alignment::Unknown,\n fill: ' ',\n };\n\n let mut idx = 0;\n\n match args.fmt {\n None => {\n // We can use default formatting parameters for all arguments.\n for (arg, piece) in args.args.iter().zip(args.pieces.iter()) {\n formatter.buf.write_str(*piece)?;\n (arg.formatter)(arg.value, &mut formatter)?;\n idx += 1;\n }\n }\n Some(fmt) => {\n // Every spec has a corresponding argument that is preceded by\n // a string piece.\n for (arg, piece) in fmt.iter().zip(args.pieces.iter()) {\n formatter.buf.write_str(*piece)?;\n run(&mut formatter, arg, &args.args)?;\n idx += 1;\n }\n }\n }\n\n // There can be only one trailing string piece left.\n if let Some(piece) = args.pieces.get(idx) {\n formatter.buf.write_str(*piece)?;\n }\n\n Ok(())\n}\n\nfn run(fmt: &mut Formatter<'_>, arg: &rt::v1::Argument, args: &[ArgumentV1<'_>]) -> Result {\n fmt.fill = arg.format.fill;\n fmt.align = arg.format.align;\n fmt.flags = arg.format.flags;\n fmt.width = getcount(args, &arg.format.width);\n fmt.precision = getcount(args, &arg.format.precision);\n\n // Extract the correct argument\n let value = args[arg.position];\n\n // Then actually do some printing\n (value.formatter)(value.value, fmt)\n}\n\nfn getcount(args: &[ArgumentV1<'_>], cnt: &rt::v1::Count) -> Option {\n match *cnt {\n rt::v1::Count::Is(n) => Some(n),\n rt::v1::Count::Implied => None,\n rt::v1::Count::Param(i) => args[i].as_usize(),\n }\n}\n\n/// Padding after the end of something. Returned by `Formatter::padding`.\n#[must_use = \"don't forget to write the post padding\"]\nstruct PostPadding {\n fill: char,\n padding: usize,\n}\n\nimpl PostPadding {\n fn new(fill: char, padding: usize) -> PostPadding {\n PostPadding { fill, padding }\n }\n\n /// Write this post padding.\n fn write(self, buf: &mut dyn Write) -> Result {\n for _ in 0..self.padding {\n buf.write_char(self.fill)?;\n }\n Ok(())\n }\n}\n\nimpl<'a> Formatter<'a> {\n fn wrap_buf<'b, 'c, F>(&'b mut self, wrap: F) -> Formatter<'c>\n where\n 'b: 'c,\n F: FnOnce(&'b mut (dyn Write + 'b)) -> &'c mut (dyn Write + 'c),\n {\n Formatter {\n // We want to change this\n buf: wrap(self.buf),\n\n // And preserve these\n flags: self.flags,\n fill: self.fill,\n align: self.align,\n width: self.width,\n precision: self.precision,\n }\n }\n\n // Helper methods used for padding and processing formatting arguments that\n // all formatting traits can use.\n\n /// Performs the correct padding for an integer which has already been\n /// emitted into a str. The str should *not* contain the sign for the\n /// integer, that will be added by this method.\n ///\n /// # Arguments\n ///\n /// * is_nonnegative - whether the original integer was either positive or zero.\n /// * prefix - if the '#' character (Alternate) is provided, this\n /// is the prefix to put in front of the number.\n /// * buf - the byte array that the number has been formatted into\n ///\n /// This function will correctly account for the flags provided as well as\n /// the minimum width. It will not take precision into account.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo { nb: i32 };\n ///\n /// impl Foo {\n /// fn new(nb: i32) -> Foo {\n /// Foo {\n /// nb,\n /// }\n /// }\n /// }\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// // We need to remove \"-\" from the number output.\n /// let tmp = self.nb.abs().to_string();\n ///\n /// formatter.pad_integral(self.nb > 0, \"Foo \", &tmp)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo::new(2)), \"2\");\n /// assert_eq!(&format!(\"{}\", Foo::new(-1)), \"-1\");\n /// assert_eq!(&format!(\"{:#}\", Foo::new(-1)), \"-Foo 1\");\n /// assert_eq!(&format!(\"{:0>#8}\", Foo::new(-1)), \"00-Foo 1\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn pad_integral(&mut self, is_nonnegative: bool, prefix: &str, buf: &str) -> Result {\n let mut width = buf.len();\n\n let mut sign = None;\n if !is_nonnegative {\n sign = Some('-');\n width += 1;\n } else if self.sign_plus() {\n sign = Some('+');\n width += 1;\n }\n\n let prefix = if self.alternate() {\n width += prefix.chars().count();\n Some(prefix)\n } else {\n None\n };\n\n // Writes the sign if it exists, and then the prefix if it was requested\n #[inline(never)]\n fn write_prefix(f: &mut Formatter<'_>, sign: Option, prefix: Option<&str>) -> Result {\n if let Some(c) = sign {\n f.buf.write_char(c)?;\n }\n if let Some(prefix) = prefix { f.buf.write_str(prefix) } else { Ok(()) }\n }\n\n // The `width` field is more of a `min-width` parameter at this point.\n match self.width {\n // If there's no minimum length requirements then we can just\n // write the bytes.\n None => {\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)\n }\n // Check if we're over the minimum width, if so then we can also\n // just write the bytes.\n Some(min) if width >= min => {\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)\n }\n // The sign and prefix goes before the padding if the fill character\n // is zero\n Some(min) if self.sign_aware_zero_pad() => {\n let old_fill = crate::mem::replace(&mut self.fill, '0');\n let old_align = crate::mem::replace(&mut self.align, rt::v1::Alignment::Right);\n write_prefix(self, sign, prefix)?;\n let post_padding = self.padding(min - width, rt::v1::Alignment::Right)?;\n self.buf.write_str(buf)?;\n post_padding.write(self.buf)?;\n self.fill = old_fill;\n self.align = old_align;\n Ok(())\n }\n // Otherwise, the sign and prefix goes after the padding\n Some(min) => {\n let post_padding = self.padding(min - width, rt::v1::Alignment::Right)?;\n write_prefix(self, sign, prefix)?;\n self.buf.write_str(buf)?;\n post_padding.write(self.buf)\n }\n }\n }\n\n /// This function takes a string slice and emits it to the internal buffer\n /// after applying the relevant formatting flags specified. The flags\n /// recognized for generic strings are:\n ///\n /// * width - the minimum width of what to emit\n /// * fill/align - what to emit and where to emit it if the string\n /// provided needs to be padded\n /// * precision - the maximum length to emit, the string is truncated if it\n /// is longer than this length\n ///\n /// Notably this function ignores the `flag` parameters.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.pad(\"Foo\")\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:<4}\", Foo), \"Foo \");\n /// assert_eq!(&format!(\"{:0>4}\", Foo), \"0Foo\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn pad(&mut self, s: &str) -> Result {\n // Make sure there's a fast path up front\n if self.width.is_none() && self.precision.is_none() {\n return self.buf.write_str(s);\n }\n // The `precision` field can be interpreted as a `max-width` for the\n // string being formatted.\n let s = if let Some(max) = self.precision {\n // If our string is longer that the precision, then we must have\n // truncation. However other flags like `fill`, `width` and `align`\n // must act as always.\n if let Some((i, _)) = s.char_indices().nth(max) {\n // LLVM here can't prove that `..i` won't panic `&s[..i]`, but\n // we know that it can't panic. Use `get` + `unwrap_or` to avoid\n // `unsafe` and otherwise don't emit any panic-related code\n // here.\n s.get(..i).unwrap_or(&s)\n } else {\n &s\n }\n } else {\n &s\n };\n // The `width` field is more of a `min-width` parameter at this point.\n match self.width {\n // If we're under the maximum length, and there's no minimum length\n // requirements, then we can just emit the string\n None => self.buf.write_str(s),\n // If we're under the maximum width, check if we're over the minimum\n // width, if so it's as easy as just emitting the string.\n Some(width) if s.chars().count() >= width => self.buf.write_str(s),\n // If we're under both the maximum and the minimum width, then fill\n // up the minimum width with the specified string + some alignment.\n Some(width) => {\n let align = rt::v1::Alignment::Left;\n let post_padding = self.padding(width - s.chars().count(), align)?;\n self.buf.write_str(s)?;\n post_padding.write(self.buf)\n }\n }\n }\n\n /// Write the pre-padding and return the unwritten post-padding. Callers are\n /// responsible for ensuring post-padding is written after the thing that is\n /// being padded.\n fn padding(\n &mut self,\n padding: usize,\n default: rt::v1::Alignment,\n ) -> result::Result {\n let align = match self.align {\n rt::v1::Alignment::Unknown => default,\n _ => self.align,\n };\n\n let (pre_pad, post_pad) = match align {\n rt::v1::Alignment::Left => (0, padding),\n rt::v1::Alignment::Right | rt::v1::Alignment::Unknown => (padding, 0),\n rt::v1::Alignment::Center => (padding / 2, (padding + 1) / 2),\n };\n\n for _ in 0..pre_pad {\n self.buf.write_char(self.fill)?;\n }\n\n Ok(PostPadding::new(self.fill, post_pad))\n }\n\n /// Takes the formatted parts and applies the padding.\n /// Assumes that the caller already has rendered the parts with required precision,\n /// so that `self.precision` can be ignored.\n fn pad_formatted_parts(&mut self, formatted: &flt2dec::Formatted<'_>) -> Result {\n if let Some(mut width) = self.width {\n // for the sign-aware zero padding, we render the sign first and\n // behave as if we had no sign from the beginning.\n let mut formatted = formatted.clone();\n let old_fill = self.fill;\n let old_align = self.align;\n let mut align = old_align;\n if self.sign_aware_zero_pad() {\n // a sign always goes first\n let sign = formatted.sign;\n self.buf.write_str(sign)?;\n\n // remove the sign from the formatted parts\n formatted.sign = \"\";\n width = width.saturating_sub(sign.len());\n align = rt::v1::Alignment::Right;\n self.fill = '0';\n self.align = rt::v1::Alignment::Right;\n }\n\n // remaining parts go through the ordinary padding process.\n let len = formatted.len();\n let ret = if width <= len {\n // no padding\n self.write_formatted_parts(&formatted)\n } else {\n let post_padding = self.padding(width - len, align)?;\n self.write_formatted_parts(&formatted)?;\n post_padding.write(self.buf)\n };\n self.fill = old_fill;\n self.align = old_align;\n ret\n } else {\n // this is the common case and we take a shortcut\n self.write_formatted_parts(formatted)\n }\n }\n\n fn write_formatted_parts(&mut self, formatted: &flt2dec::Formatted<'_>) -> Result {\n fn write_bytes(buf: &mut dyn Write, s: &[u8]) -> Result {\n // SAFETY: This is used for `flt2dec::Part::Num` and `flt2dec::Part::Copy`.\n // It's safe to use for `flt2dec::Part::Num` since every char `c` is between\n // `b'0'` and `b'9'`, which means `s` is valid UTF-8.\n // It's also probably safe in practice to use for `flt2dec::Part::Copy(buf)`\n // since `buf` should be plain ASCII, but it's possible for someone to pass\n // in a bad value for `buf` into `flt2dec::to_shortest_str` since it is a\n // public function.\n // FIXME: Determine whether this could result in UB.\n buf.write_str(unsafe { str::from_utf8_unchecked(s) })\n }\n\n if !formatted.sign.is_empty() {\n self.buf.write_str(formatted.sign)?;\n }\n for part in formatted.parts {\n match *part {\n flt2dec::Part::Zero(mut nzeroes) => {\n const ZEROES: &str = // 64 zeroes\n \"0000000000000000000000000000000000000000000000000000000000000000\";\n while nzeroes > ZEROES.len() {\n self.buf.write_str(ZEROES)?;\n nzeroes -= ZEROES.len();\n }\n if nzeroes > 0 {\n self.buf.write_str(&ZEROES[..nzeroes])?;\n }\n }\n flt2dec::Part::Num(mut v) => {\n let mut s = [0; 5];\n let len = part.len();\n for c in s[..len].iter_mut().rev() {\n *c = b'0' + (v % 10) as u8;\n v /= 10;\n }\n write_bytes(self.buf, &s[..len])?;\n }\n flt2dec::Part::Copy(buf) => {\n write_bytes(self.buf, buf)?;\n }\n }\n }\n Ok(())\n }\n\n /// Writes some data to the underlying buffer contained within this\n /// formatter.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.write_str(\"Foo\")\n /// // This is equivalent to:\n /// // write!(formatter, \"Foo\")\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo), \"Foo\");\n /// assert_eq!(&format!(\"{:0>8}\", Foo), \"Foo\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn write_str(&mut self, data: &str) -> Result {\n self.buf.write_str(data)\n }\n\n /// Writes some formatted information into this instance.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// formatter.write_fmt(format_args!(\"Foo {}\", self.0))\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{}\", Foo(-1)), \"Foo -1\");\n /// assert_eq!(&format!(\"{:0>8}\", Foo(2)), \"Foo 2\");\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result {\n write(self.buf, fmt)\n }\n\n /// Flags for formatting\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[rustc_deprecated(\n since = \"1.24.0\",\n reason = \"use the `sign_plus`, `sign_minus`, `alternate`, \\\n or `sign_aware_zero_pad` methods instead\"\n )]\n pub fn flags(&self) -> u32 {\n self.flags\n }\n\n /// Character used as 'fill' whenever there is alignment.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// let c = formatter.fill();\n /// if let Some(width) = formatter.width() {\n /// for _ in 0..width {\n /// write!(formatter, \"{}\", c)?;\n /// }\n /// Ok(())\n /// } else {\n /// write!(formatter, \"{}\", c)\n /// }\n /// }\n /// }\n ///\n /// // We set alignment to the left with \">\".\n /// assert_eq!(&format!(\"{:G>3}\", Foo), \"GGG\");\n /// assert_eq!(&format!(\"{:t>6}\", Foo), \"tttttt\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn fill(&self) -> char {\n self.fill\n }\n\n /// Flag indicating what form of alignment was requested.\n ///\n /// # Examples\n ///\n /// ```\n /// extern crate core;\n ///\n /// use std::fmt::{self, Alignment};\n ///\n /// struct Foo;\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// let s = if let Some(s) = formatter.align() {\n /// match s {\n /// Alignment::Left => \"left\",\n /// Alignment::Right => \"right\",\n /// Alignment::Center => \"center\",\n /// }\n /// } else {\n /// \"into the void\"\n /// };\n /// write!(formatter, \"{}\", s)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:<}\", Foo), \"left\");\n /// assert_eq!(&format!(\"{:>}\", Foo), \"right\");\n /// assert_eq!(&format!(\"{:^}\", Foo), \"center\");\n /// assert_eq!(&format!(\"{}\", Foo), \"into the void\");\n /// ```\n #[stable(feature = \"fmt_flags_align\", since = \"1.28.0\")]\n pub fn align(&self) -> Option {\n match self.align {\n rt::v1::Alignment::Left => Some(Alignment::Left),\n rt::v1::Alignment::Right => Some(Alignment::Right),\n rt::v1::Alignment::Center => Some(Alignment::Center),\n rt::v1::Alignment::Unknown => None,\n }\n }\n\n /// Optionally specified integer width that the output should be.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if let Some(width) = formatter.width() {\n /// // If we received a width, we use it\n /// write!(formatter, \"{:width$}\", &format!(\"Foo({})\", self.0), width = width)\n /// } else {\n /// // Otherwise we do nothing special\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:10}\", Foo(23)), \"Foo(23) \");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn width(&self) -> Option {\n self.width\n }\n\n /// Optionally specified precision for numeric types. Alternatively, the\n /// maximum width for string types.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(f32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if let Some(precision) = formatter.precision() {\n /// // If we received a precision, we use it.\n /// write!(formatter, \"Foo({1:.*})\", precision, self.0)\n /// } else {\n /// // Otherwise we default to 2.\n /// write!(formatter, \"Foo({:.2})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:.4}\", Foo(23.2)), \"Foo(23.2000)\");\n /// assert_eq!(&format!(\"{}\", Foo(23.2)), \"Foo(23.20)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn precision(&self) -> Option {\n self.precision\n }\n\n /// Determines if the `+` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.sign_plus() {\n /// write!(formatter,\n /// \"Foo({}{})\",\n /// if self.0 < 0 { '-' } else { '+' },\n /// self.0)\n /// } else {\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:+}\", Foo(23)), \"Foo(+23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_plus(&self) -> bool {\n self.flags & (1 << FlagV1::SignPlus as u32) != 0\n }\n\n /// Determines if the `-` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.sign_minus() {\n /// // You want a minus sign? Have one!\n /// write!(formatter, \"-Foo({})\", self.0)\n /// } else {\n /// write!(formatter, \"Foo({})\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:-}\", Foo(23)), \"-Foo(23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"Foo(23)\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_minus(&self) -> bool {\n self.flags & (1 << FlagV1::SignMinus as u32) != 0\n }\n\n /// Determines if the `#` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// if formatter.alternate() {\n /// write!(formatter, \"Foo({})\", self.0)\n /// } else {\n /// write!(formatter, \"{}\", self.0)\n /// }\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:#}\", Foo(23)), \"Foo(23)\");\n /// assert_eq!(&format!(\"{}\", Foo(23)), \"23\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn alternate(&self) -> bool {\n self.flags & (1 << FlagV1::Alternate as u32) != 0\n }\n\n /// Determines if the `0` flag was specified.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::fmt;\n ///\n /// struct Foo(i32);\n ///\n /// impl fmt::Display for Foo {\n /// fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {\n /// assert!(formatter.sign_aware_zero_pad());\n /// assert_eq!(formatter.width(), Some(4));\n /// // We ignore the formatter's options.\n /// write!(formatter, \"{}\", self.0)\n /// }\n /// }\n ///\n /// assert_eq!(&format!(\"{:04}\", Foo(23)), \"23\");\n /// ```\n #[stable(feature = \"fmt_flags\", since = \"1.5.0\")]\n pub fn sign_aware_zero_pad(&self) -> bool {\n self.flags & (1 << FlagV1::SignAwareZeroPad as u32) != 0\n }\n\n // FIXME: Decide what public API we want for these two flags.\n // https://github.com/rust-lang/rust/issues/48584\n fn debug_lower_hex(&self) -> bool {\n self.flags & (1 << FlagV1::DebugLowerHex as u32) != 0\n }\n\n fn debug_upper_hex(&self) -> bool {\n self.flags & (1 << FlagV1::DebugUpperHex as u32) != 0\n }\n\n /// Creates a [`DebugStruct`] builder designed to assist with creation of\n /// [`fmt::Debug`] implementations for structs.\n ///\n /// [`DebugStruct`]: ../../std/fmt/struct.DebugStruct.html\n /// [`fmt::Debug`]: ../../std/fmt/trait.Debug.html\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n /// use std::net::Ipv4Addr;\n ///\n /// struct Foo {\n /// bar: i32,\n /// baz: String,\n /// addr: Ipv4Addr,\n /// }\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_struct(\"Foo\")\n /// .field(\"bar\", &self.bar)\n /// .field(\"baz\", &self.baz)\n /// .field(\"addr\", &format_args!(\"{}\", self.addr))\n /// .finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// \"Foo { bar: 10, baz: \\\"Hello World\\\", addr: 127.0.0.1 }\",\n /// format!(\"{:?}\", Foo {\n /// bar: 10,\n /// baz: \"Hello World\".to_string(),\n /// addr: Ipv4Addr::new(127, 0, 0, 1),\n /// })\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_struct<'b>(&'b mut self, name: &str) -> DebugStruct<'b, 'a> {\n builders::debug_struct_new(self, name)\n }\n\n /// Creates a `DebugTuple` builder designed to assist with creation of\n /// `fmt::Debug` implementations for tuple structs.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n /// use std::marker::PhantomData;\n ///\n /// struct Foo(i32, String, PhantomData);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_tuple(\"Foo\")\n /// .field(&self.0)\n /// .field(&self.1)\n /// .field(&format_args!(\"_\"))\n /// .finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// \"Foo(10, \\\"Hello\\\", _)\",\n /// format!(\"{:?}\", Foo(10, \"Hello\".to_string(), PhantomData::))\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_tuple<'b>(&'b mut self, name: &str) -> DebugTuple<'b, 'a> {\n builders::debug_tuple_new(self, name)\n }\n\n /// Creates a `DebugList` builder designed to assist with creation of\n /// `fmt::Debug` implementations for list-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_list().entries(self.0.iter()).finish()\n /// }\n /// }\n ///\n /// assert_eq!(format!(\"{:?}\", Foo(vec![10, 11])), \"[10, 11]\");\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_list<'b>(&'b mut self) -> DebugList<'b, 'a> {\n builders::debug_list_new(self)\n }\n\n /// Creates a `DebugSet` builder designed to assist with creation of\n /// `fmt::Debug` implementations for set-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_set().entries(self.0.iter()).finish()\n /// }\n /// }\n ///\n /// assert_eq!(format!(\"{:?}\", Foo(vec![10, 11])), \"{10, 11}\");\n /// ```\n ///\n /// [`format_args!`]: ../../std/macro.format_args.html\n ///\n /// In this more complex example, we use [`format_args!`] and `.debug_set()`\n /// to build a list of match arms:\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Arm<'a, L: 'a, R: 'a>(&'a (L, R));\n /// struct Table<'a, K: 'a, V: 'a>(&'a [(K, V)], V);\n ///\n /// impl<'a, L, R> fmt::Debug for Arm<'a, L, R>\n /// where\n /// L: 'a + fmt::Debug, R: 'a + fmt::Debug\n /// {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// L::fmt(&(self.0).0, fmt)?;\n /// fmt.write_str(\" => \")?;\n /// R::fmt(&(self.0).1, fmt)\n /// }\n /// }\n ///\n /// impl<'a, K, V> fmt::Debug for Table<'a, K, V>\n /// where\n /// K: 'a + fmt::Debug, V: 'a + fmt::Debug\n /// {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_set()\n /// .entries(self.0.iter().map(Arm))\n /// .entry(&Arm(&(format_args!(\"_\"), &self.1)))\n /// .finish()\n /// }\n /// }\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_set<'b>(&'b mut self) -> DebugSet<'b, 'a> {\n builders::debug_set_new(self)\n }\n\n /// Creates a `DebugMap` builder designed to assist with creation of\n /// `fmt::Debug` implementations for map-like structures.\n ///\n /// # Examples\n ///\n /// ```rust\n /// use std::fmt;\n ///\n /// struct Foo(Vec<(String, i32)>);\n ///\n /// impl fmt::Debug for Foo {\n /// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {\n /// fmt.debug_map().entries(self.0.iter().map(|&(ref k, ref v)| (k, v))).finish()\n /// }\n /// }\n ///\n /// assert_eq!(\n /// format!(\"{:?}\", Foo(vec![(\"A\".to_string(), 10), (\"B\".to_string(), 11)])),\n /// r#\"{\"A\": 10, \"B\": 11}\"#\n /// );\n /// ```\n #[stable(feature = \"debug_builders\", since = \"1.2.0\")]\n pub fn debug_map<'b>(&'b mut self) -> DebugMap<'b, 'a> {\n builders::debug_map_new(self)\n }\n}\n\n#[stable(since = \"1.2.0\", feature = \"formatter_write\")]\nimpl Write for Formatter<'_> {\n fn write_str(&mut self, s: &str) -> Result {\n self.buf.write_str(s)\n }\n\n fn write_char(&mut self, c: char) -> Result {\n self.buf.write_char(c)\n }\n\n fn write_fmt(&mut self, args: Arguments<'_>) -> Result {\n write(self.buf, args)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for Error {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(\"an error occurred when formatting an argument\", f)\n }\n}\n\n// Implementations of the core formatting traits\n\nmacro_rules! fmt_refs {\n ($($tr:ident),*) => {\n $(\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl $tr for &T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result { $tr::fmt(&**self, f) }\n }\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl $tr for &mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result { $tr::fmt(&**self, f) }\n }\n )*\n }\n}\n\nfmt_refs! { Debug, Display, Octal, Binary, LowerHex, UpperHex, LowerExp, UpperExp }\n\n#[unstable(feature = \"never_type\", issue = \"35121\")]\nimpl Debug for ! {\n fn fmt(&self, _: &mut Formatter<'_>) -> Result {\n *self\n }\n}\n\n#[unstable(feature = \"never_type\", issue = \"35121\")]\nimpl Display for ! {\n fn fmt(&self, _: &mut Formatter<'_>) -> Result {\n *self\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for bool {\n #[inline]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(self, f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for bool {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Display::fmt(if *self { \"true\" } else { \"false\" }, f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for str {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.write_char('\"')?;\n let mut from = 0;\n for (i, c) in self.char_indices() {\n let esc = c.escape_debug();\n // If char needs escaping, flush backlog so far and write, else skip\n if esc.len() != 1 {\n f.write_str(&self[from..i])?;\n for c in esc {\n f.write_char(c)?;\n }\n from = i + c.len_utf8();\n }\n }\n f.write_str(&self[from..])?;\n f.write_char('\"')\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for str {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for char {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.write_char('\\'')?;\n for c in self.escape_debug() {\n f.write_char(c)?\n }\n f.write_char('\\'')\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Display for char {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n if f.width.is_none() && f.precision.is_none() {\n f.write_char(*self)\n } else {\n f.pad(self.encode_utf8(&mut [0; 4]))\n }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for *const T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n let old_width = f.width;\n let old_flags = f.flags;\n\n // The alternate flag is already treated by LowerHex as being special-\n // it denotes whether to prefix with 0x. We use it to work out whether\n // or not to zero extend, and then unconditionally set it to get the\n // prefix.\n if f.alternate() {\n f.flags |= 1 << (FlagV1::SignAwareZeroPad as u32);\n\n if f.width.is_none() {\n f.width = Some(((mem::size_of::() * 8) / 4) + 2);\n }\n }\n f.flags |= 1 << (FlagV1::Alternate as u32);\n\n let ret = LowerHex::fmt(&(*self as *const () as usize), f);\n\n f.width = old_width;\n f.flags = old_flags;\n\n ret\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for *mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(*self as *const T), f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for &T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(*self as *const T), f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Pointer for &mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(&(&**self as *const T), f)\n }\n}\n\n// Implementation of Display/Debug for various core types\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for *const T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(self, f)\n }\n}\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for *mut T {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n Pointer::fmt(self, f)\n }\n}\n\nmacro_rules! peel {\n ($name:ident, $($other:ident,)*) => (tuple! { $($other,)* })\n}\n\nmacro_rules! tuple {\n () => ();\n ( $($name:ident,)+ ) => (\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n impl<$($name:Debug),+> Debug for ($($name,)+) where last_type!($($name,)+): ?Sized {\n #[allow(non_snake_case, unused_assignments)]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n let mut builder = f.debug_tuple(\"\");\n let ($(ref $name,)+) = *self;\n $(\n builder.field(&$name);\n )+\n\n builder.finish()\n }\n }\n peel! { $($name,)+ }\n )\n}\n\nmacro_rules! last_type {\n ($a:ident,) => { $a };\n ($a:ident, $($rest_a:ident,)+) => { last_type!($($rest_a,)+) };\n}\n\ntuple! { T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, }\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for [T] {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.debug_list().entries(self.iter()).finish()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for () {\n #[inline]\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(\"()\")\n }\n}\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Debug for PhantomData {\n fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n f.pad(\"PhantomData\")\n }\n}" ) , (2356, 69106, "") , (2356, 0, "i") , (2357, 0, "m") , (2358, 0, "p") , (2359, 0, "l") , (2356, 4, "") , ( 2259 , 0 , "impl Default for ItemMarker {\n fn default() -> Self { Self::null() }\n}\n\n" ) , (2377, 7, "D") , (2378, 0, "e") , (2379, 0, "b") , (2380, 0, "u") , (2381, 0, "g") , (2377, 0, "f") , (2378, 0, "m") , (2379, 0, "t") , (2380, 0, ":") , (2381, 0, ":") , (2415, 37, "") , (2415, 0, "f") , (2416, 0, "n") , (2417, 0, " ") , (2418, 0, "f") , (2419, 0, "m") , (2420, 0, "t") , (2421, 0, "(") , (2422, 0, "&") , (2423, 0, "s") , (2424, 0, "e") , (2425, 0, "l") , (2426, 0, "f") , (2427, 0, ",") , (2428, 0, " ") , (2429, 0, "f") , (2430, 0, ":") , (2431, 0, " ") , (2432, 0, "&") , (2433, 0, "m") , (2434, 0, "u") , (2435, 0, "t") , (2436, 0, " ") , (2437, 0, "F") , (2438, 0, "o") , (2439, 0, "r") , (2440, 0, "m") , (2441, 0, "a") , (2442, 0, "t") , (2443, 0, "t") , (2444, 0, "e") , (2445, 0, "r") , (2446, 0, "<") , (2447, 0, "'") , (2448, 0, "_") , (2449, 0, "'") , (2449, 1, "") , (2449, 0, ">") , (2450, 0, ")") , (2451, 0, " ") , (2452, 0, "-") , (2453, 0, ">") , (2454, 0, " ") , (2455, 0, "R") , (2456, 0, "e") , (2457, 0, "s") , (2458, 0, "u") , (2459, 0, "l") , (2460, 0, "t") , (2461, 0, " ") , (2462, 0, "{") , (2463, 0, "\n ") , (2472, 0, "\n ") , (2464, 8, "") , (2465, 8, " }") , (2464, 0, " ") , (2472, 0, "f") , (2473, 0, ".") , (2474, 0, "p") , (2475, 0, "a") , (2476, 0, "d") , (2477, 0, "(") , (2478, 0, "\"") , (2479, 0, "I") , (2480, 0, "t") , (2481, 0, "e") , (2482, 0, "m") , (2483, 0, "M") , (2484, 0, "a") , (2485, 0, "r") , (2486, 0, "k") , (2487, 0, "e") , (2488, 0, "r") , (2489, 0, "\"") , (2490, 0, ")") , (2491, 0, ";") , (2491, 1, "") , (2437, 0, "f") , (2438, 0, "m") , (2439, 0, "t") , (2440, 0, ":") , (2441, 0, ":") , (2460, 0, "s") , (2461, 0, "t") , (2462, 0, ":") , (2462, 1, "") , (2462, 0, "d") , (2463, 0, ":") , (2464, 0, ":") , (2460, 3, "f") , (2461, 0, "m") , (2462, 0, "t") , (3651, 0, "\nimpl ListItem for u8 {}") , (3651, 0, "\nimpl ListItem for u8 {}") , (3675, 0, "\n") , (3646, 2, "b") , (3647, 0, "o") , (3648, 0, "o") , (3649, 0, "l") , (3672, 2, "c") , (3673, 0, "h") , (3674, 0, "a") , (3675, 0, "r") , (3680, 1, "") , (3933, 0, "\n") , (3933, 0, "impl ListItem for bool {}\nimpl ListItem for char {}\n") , (3984, 1, "") , (3951, 0, "&") , (3978, 0, "&") , (3154, 0, "\n ") , (3159, 0, "\n ") , (3155, 4, "") , (3160, 0, "f") , (3161, 0, "n") , (3162, 0, " ") , (3163, 0, "m") , (3164, 0, "e") , (3165, 0, "r") , (3166, 0, "g") , (3167, 0, "e") , (3168, 0, "_") , (3169, 0, "i") , (3170, 0, "n") , (3171, 0, "t") , (3172, 0, "o") , (3173, 0, "(") , (3174, 0, "&") , (3175, 0, "m") , (3176, 0, "u") , (3177, 0, "t") , (3178, 0, " ") , (3179, 0, "s") , (3180, 0, "e") , (3181, 0, "l") , (3182, 0, "f") , (3183, 0, ",") , (3184, 0, " ") , (3185, 0, "o") , (3186, 0, "t") , (3187, 0, "h") , (3188, 0, "e") , (3189, 0, "r") , (3190, 0, ":") , (3191, 0, " ") , (3192, 0, "&") , (3193, 0, "S") , (3194, 0, "e") , (3195, 0, "p") , (3196, 0, "l") , (3197, 0, "f") , (3197, 1, "") , (3196, 1, "") , (3195, 1, "") , (3195, 0, "l") , (3196, 0, "f") , (3197, 0, ")") , (3198, 0, " ") , (3199, 0, "-") , (3199, 1, "") , (3199, 0, "-") , (3200, 0, ">") , (3201, 0, " ") , (3202, 0, "b") , (3203, 0, "o") , (3204, 0, "o") , (3205, 0, "l") , (3206, 0, ";") , (3160, 0, "// ") , (3156, 0, " // fn merge_into(&mut self, other: &Self) -> bool;\n") , (3215, 3, "") , (3210, 0, "\n ") , (3223, 10, "c") , (3211, 4, "") , (3220, 0, "a") , (3221, 0, "n") , (3222, 0, "_") , (3223, 0, "m") , (3224, 0, "e") , (3225, 0, "r") , (3226, 0, "g") , (3227, 0, "e") , (3230, 4, "") , (3258, 0, "\n ") , (3263, 0, "f") , (3264, 0, "n") , (3265, 0, " ") , (3266, 0, "m") , (3267, 0, "e") , (3268, 0, "r") , (3269, 0, "g") , (3270, 0, "e") , (3271, 0, "(") , (3272, 0, "&") , (3272, 1, "") , (3272, 0, "s") , (3273, 0, "e") , (3274, 0, "l") , (3275, 0, "f") , (3276, 0, ",") , (3277, 0, " ") , (3278, 0, "t") , (3279, 0, "h") , (3279, 1, "") , (3278, 1, "") , (3278, 0, "i") , (3279, 0, "t") , (3280, 0, "h") , (3281, 0, "e") , (3282, 0, "r") , (3283, 0, ":") , (3284, 0, " ") , (3285, 0, "S") , (3286, 0, "e") , (3287, 0, "l") , (3288, 0, "f") , (3278, 1, "") , (3278, 0, "o") , (3289, 0, ")") , (3290, 0, " ") , (3291, 0, "-") , (3292, 0, ".") , (3293, 0, " ") , (3294, 0, "S") , (3294, 1, "") , (3293, 1, "") , (3292, 1, "") , (3292, 0, ">") , (3293, 0, " ") , (3294, 0, "S") , (3295, 0, "e") , (3296, 0, "l") , (3297, 0, "f") , (3298, 0, ";") , (3299, 0, "\n ") , (3300, 4, "") , (3263, 0, "// ") , (3216, 0, "// ") , (3306, 0, "\n ") , (3311, 0, "f") , (3312, 0, "n") , (3313, 0, " ") , (3314, 0, "t") , (3315, 0, "r") , (3316, 0, "y") , (3317, 0, "_") , (3318, 0, "m") , (3319, 0, "e") , (3320, 0, "r") , (3321, 0, "g") , (3322, 0, "e") , (3323, 0, "(") , (3324, 0, "&") , (3325, 0, "s") , (3326, 0, "e") , (3327, 0, "l") , (3328, 0, "f") , (3329, 0, ",") , (3330, 0, " ") , (3331, 0, "o") , (3332, 0, "t") , (3333, 0, "h") , (3334, 0, "e") , (3335, 0, "r") , (3336, 0, ":") , (3337, 0, " ") , (3338, 0, "&") , (3339, 0, "s") , (3340, 0, "e") , (3341, 0, "l") , (3342, 0, "f") , (3343, 0, ")") , (3344, 0, " ") , (3345, 0, "-") , (3346, 0, ">") , (3347, 0, " ") , (3348, 0, "O") , (3349, 0, "p") , (3350, 0, "t") , (3351, 0, "i") , (3352, 0, "o") , (3353, 0, "n") , (3354, 0, "<") , (3355, 0, "S") , (3356, 0, "e") , (3357, 0, "l") , (3358, 0, "f") , (3359, 0, ")") , (3359, 1, "") , (3359, 0, ">") , (3360, 0, ";") , (3361, 0, "/") , (3362, 0, "/") , (3362, 1, "") , (3361, 1, "") , (3311, 0, "// ") , (3211, 153, "") , (3210, 1, "") , (3160, 3, "") , (3206, 1, "") , (3206, 0, " ") , (3207, 0, "{") , (3208, 0, "\n ") , (3209, 8, " }") , (3208, 0, "\n ") , (3217, 0, "f") , (3218, 0, "a") , (3219, 0, "l") , (3220, 0, "s") , (3221, 0, "e") , (3155, 0, "\n ") , (3160, 0, "/") , (3161, 0, "/") , (3162, 0, " ") , (3163, 0, "T") , (3164, 0, "r") , (3165, 0, "y") , (3156, 10, "") , (3155, 1, "") , (3185, 0, "_") , (3163, 0, "t") , (3164, 0, "r") , (3165, 0, "y") , (3166, 0, "_") , (3176, 1, "") , (3175, 1, "") , (3174, 1, "") , (3173, 1, "") , (3172, 1, "") , (3172, 0, "_into") , (2835, 0, "\n ") , (3168, 14, "m") , (2836, 4, "") , (3165, 0, "e") , (3166, 0, "r") , (3167, 0, "g") , (3168, 0, "e") , (3169, 0, "_") , (3170, 0, "f") , (3171, 0, "r") , (3172, 0, "o") , (3173, 0, "m") , (2836, 0, "/") , (2837, 0, "/") , (2838, 0, "/") , (2838, 1, "") , (2837, 1, "") , (2836, 1, "") , (2836, 0, " ") , (2844, 0, "/") , (2845, 0, "/") , (2846, 0, "/") , (2846, 1, "") , (2845, 1, "") , (2844, 1, "") , (2840, 4, "") , (2840, 0, "/") , (2841, 0, "/") , (2842, 0, "/") , (2843, 0, "/") , (2844, 0, " ") , (2844, 1, "") , (2843, 1, "") , (2843, 0, " ") , (2844, 0, "T") , (2845, 0, "h") , (2846, 0, "e") , (2847, 0, " ") , (2848, 0, "u") , (2849, 0, "s") , (2850, 0, "e") , (2851, 0, "r") , (2848, 4, "l") , (2849, 0, "e") , (2850, 0, "n") , (2851, 0, "g") , (2844, 8, "A") , (2845, 0, "n") , (2846, 0, " ") , (2847, 0, "o") , (2848, 0, "p") , (2849, 0, "t") , (2850, 0, "i") , (2851, 0, "m") , (2852, 0, "i") , (2853, 0, "z") , (2854, 0, "e") , (2855, 0, "d") , (2856, 0, " ") , (2857, 0, "v") , (2858, 0, "e") , (2859, 0, "r") , (2857, 3, "m") , (2858, 0, "e") , (2859, 0, "t") , (2860, 0, "h") , (2861, 0, "o") , (2862, 0, "d") , (2863, 0, " ") , (2864, 0, "t") , (2865, 0, "o") , (2866, 0, " ") , (2867, 0, "c") , (2868, 0, "a") , (2869, 0, "l") , (2870, 0, "c") , (2871, 0, "u") , (2872, 0, "l") , (2873, 0, "a") , (2874, 0, "t") , (2875, 0, "e") , (2876, 0, " ") , (2877, 0, "t") , (2878, 0, "h") , (2879, 0, "e") , (2880, 0, " ") , (2881, 0, "u") , (2882, 0, "s") , (2883, 0, "e") , (2884, 0, "r") , (2885, 0, "l") , (2886, 0, "e") , (2887, 0, "n") , (2888, 0, " ") , (2889, 0, "o") , (2890, 0, "f") , (2891, 0, " ") , (2892, 0, "a") , (2893, 0, " ") , (2894, 0, "s") , (2895, 0, "l") , (2896, 0, "i") , (2897, 0, "c") , (2898, 0, "e") , (2899, 0, " ") , (2900, 0, "o") , (2901, 0, "f") , (2902, 0, " ") , (2903, 0, "L") , (2904, 0, "i") , (2905, 0, "s") , (2906, 0, "t") , (2907, 0, "I") , (2908, 0, "t") , (2909, 0, "e") , (2910, 0, "m") , (2911, 0, "s") , (2912, 0, ".") , (2913, 0, " ") , (2914, 0, "T") , (2915, 0, "h") , (2916, 0, "e") , (2917, 0, " ") , (2918, 0, "d") , (2919, 0, "e") , (2920, 0, "f") , (2921, 0, "a") , (2922, 0, "u") , (2923, 0, "l") , (2924, 0, "t") , (2925, 0, " ") , (2926, 0, "i") , (2927, 0, "m") , (2928, 0, "p") , (2929, 0, "l") , (2930, 0, "e") , (2931, 0, "m") , (2932, 0, "e") , (2933, 0, "n") , (2934, 0, "t") , (2935, 0, "a") , (2936, 0, "t") , (2937, 0, "i") , (2938, 0, "o") , (2939, 0, "n") , (2940, 0, " ") , (2941, 0, "s") , (2942, 0, "i") , (2943, 0, "m") , (2944, 0, "p") , (2945, 0, "l") , (2946, 0, "y") , (2947, 0, " ") , (2948, 0, "c") , (2949, 0, "a") , (2950, 0, "l") , (2951, 0, "l") , (2952, 0, "s") , (2953, 0, " ") , (2954, 0, "g") , (2954, 1, "") , (2954, 0, "[") , (2955, 0, "`") , (2956, 0, "g") , (2957, 0, "e") , (2958, 0, "t") , (2959, 0, "_") , (2960, 0, "u") , (2961, 0, "s") , (2962, 0, "e") , (2963, 0, "r") , (2964, 0, "s") , (2965, 0, "i") , (2966, 0, "z") , (2967, 0, "e") , (2968, 0, "`") , (2969, 0, "]") , (2970, 0, " ") , (2971, 0, "i") , (2972, 0, "n") , (2973, 0, " ") , (2974, 0, "a") , (2975, 0, " ") , (2976, 0, "l") , (2977, 0, "o") , (2978, 0, "o") , (2979, 0, "p") , (2980, 0, ".") , ( 2836 , 145 , " /// An optimized method to calculate the userlen of a slice of ListItems.\n /// The default implementation simply calls [`get_usersize`] in a loop." ) , (3144, 0, "\n ") , (3149, 0, "/") , (3150, 0, "/") , (3151, 0, "/") , (3152, 0, " ") , (3153, 0, "S") , (3154, 0, "p") , (3155, 0, "l") , (3156, 0, "i") , (3157, 0, "t") , (3158, 0, " ") , (3159, 0, "t") , (3160, 0, "h") , (3161, 0, "e") , (3162, 0, " ") , (3163, 0, "s") , (3164, 0, "p") , (3165, 0, "e") , (3163, 3, "n") , (3164, 0, "a") , (3165, 0, "m") , (3166, 0, "e") , (3167, 0, "d") , (3168, 0, " ") , (3169, 0, "i") , (3170, 0, "t") , (3171, 0, "e") , (3172, 0, "m") , (3173, 0, " ") , (3174, 0, "a") , (3175, 0, "t") , (3174, 2, "i") , (3175, 0, "n") , (3176, 0, " ") , (3177, 0, "a") , (3177, 1, "") , (3176, 1, "") , (3176, 0, "t") , (3177, 0, "o") , (3178, 0, " ") , (3179, 0, "a") , (3180, 0, " ") , (3181, 0, "p") , (3182, 0, "a") , (3183, 0, "i") , (3184, 0, "r") , (3185, 0, " ") , (3186, 0, "o") , (3187, 0, "f") , (3188, 0, " ") , (3189, 0, "i") , (3190, 0, "t") , (3191, 0, "e") , (3192, 0, "m") , (3193, 0, "s") , (3163, 5, "p") , (3164, 0, "a") , (3165, 0, "s") , (3166, 0, "s") , (3167, 0, "e") , (3168, 0, "d") , (3195, 0, " ") , (3196, 0, "a") , (3197, 0, "t") , (3198, 0, " ") , (3199, 0, "a") , (3200, 0, " ") , (3201, 0, "s") , (3202, 0, "p") , (3202, 1, "") , (3201, 1, "") , (3200, 1, "") , (3199, 1, "") , (3199, 0, "a") , (3200, 0, " ") , (3201, 0, "s") , (3201, 1, "") , (3200, 1, "") , (3199, 1, "") , (3198, 1, "") , (3198, 0, " ") , (3199, 0, "s") , (3200, 0, "o") , (3201, 0, "m") , (3202, 0, "e") , (3203, 0, " ") , (3204, 0, "s") , (3205, 0, "p") , (3206, 0, "e") , (3207, 0, "c") , (3208, 0, "i") , (3209, 0, "f") , (3210, 0, "i") , (3211, 0, "e") , (3212, 0, "d") , (3213, 0, " ") , (3214, 0, "o") , (3215, 0, "f") , (3216, 0, "f") , (3217, 0, "s") , (3218, 0, "e") , (3219, 0, "t") , (3220, 0, ".") , (3204, 10, "") , (3230, 1, "") , ( 19527 , 0 , "\n pub(super) unsafe fn current_item<'a>(&self) -> Option<&'a Item> {\n let node = &*self.here_ptr();\n if self.local_index < node.num_items as usize {\n // Ok - just return the current item.\n Some(&*(node.items[self.local_index].as_ptr()))\n } else {\n // Peek the first item in the next node.\n self.peek_next_item().map(|ptr| &*ptr)\n }\n }\n" ) , (19966, 12, "t") , (19967, 0, "a") , (19968, 0, "k") , (19969, 0, "e") , (19970, 0, "_") , (19971, 0, "i") , (19972, 0, "t") , (19973, 0, "e") , (19974, 0, "m") , (19981, 0, "m") , (19982, 0, "u") , (19983, 0, "t") , (19984, 0, " ") , (20001, 1, "") , (20001, 1, "") , (20001, 1, "") , (20001, 1, "") , (20295, 0, "// ") , (20282, 0, "\n ") , (20295, 0, "u") , (20296, 0, "n") , (20297, 0, "i") , (20298, 0, "m") , (20299, 0, "p") , (20300, 0, "l") , (20295, 6, "unimplemented") , (20308, 0, "(") , (20309, 0, ")") , (20310, 0, ";") , (20380, 0, "// ") , (20370, 0, "// ") , (20316, 0, "// ") , (20287, 0, "// ") , (20234, 0, "// ") , (20217, 0, "// ") , (20157, 0, "// ") , (20107, 0, "// ") , (20051, 0, "// ") , (20013, 0, "// ") , (19945, 0, "// ") , (19532, 11, "") , (19532, 0, "pub(super) ") , (20410, 3, "") , (20397, 3, "") , (20340, 3, "") , (20308, 3, "") , (20252, 3, "") , (20232, 3, "") , (20169, 3, "") , (20116, 3, "") , (20057, 3, "") , (20016, 3, "") , (19945, 3, "") , (20380, 0, "// ") , (20370, 0, "// ") , (20316, 0, "// ") , (20287, 0, "// ") , (20234, 0, "// ") , (20217, 0, "// ") , (20157, 0, "// ") , (20107, 0, "// ") , (20051, 0, "// ") , (20013, 0, "// ") , (19945, 0, "// ") , (19243, 11, "") , (19892, 1, "") , (19889, 2, "nod") , (19266, 1, "") , (19263, 2, "nod") , (19298, 212, "") , (19302, 0, "// ") , (19243, 0, "// ") , ( 19656 , 50 , " let next = (*self.here_ptr()).get_next_ptr();\n if next.is_null() { None }\n else {\n debug_assert!((*next).num_items > 0);\n Some((*next).items[0].as_mut_ptr())\n }\n" ) , (19868, 0, " ") , (19858, 8, " ") , (19810, 12, " ") , (19760, 12, " ") , (19745, 8, " ") , (19710, 8, " ") , (19656, 8, " ") , (19892, 4, "") , (19878, 12, " ") , (19826, 16, " ") , (19772, 16, " ") , (19753, 12, " ") , (19714, 12, " ") , (19656, 12, " ") , (19656, 212, " self.peek_next_node().map(|ptr| &*ptr)") , (19305, 3, "") , (19243, 3, "") , ( 19298 , 0 , " let next = (*self.here_ptr()).get_next_ptr();\n if next.is_null() { None }\n else {\n debug_assert!((*next).num_items > 0);\n Some((*next).items[0].as_mut_ptr())\n }\n" ) , (19893, 0, "_start") , (19267, 0, "_start") , (20411, 3, "") , (20398, 3, "") , (20341, 3, "") , (20309, 3, "") , (20253, 3, "") , (20233, 3, "") , (20170, 3, "") , (20117, 3, "") , (20058, 3, "") , (20017, 3, "") , (19946, 3, "") , (19975, 1, "") , (19974, 1, "") , (19973, 1, "") , (19972, 1, "") , (19972, 0, "p") , (19973, 0, "r") , (19974, 0, "e") , (19975, 0, "v") , (19976, 0, "_") , (19976, 1, "") , (20047, 0, "\n ") , (20056, 0, "i") , (20057, 0, "f") , (20058, 0, " ") , (20059, 0, "s") , (20060, 0, "e") , (20061, 0, "l") , (20062, 0, "f") , (20063, 0, ".") , (20064, 0, "i") , (20065, 0, "n") , (20066, 0, "d") , (20067, 0, "e") , (20064, 4, "l") , (20065, 0, "o") , (20066, 0, "c") , (20067, 0, "a") , (20068, 0, "l") , (20064, 5, "local_index") , (20075, 0, " ") , (20076, 0, "=") , (20077, 0, "=") , (20078, 0, " ") , (20079, 0, "0") , (20080, 0, " ") , (20081, 0, "{") , (20082, 0, " ") , (20083, 0, "N") , (20084, 0, "o") , (20085, 0, "n") , (20086, 0, "e") , (20087, 0, " ") , (20088, 0, "}") , (20098, 0, "e") , (20099, 0, "l") , (20100, 0, "s") , (20101, 0, "e") , (20102, 0, " ") , (20270, 153, "") , (20103, 45, "") , (20102, 1, "") , (20102, 0, " if self.local_index < node.num_items as usize") , (20103, 45, "") , (20102, 1, "") , (20104, 0, "\n ") , (20117, 0, "d") , (20118, 0, "e") , (20119, 0, "b") , (20120, 0, "u") , (20121, 0, "g") , (20117, 5, "debug_assert!") , (20130, 0, "(") , (20131, 0, "if self.local_index < node.num_items as usize") , (20131, 3, "") , (20298, 0, "// ") , (20288, 0, "// ") , (20228, 0, "// ") , (20178, 0, "// ") , (20109, 0, "// ") , (20094, 0, "// ") , (20052, 0, "// ") , (20014, 0, "// ") , (19946, 0, "// ") , (3265, 0, "\n fn split_item(self, _at: usize) -> (Self, Self) {") , (3270, 0, "// ") , (3230, 0, "&") , (1069, 2, "2") ] end