diff --git a/crates/next-api/src/project.rs b/crates/next-api/src/project.rs index 0ea89113d9cdcb..9d1f2048b5c64e 100644 --- a/crates/next-api/src/project.rs +++ b/crates/next-api/src/project.rs @@ -33,8 +33,8 @@ use serde::{Deserialize, Serialize}; use tracing::{Instrument, field::Empty}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ - Completion, Completions, FxIndexMap, IntoTraitRef, NonLocalValue, OperationValue, OperationVc, - ReadRef, ResolvedVc, State, TaskInput, TransientInstance, TryFlatJoinIterExt, Vc, + Completion, Completions, FxIndexMap, NonLocalValue, OperationValue, OperationVc, ReadRef, + ResolvedVc, State, TaskInput, TransientInstance, TryFlatJoinIterExt, Vc, debug::ValueDebugFormat, fxindexmap, trace::TraceRawVcs, }; use turbo_tasks_env::{EnvMap, ProcessEnv}; diff --git a/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs b/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs index 6f8b7c7d361801..3e653dfbf3d849 100644 --- a/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs +++ b/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs @@ -3,7 +3,7 @@ use std::{io::Write, iter::once}; use anyhow::{Context, Result, bail}; use indoc::writedoc; use turbo_rcstr::{RcStr, rcstr}; -use turbo_tasks::{IntoTraitRef, ResolvedVc, ValueToString, Vc}; +use turbo_tasks::{ResolvedVc, ValueToString, Vc}; use turbo_tasks_fs::{File, FileContent}; use turbopack_core::{ asset::AssetContent, diff --git a/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell.rs b/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell.rs index 4b6437fa758095..93c69288518589 100644 --- a/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell.rs +++ b/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell.rs @@ -6,7 +6,7 @@ use std::{collections::HashSet, mem::take, sync::Mutex}; use anyhow::Result; use turbo_tasks::{ - IntoTraitRef, Invalidator, TraitRef, Vc, get_invalidator, + Invalidator, TraitRef, Vc, get_invalidator, unmark_top_level_task_may_leak_eventually_consistent_state, with_turbo_tasks, }; use turbo_tasks_testing::{Registration, register, run_once}; diff --git a/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell_mode.rs b/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell_mode.rs index 3df6de5b262895..055d23a36f6cfb 100644 --- a/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell_mode.rs +++ b/turbopack/crates/turbo-tasks-backend/tests/trait_ref_cell_mode.rs @@ -3,8 +3,7 @@ use anyhow::Result; use turbo_tasks::{ - IntoTraitRef, State, TraitRef, Upcast, Vc, - unmark_top_level_task_may_leak_eventually_consistent_state, + State, TraitRef, Upcast, Vc, unmark_top_level_task_may_leak_eventually_consistent_state, }; use turbo_tasks_testing::{Registration, register, run_once}; diff --git a/turbopack/crates/turbo-tasks/src/lib.rs b/turbopack/crates/turbo-tasks/src/lib.rs index ec757e177b2bf7..346214884771ba 100644 --- a/turbopack/crates/turbo-tasks/src/lib.rs +++ b/turbopack/crates/turbo-tasks/src/lib.rs @@ -108,7 +108,7 @@ pub use crate::{ task_input::{EitherTaskInput, TaskInput}, }, task_execution_reason::TaskExecutionReason, - trait_ref::{IntoTraitRef, TraitRef}, + trait_ref::TraitRef, value::{TransientInstance, TransientValue}, value_type::{TraitMethod, TraitType, ValueType}, vc::{ diff --git a/turbopack/crates/turbo-tasks/src/trait_ref.rs b/turbopack/crates/turbo-tasks/src/trait_ref.rs index 0e90deacceb2fe..4bf6fc9cebd400 100644 --- a/turbopack/crates/turbo-tasks/src/trait_ref.rs +++ b/turbopack/crates/turbo-tasks/src/trait_ref.rs @@ -1,12 +1,7 @@ -use std::{fmt::Debug, future::Future, marker::PhantomData}; - -use anyhow::Result; +use std::{fmt::Debug, marker::PhantomData}; use crate::{ - Vc, VcValueTrait, - registry::get_value_type, - task::shared_reference::TypedSharedReference, - vc::{ReadVcFuture, VcValueTraitCast, cast::VcCast}, + Vc, VcValueTrait, registry::get_value_type, task::shared_reference::TypedSharedReference, }; /// Similar to a [`ReadRef`][crate::ReadRef], but contains a value trait object instead. @@ -117,31 +112,3 @@ where (value_type.raw_cell)(shared_reference).into() } } - -/// A trait that allows a value trait vc to be converted into a trait reference. -/// -/// The signature is similar to `IntoFuture`, but we don't want trait vcs to -/// have the same future-like semantics as value vcs when it comes to producing -/// refs. This behavior is rarely needed, so in most cases, `.await`ing a trait -/// vc is a mistake. -pub trait IntoTraitRef { - type ValueTrait: VcValueTrait + ?Sized; - type Future: Future as VcCast>::Output>>; - - fn into_trait_ref(self) -> Self::Future; -} - -impl IntoTraitRef for Vc -where - T: VcValueTrait + ?Sized, -{ - type ValueTrait = T; - - type Future = ReadVcFuture>; - - fn into_trait_ref(self) -> Self::Future { - self.node - .into_read_with_unknown_is_serializable_cell_content() - .into() - } -} diff --git a/turbopack/crates/turbo-tasks/src/vc/mod.rs b/turbopack/crates/turbo-tasks/src/vc/mod.rs index 03ae3f13be67b8..4cdddc021e410c 100644 --- a/turbopack/crates/turbo-tasks/src/vc/mod.rs +++ b/turbopack/crates/turbo-tasks/src/vc/mod.rs @@ -514,6 +514,22 @@ where impl Unpin for Vc where T: ?Sized {} +impl Vc +where + T: VcValueTrait + ?Sized, +{ + /// Converts this trait vc into a trait reference. + /// + /// The signature is similar to [`IntoFuture::into_future`], but we don't want trait vcs to + /// have the same future-like semantics as value vcs when it comes to producing refs. This + /// behavior is rarely needed, so in most cases, `.await`ing a trait vc is a mistake. + pub fn into_trait_ref(self) -> ReadVcFuture> { + self.node + .into_read_with_unknown_is_serializable_cell_content() + .into() + } +} + impl Default for Vc where T: ValueDefault, diff --git a/turbopack/crates/turbo-tasks/src/vc/operation.rs b/turbopack/crates/turbo-tasks/src/vc/operation.rs index 1e83f521d23c00..f59cd06b9f8ec9 100644 --- a/turbopack/crates/turbo-tasks/src/vc/operation.rs +++ b/turbopack/crates/turbo-tasks/src/vc/operation.rs @@ -7,9 +7,8 @@ use serde::{Deserialize, Serialize}; pub use turbo_tasks_macros::OperationValue; use crate::{ - CollectiblesSource, IntoTraitRef, RawVc, ReadVcFuture, ResolvedVc, TaskInput, UpcastStrict, Vc, - VcValueTrait, VcValueTraitCast, VcValueType, marker_trait::impl_auto_marker_trait, - trace::TraceRawVcs, + CollectiblesSource, RawVc, ReadVcFuture, ResolvedVc, TaskInput, UpcastStrict, Vc, VcValueTrait, + VcValueTraitCast, VcValueType, marker_trait::impl_auto_marker_trait, trace::TraceRawVcs, }; /// A "subtype" (can be converted via [`.connect()`]) of [`Vc`] that diff --git a/turbopack/crates/turbo-tasks/src/vc/traits.rs b/turbopack/crates/turbo-tasks/src/vc/traits.rs index 8773f92333a810..c9ffebe0f1e8a2 100644 --- a/turbopack/crates/turbo-tasks/src/vc/traits.rs +++ b/turbopack/crates/turbo-tasks/src/vc/traits.rs @@ -114,8 +114,6 @@ pub unsafe trait VcValueType: ShrinkToFit + Sized + Send + Sync + 'static { /// functions defined on the trait to be called. /// /// ```ignore -/// use turbo_tasks::IntoTraitRef; -/// /// let trait_vc: Vc> = ...; /// let trait_ref: TraitRef> = trait_vc.into_trait_ref().await?; /// diff --git a/turbopack/crates/turbopack-browser/src/ecmascript/list/content.rs b/turbopack/crates/turbopack-browser/src/ecmascript/list/content.rs index 732fe122548eb3..940002ffc02a02 100644 --- a/turbopack/crates/turbopack-browser/src/ecmascript/list/content.rs +++ b/turbopack/crates/turbopack-browser/src/ecmascript/list/content.rs @@ -6,9 +6,7 @@ use either::Either; use indoc::writedoc; use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; -use turbo_tasks::{ - FxIndexMap, IntoTraitRef, NonLocalValue, ResolvedVc, TryJoinIterExt, Vc, trace::TraceRawVcs, -}; +use turbo_tasks::{FxIndexMap, NonLocalValue, ResolvedVc, TryJoinIterExt, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{File, FileContent}; use turbopack_core::{ asset::{Asset, AssetContent}, diff --git a/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs b/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs index b3df2be9b6ab87..35770006da9b20 100644 --- a/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs +++ b/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use serde::Serialize; -use turbo_tasks::{FxIndexMap, IntoTraitRef, ResolvedVc, TraitRef, Vc}; +use turbo_tasks::{FxIndexMap, ResolvedVc, TraitRef, Vc}; use turbopack_core::version::{ MergeableVersionedContent, PartialUpdate, TotalUpdate, Update, Version, VersionedContent, VersionedContentMerger, diff --git a/turbopack/crates/turbopack-browser/src/ecmascript/merged/update.rs b/turbopack/crates/turbopack-browser/src/ecmascript/merged/update.rs index 420bc5185a102c..c6fe0ad359f158 100644 --- a/turbopack/crates/turbopack-browser/src/ecmascript/merged/update.rs +++ b/turbopack/crates/turbopack-browser/src/ecmascript/merged/update.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use serde::Serialize; -use turbo_tasks::{FxIndexMap, FxIndexSet, IntoTraitRef, ReadRef, ResolvedVc, TryJoinIterExt, Vc}; +use turbo_tasks::{FxIndexMap, FxIndexSet, ReadRef, ResolvedVc, TryJoinIterExt, Vc}; use turbo_tasks_fs::rope::Rope; use turbopack_core::{ chunk::{ChunkingContext, ModuleId}, diff --git a/turbopack/crates/turbopack-core/src/issue/mod.rs b/turbopack/crates/turbopack-core/src/issue/mod.rs index b26a3965e018a9..8a243c82f6e8d7 100644 --- a/turbopack/crates/turbopack-core/src/issue/mod.rs +++ b/turbopack/crates/turbopack-core/src/issue/mod.rs @@ -15,9 +15,9 @@ use serde::{Deserialize, Serialize}; use turbo_esregex::EsRegex; use turbo_rcstr::RcStr; use turbo_tasks::{ - CollectiblesSource, IntoTraitRef, NonLocalValue, OperationVc, RawVc, ReadRef, ResolvedVc, - TaskInput, TransientValue, TryFlatJoinIterExt, TryJoinIterExt, Upcast, ValueDefault, - ValueToString, Vc, emit, trace::TraceRawVcs, + CollectiblesSource, NonLocalValue, OperationVc, RawVc, ReadRef, ResolvedVc, TaskInput, + TransientValue, TryFlatJoinIterExt, TryJoinIterExt, Upcast, ValueDefault, ValueToString, Vc, + emit, trace::TraceRawVcs, }; use turbo_tasks_fs::{ FileContent, FileLine, FileLinesContent, FileSystem, FileSystemPath, glob::Glob, diff --git a/turbopack/crates/turbopack-core/src/resolve/error.rs b/turbopack/crates/turbopack-core/src/resolve/error.rs index bd620fa66d4c7e..b5dd0b74699e98 100644 --- a/turbopack/crates/turbopack-core/src/resolve/error.rs +++ b/turbopack/crates/turbopack-core/src/resolve/error.rs @@ -1,6 +1,6 @@ use anyhow::Result; use turbo_rcstr::RcStr; -use turbo_tasks::{IntoTraitRef, PrettyPrintError, ResolvedVc, Vc}; +use turbo_tasks::{PrettyPrintError, ResolvedVc, Vc}; use turbo_tasks_fs::FileSystemPath; use crate::{ diff --git a/turbopack/crates/turbopack-core/src/version.rs b/turbopack/crates/turbopack-core/src/version.rs index 44c91da25c4cd8..a82040587dc31a 100644 --- a/turbopack/crates/turbopack-core/src/version.rs +++ b/turbopack/crates/turbopack-core/src/version.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use anyhow::{Context, Result, bail}; use turbo_rcstr::RcStr; use turbo_tasks::{ - IntoTraitRef, NonLocalValue, OperationValue, ReadRef, ResolvedVc, State, TraitRef, Vc, + NonLocalValue, OperationValue, ReadRef, ResolvedVc, State, TraitRef, Vc, debug::ValueDebugFormat, trace::TraceRawVcs, }; use turbo_tasks_hash::HashAlgorithm; diff --git a/turbopack/crates/turbopack-css/src/asset.rs b/turbopack/crates/turbopack-css/src/asset.rs index 596f40db3fd949..62cabb7ada6464 100644 --- a/turbopack/crates/turbopack-css/src/asset.rs +++ b/turbopack/crates/turbopack-css/src/asset.rs @@ -1,6 +1,6 @@ use anyhow::Result; use turbo_rcstr::rcstr; -use turbo_tasks::{IntoTraitRef, ResolvedVc, TryJoinIterExt, Vc, turbofmt}; +use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc, turbofmt}; use turbo_tasks_fs::{FileContent, FileSystemPath}; use turbopack_core::{ chunk::{ChunkItem, ChunkType, ChunkableModule, ChunkingContext, MinifyType}, diff --git a/turbopack/crates/turbopack-css/src/module_asset.rs b/turbopack/crates/turbopack-css/src/module_asset.rs index dd202f6cf0199a..cd0e338b3edc1c 100644 --- a/turbopack/crates/turbopack-css/src/module_asset.rs +++ b/turbopack/crates/turbopack-css/src/module_asset.rs @@ -4,7 +4,7 @@ use anyhow::{Context, Result}; use lightningcss::css_modules::CssModuleReference; use swc_core::common::{BytePos, FileName, LineCol, SourceMap}; use turbo_rcstr::{RcStr, rcstr}; -use turbo_tasks::{FxIndexMap, IntoTraitRef, ResolvedVc, Vc, turbofmt}; +use turbo_tasks::{FxIndexMap, ResolvedVc, Vc, turbofmt}; use turbo_tasks_fs::{FileSystemPath, rope::Rope}; use turbopack_core::{ chunk::{AsyncModuleInfo, ChunkableModule, ChunkingContext, ModuleChunkItemIdExt}, diff --git a/turbopack/crates/turbopack-dev-server/src/update/stream.rs b/turbopack/crates/turbopack-dev-server/src/update/stream.rs index 7706c84ba8e9db..665fb89a6e6c2d 100644 --- a/turbopack/crates/turbopack-dev-server/src/update/stream.rs +++ b/turbopack/crates/turbopack-dev-server/src/update/stream.rs @@ -7,8 +7,7 @@ use tokio_stream::wrappers::ReceiverStream; use tracing::Instrument; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ - IntoTraitRef, NonLocalValue, OperationVc, PrettyPrintError, ReadRef, ResolvedVc, - TransientInstance, Vc, + NonLocalValue, OperationVc, PrettyPrintError, ReadRef, ResolvedVc, TransientInstance, Vc, trace::{TraceRawVcs, TraceRawVcsContext}, }; use turbo_tasks_fs::{FileSystem, FileSystemPath}; diff --git a/turbopack/crates/turbopack-ecmascript/src/lib.rs b/turbopack/crates/turbopack-ecmascript/src/lib.rs index f9ab5c59ddd73e..97d069266a6605 100644 --- a/turbopack/crates/turbopack-ecmascript/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript/src/lib.rs @@ -78,8 +78,8 @@ use swc_core::{ use tracing::{Instrument, Level, instrument}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ - FxDashMap, FxIndexMap, IntoTraitRef, NonLocalValue, ReadRef, ResolvedVc, TaskInput, - TryJoinIterExt, Upcast, ValueToString, Vc, trace::TraceRawVcs, turbofmt, + FxDashMap, FxIndexMap, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, Upcast, + ValueToString, Vc, trace::TraceRawVcs, turbofmt, }; use turbo_tasks_fs::{FileJsonContent, FileSystemPath, glob::Glob, rope::Rope}; use turbopack_core::{ diff --git a/turbopack/crates/turbopack-node/src/evaluate.rs b/turbopack/crates/turbopack-node/src/evaluate.rs index 53e84f32c53b64..44e1c4ea74de24 100644 --- a/turbopack/crates/turbopack-node/src/evaluate.rs +++ b/turbopack/crates/turbopack-node/src/evaluate.rs @@ -10,8 +10,8 @@ use serde::{Deserialize, Serialize, de::DeserializeOwned}; use serde_json::Value as JsonValue; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ - Completion, Effects, FxIndexMap, IntoTraitRef, NonLocalValue, OperationVc, PrettyPrintError, - ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, Vc, duration_span, fxindexmap, get_effects, + Completion, Effects, FxIndexMap, NonLocalValue, OperationVc, PrettyPrintError, ReadRef, + ResolvedVc, TaskInput, TryJoinIterExt, Vc, duration_span, fxindexmap, get_effects, trace::TraceRawVcs, }; use turbo_tasks_env::{EnvMap, ProcessEnv}; diff --git a/turbopack/crates/turbopack-nodejs/src/ecmascript/node/update.rs b/turbopack/crates/turbopack-nodejs/src/ecmascript/node/update.rs index ffeb452ec51192..3b47a0bee1b210 100644 --- a/turbopack/crates/turbopack-nodejs/src/ecmascript/node/update.rs +++ b/turbopack/crates/turbopack-nodejs/src/ecmascript/node/update.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use serde::Serialize; -use turbo_tasks::{FxIndexMap, FxIndexSet, IntoTraitRef, ReadRef, ResolvedVc, Vc}; +use turbo_tasks::{FxIndexMap, FxIndexSet, ReadRef, ResolvedVc, Vc}; use turbo_tasks_fs::rope::Rope; use turbopack_core::{ chunk::ModuleId, diff --git a/turbopack/crates/turbopack-wasm/src/module_asset.rs b/turbopack/crates/turbopack-wasm/src/module_asset.rs index 22cc433f23d29f..03e69bca2cc9da 100644 --- a/turbopack/crates/turbopack-wasm/src/module_asset.rs +++ b/turbopack/crates/turbopack-wasm/src/module_asset.rs @@ -1,6 +1,6 @@ use anyhow::{Result, bail}; use turbo_rcstr::rcstr; -use turbo_tasks::{IntoTraitRef, ResolvedVc, Vc, fxindexmap}; +use turbo_tasks::{ResolvedVc, Vc, fxindexmap}; use turbo_tasks_fs::FileSystemPath; use turbopack_core::{ chunk::{ diff --git a/turbopack/crates/turbopack-wasm/src/raw.rs b/turbopack/crates/turbopack-wasm/src/raw.rs index 356bca0697e8f7..c640174d0b5de7 100644 --- a/turbopack/crates/turbopack-wasm/src/raw.rs +++ b/turbopack/crates/turbopack-wasm/src/raw.rs @@ -1,6 +1,6 @@ use anyhow::{Result, bail}; use turbo_rcstr::rcstr; -use turbo_tasks::{IntoTraitRef, ResolvedVc, Vc}; +use turbo_tasks::{ResolvedVc, Vc}; use turbopack_core::{ chunk::{AsyncModuleInfo, ChunkableModule, ChunkingContext}, context::AssetContext, diff --git a/turbopack/crates/turbopack/src/module_options/mod.rs b/turbopack/crates/turbopack/src/module_options/mod.rs index 908b6e8b7c0b70..5073aac86aeea0 100644 --- a/turbopack/crates/turbopack/src/module_options/mod.rs +++ b/turbopack/crates/turbopack/src/module_options/mod.rs @@ -11,7 +11,7 @@ pub use module_options_context::*; pub use module_rule::*; pub use rule_condition::*; use turbo_rcstr::{RcStr, rcstr}; -use turbo_tasks::{IntoTraitRef, ResolvedVc, TryJoinIterExt, Vc}; +use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc}; use turbo_tasks_fs::{ FileSystemPath, glob::{Glob, GlobOptions},