turbo_tasks/
primitives.rs

1use std::{ops::Deref, time::Duration};
2
3use turbo_rcstr::RcStr;
4// This specific macro identifier is detected by turbo-tasks-build.
5use turbo_tasks_macros::primitive as __turbo_tasks_internal_primitive;
6
7use crate::{
8    Vc, {self as turbo_tasks},
9};
10
11__turbo_tasks_internal_primitive!(());
12__turbo_tasks_internal_primitive!(String, manual_shrink_to_fit);
13__turbo_tasks_internal_primitive!(RcStr);
14__turbo_tasks_internal_primitive!(Option<String>);
15__turbo_tasks_internal_primitive!(Option<RcStr>);
16__turbo_tasks_internal_primitive!(Vec<RcStr>, manual_shrink_to_fit);
17__turbo_tasks_internal_primitive!(Option<u16>);
18__turbo_tasks_internal_primitive!(Option<u64>);
19__turbo_tasks_internal_primitive!(bool);
20__turbo_tasks_internal_primitive!(u8);
21__turbo_tasks_internal_primitive!(u16);
22__turbo_tasks_internal_primitive!(u32);
23__turbo_tasks_internal_primitive!(u64);
24__turbo_tasks_internal_primitive!(u128);
25__turbo_tasks_internal_primitive!(i8);
26__turbo_tasks_internal_primitive!(i16);
27__turbo_tasks_internal_primitive!(i32);
28__turbo_tasks_internal_primitive!(i64);
29__turbo_tasks_internal_primitive!(i128);
30__turbo_tasks_internal_primitive!(usize);
31__turbo_tasks_internal_primitive!(isize);
32__turbo_tasks_internal_primitive!(serde_json::Value);
33__turbo_tasks_internal_primitive!(Duration);
34__turbo_tasks_internal_primitive!(Vec<u8>, manual_shrink_to_fit);
35__turbo_tasks_internal_primitive!(Vec<bool>, manual_shrink_to_fit);
36
37#[turbo_tasks::value(transparent, eq = "manual")]
38#[derive(Debug, Clone)]
39pub struct Regex(
40    #[turbo_tasks(trace_ignore)]
41    #[serde(with = "serde_regex")]
42    pub regex::Regex,
43);
44
45impl Deref for Regex {
46    type Target = regex::Regex;
47
48    fn deref(&self) -> &Self::Target {
49        &self.0
50    }
51}
52
53impl PartialEq for Regex {
54    fn eq(&self, other: &Regex) -> bool {
55        // Context: https://github.com/rust-lang/regex/issues/313#issuecomment-269898900
56        self.0.as_str() == other.0.as_str()
57    }
58}
59impl Eq for Regex {}