pub trait SketchApi {
// Required methods
async fn execute_mock(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
) -> Result<(SceneGraph, ExecOutcome)>;
async fn new_sketch(
&mut self,
ctx: &ExecutorContext,
project: ProjectId,
file: FileId,
version: Version,
args: SketchArgs,
) -> Result<(SourceDelta, SceneGraphDelta, ObjectId)>;
async fn edit_sketch(
&mut self,
ctx: &ExecutorContext,
project: ProjectId,
file: FileId,
version: Version,
sketch: ObjectId,
) -> Result<SceneGraphDelta>;
async fn exit_sketch(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
) -> Result<SceneGraph>;
async fn add_segment(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
segment: SegmentCtor,
label: Option<String>,
) -> Result<(SourceDelta, SceneGraphDelta)>;
async fn edit_segments(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
segments: Vec<ExistingSegmentCtor>,
) -> Result<(SourceDelta, SceneGraphDelta)>;
async fn delete_objects(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
constraint_ids: Vec<ObjectId>,
segment_ids: Vec<ObjectId>,
) -> Result<(SourceDelta, SceneGraphDelta)>;
async fn add_constraint(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
constraint: Constraint,
) -> Result<(SourceDelta, SceneGraphDelta)>;
async fn edit_constraint(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
constraint_id: ObjectId,
constraint: Constraint,
) -> Result<(SourceDelta, SceneGraphDelta)>;
}Required Methods§
Sourceasync fn execute_mock(
&mut self,
ctx: &ExecutorContext,
version: Version,
sketch: ObjectId,
) -> Result<(SceneGraph, ExecOutcome)>
async fn execute_mock( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, ) -> Result<(SceneGraph, ExecOutcome)>
Execute the sketch in mock mode, without changing anything. This is useful after editing segments, and the user releases the mouse button.
async fn new_sketch( &mut self, ctx: &ExecutorContext, project: ProjectId, file: FileId, version: Version, args: SketchArgs, ) -> Result<(SourceDelta, SceneGraphDelta, ObjectId)>
async fn edit_sketch( &mut self, ctx: &ExecutorContext, project: ProjectId, file: FileId, version: Version, sketch: ObjectId, ) -> Result<SceneGraphDelta>
async fn exit_sketch( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, ) -> Result<SceneGraph>
async fn add_segment( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, segment: SegmentCtor, label: Option<String>, ) -> Result<(SourceDelta, SceneGraphDelta)>
async fn edit_segments( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, segments: Vec<ExistingSegmentCtor>, ) -> Result<(SourceDelta, SceneGraphDelta)>
async fn delete_objects( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, constraint_ids: Vec<ObjectId>, segment_ids: Vec<ObjectId>, ) -> Result<(SourceDelta, SceneGraphDelta)>
async fn add_constraint( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, constraint: Constraint, ) -> Result<(SourceDelta, SceneGraphDelta)>
async fn edit_constraint( &mut self, ctx: &ExecutorContext, version: Version, sketch: ObjectId, constraint_id: ObjectId, constraint: Constraint, ) -> Result<(SourceDelta, SceneGraphDelta)>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.