Skip to main content

tvscreener/core/
bond.rs

1// Copyright 2026 tvscreener-rs contributors
2// SPDX-License-Identifier: Apache-2.0
3
4//! [`BondScreener`] (`TradingView` subtype `bond`).
5//!
6//! Default bond fields (or `bond_basic` preset fallback) and volume sort.
7
8use super::Screener;
9use crate::field::{bond_volume, default_bond_fields};
10
11/// Bond screener with asset-class defaults
12#[derive(Debug, Clone)]
13pub struct BondScreener {
14    inner: Screener,
15}
16
17impl BondScreener {
18    /// Creates a screener with default bond fields and descending volume sort.
19    pub fn new() -> Self {
20        let mut inner = Screener::new("bond");
21        inner.set_url(crate::util::get_url("bond"));
22        inner.set_all_fields_fn(default_bond_fields);
23        inner.select(default_bond_fields());
24        inner.sort_by(bond_volume().field_name, false);
25        Self { inner }
26    }
27}
28
29impl_typed_screener_common!(BondScreener);