blob: 55c45cc57ab3ead913109a2572bf1e72802c1218 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_TASK_SEQUENCED_TASK_RUNNER_RUST_SHIM_H_
#define BASE_TASK_SEQUENCED_TASK_RUNNER_RUST_SHIM_H_
#include "third_party/rust/cxx/v1/cxx.h"
namespace base {
class SequencedTaskRunner;
struct RustOnceClosure;
// Return a raw pointer to the current default SequencedTaskRunner, since we
// can't pass scoped_refptr to rust directly.
SequencedTaskRunner* GetCurrentDefaultSequencedTaskRunnerForRust();
// Post a task to the given runner
bool PostTaskFromRust(SequencedTaskRunner& runner,
rust::Box<base::RustOnceClosure> task);
// Expose ref-counting to Rust
void AddRef(const SequencedTaskRunner& runner);
void Release(const SequencedTaskRunner& runner);
// Check if we're currently on this runner's sequence
bool RunsTasksInCurrentSequence(const SequencedTaskRunner& runner);
} // namespace base
#endif // BASE_TASK_SEQUENCED_TASK_RUNNER_RUST_SHIM_H_