Skip to content

already borrowed: BorrowMutError #205

@kurtlawrence

Description

@kurtlawrence

I am getting a 'already borrowed' error when using @fold adjacent to other output fields.

This query would break:

{
    Spry(file: "dev.spry") {
        cases {
            name @output
            fullname @output
            equipment @fold {
                eqname: name @output
                eqname_full: fullname @output
            }
        }
    }
}

But without the adjacent fields, it returns as expected.

{
    Spry(file: "dev.spry") {
        cases {
            equipment @fold {
                eqname: name @output
                eqname_full: fullname @output
            }
        }
    }
}
Stack Trace

thread 'main' panicked at 'already borrowed: BorrowMutError', C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall_core-0.2.0\src\interpreter\execution.rs:541:54
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\panicking.rs:575
   1: core::panicking::panic_fmt
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\core\src\panicking.rs:64
   2: core::result::unwrap_failed
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\core\src\result.rs:1791
   3: enum2$<core::result::Result<core::cell::RefMut<qtest::adapters::BulkAdapter>,core::cell::BorrowMutError> >::expect<core::cell::RefMut<qtest::adapters::BulkAdapter>,core::cell::BorrowMutError>
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\result.rs:1070
   4: core::cell::RefCell<qtest::adapters::BulkAdapter>::borrow_mut<qtest::adapters::BulkAdapter>
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\cell.rs:958
   5: trustfall_core::interpreter::execution::compute_fold::closure$5<enum2$<qtest::adapters::Db>,qtest::adapters::BulkAdapter>
             at C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall_core-0.2.0\src\interpreter\execution.rs:541
   6: core::ops::function::impls::impl$4::call_once<tuple$<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > >,trustfall_core::interpreter::execution::compute_fold::closure_env$5<enum2$<qtest::adapters::Db>,qtest::adapters::BulkAdapter> >
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\ops\function.rs:629
   7: enum2$<core::option::Option<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > > >::map<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,ref_m
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\option.rs:925
   8: core::iter::adapters::map::impl$2::next<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\iter\adapters\map.rs:103
   9: alloc::boxed::impl$39::next<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > > > >,alloc::alloc::Global>
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\alloc\src\boxed.rs:1923
  10: core::iter::adapters::map::impl$2::next<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\iter\adapters\map.rs:103
  11: alloc::boxed::impl$39::next<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > > > >,alloc::alloc::Global>
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\alloc\src\boxed.rs:1923
  12: core::iter::adapters::map::impl$2::next<tuple$<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,enum2$<trustfall_core::ir::value::FieldValue> >,alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core:
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\iter\adapters\map.rs:103
  13: alloc::vec::spec_from_iter_nested::impl$0::from_iter<tuple$<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,enum2$<trustfall_core::ir::value::FieldValue> >,core::iter::adapters::map::Map<alloc::boxed::Box<dyn$<core::iter::traits::it
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\alloc\src\vec\spec_from_iter_nested.rs:26
  14: alloc::vec::spec_from_iter::impl$0::from_iter<tuple$<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,enum2$<trustfall_core::ir::value::FieldValue> >,core::iter::adapters::map::Map<alloc::boxed::Box<dyn$<core::iter::traits::iterator:
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\alloc\src\vec\spec_from_iter.rs:33
  15: alloc::vec::impl$17::from_iter<tuple$<trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> >,enum2$<trustfall_core::ir::value::FieldValue> >,core::iter::adapters::map::Map<alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\alloc\src\vec\mod.rs:2748
  16: core::iter::traits::iterator::Iterator::collect<core::iter::adapters::map::Map<alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > > > >,alloc::alloc::Global>,qte
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\iter\traits\iterator.rs:1836
  17: qtest::adapters::impl$4::owned_box<core::iter::adapters::map::Map<alloc::boxed::Box<dyn$<core::iter::traits::iterator::Iterator<assoc$<Item,trustfall_core::interpreter::DataContext<enum2$<qtest::adapters::Db> > > > >,alloc::alloc::Global>,qtest::adapters:
             at .\src\adapters\mod.rs:228
  18: qtest::adapters::resolve_property_with<enum2$<qtest::adapters::Db>,qtest::adapters::impl$3::resolve_property::closure_env$0>
             at .\src\adapters\mod.rs:199
  19: qtest::adapters::impl$3::resolve_property
             at .\src\adapters\mod.rs:129
  20: trustfall_core::interpreter::basic_adapter::impl$0::resolve_property<qtest::adapters::BulkAdapter>
             at C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall_core-0.2.0\src\interpreter\basic_adapter.rs:239
  21: trustfall_core::interpreter::execution::construct_outputs<enum2$<qtest::adapters::Db>,qtest::adapters::BulkAdapter>
             at C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall_core-0.2.0\src\interpreter\execution.rs:222
  22: trustfall_core::interpreter::execution::interpret_ir<enum2$<qtest::adapters::Db>,qtest::adapters::BulkAdapter>
             at C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall_core-0.2.0\src\interpreter\execution.rs:60
  23: trustfall::execute_query<qtest::adapters::BulkAdapter,alloc::string::String,enum2$<trustfall_core::ir::value::FieldValue> >
             at C:\Users\kurt\.cargo\registry\src\github.com-1ecc6299db9ec823\trustfall-0.2.1\src\lib.rs:43
  24: qtest::eng::Engine::execute_query
             at .\src\eng.rs:28
  25: qtest::main
             at .\src\main.rs:19
  26: core::ops::function::FnOnce::call_once<enum2$<core::result::Result<tuple$<>,miette::eyreish::Report> > (*)(),tuple$<> >
             at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483\library\core\src\ops\function.rs:507
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: process didn't exit successfully: `target\debug\qtest.exe` (exit code: 101)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions