}
#[inline]
- pub(crate) fn drain_branches(&mut self, depth: usize) -> std::vec::Drain<BranchOccurrences> {
+ pub(crate) fn drain_branches(
+ &mut self,
+ depth: usize,
+ ) -> std::vec::Drain<'_, BranchOccurrences> {
let start_idx = self.len() - depth;
self.drain(start_idx..)
}
pub fn eager_stackful_preorder_iter(
heap: &mut Heap,
value: HeapCellValue,
-) -> EagerStackfulPreOrderHeapIter {
+) -> EagerStackfulPreOrderHeapIter<'_> {
EagerStackfulPreOrderHeapIter::new(heap, value)
}
pub(crate) fn stackless_preorder_iter(
heap: &mut Heap,
start: usize,
- ) -> StacklessPreOrderHeapIter<IteratorUMP> {
+ ) -> StacklessPreOrderHeapIter<'_, IteratorUMP> {
StacklessPreOrderHeapIter::<IteratorUMP>::new(heap, start)
}
pub(crate) fn stackless_post_order_iter(
heap: &'_ mut Heap,
start: usize,
- ) -> RightistPostOrderHeapIter {
+ ) -> RightistPostOrderHeapIter<'_> {
PostOrderIterator::new(stackless_preorder_iter(heap, start))
}
OpenList(Rc<Cell<(bool, usize)>>),
CloseList(Rc<Cell<(bool, usize)>>),
HeadTailSeparator,
- StackPop,
CommaSeparatedCharList(CommaSeparatedCharList),
}
TokenOrRedirect::Space => push_char!(self, ' '),
TokenOrRedirect::LeftCurly => push_char!(self, '{'),
TokenOrRedirect::RightCurly => push_char!(self, '}'),
- TokenOrRedirect::StackPop => {
- self.iter.pop_stack();
- self.state_stack.push(TokenOrRedirect::Atom(atom!("...")));
- }
TokenOrRedirect::CommaSeparatedCharList(char_list) => {
self.print_comma_separated_char_list(char_list);
}
}
}
-pub(crate) fn post_order_iter(term: &'_ Term) -> QueryIterator {
+pub(crate) fn post_order_iter(term: &Term) -> QueryIterator<'_> {
QueryIterator::from_term(term)
}
pub(crate) fn breadth_first_iter(
- term: &'_ Term,
+ term: &Term,
iterable_root: RootIterationPolicy,
-) -> FactIterator {
+) -> FactIterator<'_> {
FactIterator::new(term, iterable_root)
}
remaining_chunks_on_stack: usize,
}
-fn state_from_chunked_terms(chunk_vec: &'_ VecDeque<ChunkedTerms>) -> ClauseIteratorState {
+fn state_from_chunked_terms(chunk_vec: &VecDeque<ChunkedTerms>) -> ClauseIteratorState<'_> {
if chunk_vec.len() == 1 {
if let Some(ChunkedTerms::Branch(ref branches)) = chunk_vec.front() {
return ClauseIteratorState::RemainingBranches(branches, 0);
// returns the tail location of the pstr on success
fn as_slice_from<'a>(&'a self, from: usize) -> Box<dyn Iterator<Item = u8> + 'a>;
fn copy_pstr_to_threshold(&mut self, pstr_loc: usize) -> Result<usize, usize>;
- fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter, usize>;
+ fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter<'_>, usize>;
fn copy_slice_to_end(&mut self, bounds: Range<usize>) -> Result<(), usize>;
}
use std::hash::{Hash, Hasher};
use std::ops::{Deref, DerefMut};
-#[derive(Debug, Clone)]//, PartialOrd, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone)] //, PartialOrd, PartialEq, Eq, Hash)]
pub struct BranchNumber {
branch_num: Rational,
delta: Rational,
}
// The heap_slice should be inside the heap
-unsafe fn scan_slice_to_str(heap_slice: &[u8]) -> HeapStringScan {
+unsafe fn scan_slice_to_str(heap_slice: &[u8]) -> HeapStringScan<'_> {
let string_len = heap_slice
.iter()
.position(|b| *b == 0u8)
// Same as scan_slice_to_str but assumes that the slice is from the start of a string.
// Can be used on strings out of the heap.
-unsafe fn scan_slice_to_str_from_start(heap_slice: &[u8]) -> HeapStringScan {
+unsafe fn scan_slice_to_str_from_start(heap_slice: &[u8]) -> HeapStringScan<'_> {
let string_len = heap_slice
.iter()
.position(|b| *b == 0u8)
self.section.cell_len()
}
- fn scan_slice_to_str(&self, slice_loc: usize) -> HeapStringScan {
+ fn scan_slice_to_str(&self, slice_loc: usize) -> HeapStringScan<'_> {
let HeapStringScan { string, tail_idx } = unsafe {
let slice = std::slice::from_raw_parts(
self.section.heap_ptr.byte_add(slice_loc),
}
}
- pub fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter, usize> {
+ pub fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter<'_>, usize> {
let section;
let len = heap_index!(num_cells);
self.cell_len()
}
- fn scan_slice_to_str(&self, slice_loc: usize) -> HeapStringScan {
+ fn scan_slice_to_str(&self, slice_loc: usize) -> HeapStringScan<'_> {
let HeapStringScan { string, tail_idx } = unsafe {
let slice = std::slice::from_raw_parts(
self.inner.ptr.add(slice_loc),
}
/// Runs a query.
- pub fn run_query(&mut self, query: impl Into<String>) -> QueryState {
+ pub fn run_query(&mut self, query: impl Into<String>) -> QueryState<'_> {
let mut parser = Parser::new(
Stream::from_owned_string(query.into(), &mut self.machine_st.arena),
&mut self.machine_st,
pub(super) fn composite_op_dir(
&self,
compilation_target: &CompilationTarget,
- ) -> CompositeOpDir {
+ ) -> CompositeOpDir<'_, '_> {
match compilation_target {
CompilationTarget::User => CompositeOpDir::new(&self.indices.op_dir, None),
CompilationTarget::Module(ref module_name) => {
}
}
-#[derive(Debug, Clone, Copy)]// , Ord, Hash, PartialOrd, Eq, PartialEq)]
+#[derive(Debug, Clone, Copy)] // , Ord, Hash, PartialOrd, Eq, PartialEq)]
pub struct CodeIndex(CodeIndexOffset);
#[cfg(target_pointer_width = "32")]
}
#[inline(always)]
- fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter, usize> {
+ fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter<'_>, usize> {
self.state.heap.reserve(num_cells)
}
}
#[inline]
- fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter, usize> {
+ fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter<'_>, usize> {
self.stub.reserve(num_cells)
}
}
#[inline(always)]
- fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter, usize> {
+ fn reserve(&mut self, num_cells: usize) -> Result<HeapWriter<'_>, usize> {
self.wam.machine_st.heap.reserve(num_cells)
}
impl Machine {
#[inline]
- fn prelude_view_and_machine_st(&mut self) -> (MachinePreludeView, &mut MachineState) {
+ fn prelude_view_and_machine_st(&mut self) -> (MachinePreludeView<'_>, &mut MachineState) {
(
MachinePreludeView {
indices: &mut self.indices,
use crate::machine::system_calls::BrentAlgState;
use crate::types::*;
-use std::ops::Deref;
-
#[derive(Clone, Copy)]
pub struct HeapPStrIter<'a> {
pub heap: &'a Heap,
}
}
-pub struct PStrCharsIter<'a> {
- pub iter: HeapPStrIter<'a>,
- pub item: Option<PStrIteratee>,
-}
-
-impl<'a> Deref for PStrCharsIter<'a> {
- type Target = HeapPStrIter<'a>;
-
- fn deref(&self) -> &Self::Target {
- &self.iter
- }
-}
-
-impl<'a> Iterator for PStrCharsIter<'a> {
- type Item = char;
-
- fn next(&mut self) -> Option<Self::Item> {
- while let Some(item) = self.item {
- match item {
- PStrIteratee::Char { value, .. } => {
- self.item = self.iter.next();
- return Some(value);
- }
- PStrIteratee::PStrSlice {
- slice_loc,
- slice_len,
- } => {
- let s = self.iter.heap.slice_to_str(slice_loc, slice_len);
-
- match s.chars().next() {
- Some(c) => {
- self.item = Some(PStrIteratee::PStrSlice {
- slice_loc: slice_loc + c.len_utf8(),
- slice_len: slice_len - c.len_utf8(),
- });
- return Some(c);
- }
- None => {
- self.item = self.iter.next();
- }
- }
- }
- }
- }
-
- None
- }
-}
-
#[cfg(test)]
mod test {
use super::*;