@@ -173,14 +173,114 @@ impl<'treeseq> Tree<'treeseq> {
173173
174174 /// Return all roots as a vector.
175175 pub fn roots_to_vec ( & self ) -> Vec < NodeId > {
176- self . roots ( ) . collect :: < Vec :: < _ > > ( )
176+ self . roots ( ) . collect :: < Vec < _ > > ( )
177177 }
178178
179179 /// Get the list of sample nodes as a slice.
180180 pub fn sample_nodes ( & self ) -> & [ NodeId ] {
181181 self . inner . sample_nodes ( )
182182 }
183183
184+ /// # Failing examples
185+ ///
186+ /// The lifetime of the slice is tied to the parent object:
187+ ///
188+ /// ```compile_fail
189+ /// use streaming_iterator::StreamingIterator;
190+ /// let tables = tskit::TableCollection::new(1.).unwrap();
191+ /// let treeseq =
192+ /// tables.tree_sequence(tskit::TreeSequenceFlags::BUILD_INDEXES).unwrap();
193+ /// let mut tree_iter = treeseq.tree_iterator(tskit::TreeFlags::default()).unwrap();
194+ /// while let Some(tree) = tree_iter.next() {
195+ /// let r = tree.left_sib_array();
196+ /// drop(tree_iter);
197+ /// for _ in r {} // ERROR
198+ /// }
199+ /// ```
200+ pub fn left_sib_array ( & self ) -> & [ NodeId ] {
201+ self . inner . left_sib_array ( )
202+ }
203+
204+ /// # Failing examples
205+ ///
206+ /// The lifetime of the slice is tied to the parent object:
207+ ///
208+ /// ```compile_fail
209+ /// use streaming_iterator::StreamingIterator;
210+ /// let tables = tskit::TableCollection::new(1.).unwrap();
211+ /// let treeseq =
212+ /// tables.tree_sequence(tskit::TreeSequenceFlags::BUILD_INDEXES).unwrap();
213+ /// let mut tree_iter = treeseq.tree_iterator(tskit::TreeFlags::default()).unwrap();
214+ /// while let Some(tree) = tree_iter.next() {
215+ /// let r = tree.right_sib_array();
216+ /// drop(tree_iter);
217+ /// for _ in r {} // ERROR
218+ /// }
219+ /// ```
220+ pub fn right_sib_array ( & self ) -> & [ NodeId ] {
221+ self . inner . right_sib_array ( )
222+ }
223+
224+ /// # Failing examples
225+ ///
226+ /// The lifetime of the slice is tied to the parent object:
227+ ///
228+ /// ```compile_fail
229+ /// use streaming_iterator::StreamingIterator;
230+ /// let tables = tskit::TableCollection::new(1.).unwrap();
231+ /// let treeseq =
232+ /// tables.tree_sequence(tskit::TreeSequenceFlags::BUILD_INDEXES).unwrap();
233+ /// let mut tree_iter = treeseq.tree_iterator(tskit::TreeFlags::default()).unwrap();
234+ /// while let Some(tree) = tree_iter.next() {
235+ /// let l = tree.left_child_array();
236+ /// drop(tree_iter);
237+ /// for _ in l {} // ERROR
238+ /// }
239+ /// ```
240+ pub fn left_child_array ( & self ) -> & [ NodeId ] {
241+ self . inner . left_child_array ( )
242+ }
243+
244+ /// # Failing examples
245+ ///
246+ /// The lifetime of the slice is tied to the parent object:
247+ ///
248+ /// ```compile_fail
249+ /// use streaming_iterator::StreamingIterator;
250+ /// let tables = tskit::TableCollection::new(1.).unwrap();
251+ /// let treeseq =
252+ /// tables.tree_sequence(tskit::TreeSequenceFlags::BUILD_INDEXES).unwrap();
253+ /// let mut tree_iter = treeseq.tree_iterator(tskit::TreeFlags::default()).unwrap();
254+ /// while let Some(tree) = tree_iter.next() {
255+ /// let r = tree.right_child_array();
256+ /// drop(tree_iter);
257+ /// for _ in r {} // ERROR
258+ /// }
259+ /// ```
260+ pub fn right_child_array ( & self ) -> & [ NodeId ] {
261+ self . inner . right_child_array ( )
262+ }
263+
264+ /// # Failing examples
265+ ///
266+ /// The lifetime of the slice is tied to the parent object:
267+ ///
268+ /// ```compile_fail
269+ /// use streaming_iterator::StreamingIterator;
270+ /// let tables = tskit::TableCollection::new(1.).unwrap();
271+ /// let treeseq =
272+ /// tables.tree_sequence(tskit::TreeSequenceFlags::BUILD_INDEXES).unwrap();
273+ /// let mut tree_iter = treeseq.tree_iterator(tskit::TreeFlags::default()).unwrap();
274+ /// while let Some(tree) = tree_iter.next() {
275+ /// let p = tree.parent_array();
276+ /// drop(tree_iter);
277+ /// for _ in p {} // ERROR
278+ /// }
279+ /// ```
280+ pub fn parent_array ( & self ) -> & [ NodeId ] {
281+ self . inner . parent_array ( )
282+ }
283+
184284 /// Return an [`Iterator`] over all nodes in the tree.
185285 ///
186286 /// # Parameters
0 commit comments