Skip to content

Commit

Permalink
Merge pull request #127 from marvin-hansen/main
Browse files Browse the repository at this point in the history
Narrowed down overly general type constrains on generic type parameters.
  • Loading branch information
marvin-hansen committed Jan 25, 2024
2 parents a14ae43 + 12db26c commit f78bbb0
Show file tree
Hide file tree
Showing 61 changed files with 742 additions and 83 deletions.
41 changes: 37 additions & 4 deletions deep_causality/src/protocols/contextuable/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.

use std::hash::Hash;
use std::ops::*;

use crate::prelude::{ContextoidType, Identifiable, TimeScale};
Expand All @@ -21,7 +22,15 @@ pub trait Datable: Identifiable {}
///
pub trait Temporable<V>: Identifiable
where
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn time_scale(&self) -> TimeScale;
fn time_unit(&self) -> &V;
Expand All @@ -42,7 +51,15 @@ where
///
pub trait Spatial<V>: Identifiable
where
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn x(&self) -> &V;
fn y(&self) -> &V;
Expand All @@ -64,7 +81,15 @@ where
///
pub trait SpaceTemporal<V>: Identifiable + Spatial<V> + Temporable<V>
where
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn t(&self) -> &V; // returns 4th dimension, t
}
Expand All @@ -91,7 +116,15 @@ where
S: Spatial<V>,
ST: SpaceTemporal<V>,
T: Temporable<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn vertex_type(&self) -> &ContextoidType<D, S, T, ST, V>;
}
21 changes: 19 additions & 2 deletions deep_causality/src/protocols/contextuable_graph/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.

use std::hash::Hash;
use std::ops::{Add, Mul, Sub};

use crate::errors::ContextIndexError;
Expand Down Expand Up @@ -31,7 +32,15 @@ where
S: Spatial<V>,
ST: SpaceTemporal<V>,
T: Temporable<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn add_node(&mut self, value: Contextoid<D, S, T, ST, V>) -> usize;
fn contains_node(&self, index: usize) -> bool;
Expand Down Expand Up @@ -80,7 +89,15 @@ where
S: Spatial<V>,
ST: SpaceTemporal<V>,
T: Temporable<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
// Creates a new context and returns the index of the new context.
fn extra_ctx_add_new(&mut self, capacity: usize, default: bool) -> u64;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
/// Ads a new Contextoid to the context.
/// You can add the same contextoid multiple times,
Expand Down
31 changes: 28 additions & 3 deletions deep_causality/src/types/context_types/context_graph/debug.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.
use std::fmt::{Debug, Display, Formatter};
use std::hash::Hash;
use std::ops::*;

use crate::prelude::{Context, Datable, SpaceTemporal, Spatial, Temporable};
Expand All @@ -12,7 +13,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn format(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(
Expand All @@ -32,7 +41,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
self.format(f)
Expand All @@ -45,7 +62,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
self.format(f)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn extra_ctx_add_new(&mut self, capacity: usize, default: bool) -> u64 {
if self.extra_contexts.is_none() {
Expand Down Expand Up @@ -191,7 +199,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn get_current_extra_context(
&self,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use std::hash::Hash;
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.
use std::ops::*;
Expand All @@ -10,7 +11,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
/// Returns the id of the context.
fn id(&self) -> u64 {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) "2024" . The DeepCausality Authors. All Rights Reserved.

use std::hash::Hash;
use std::ops::{Add, Mul, Sub};

use crate::prelude::{Context, Datable, Indexable, SpaceTemporal, Spatial, Temporable};
Expand All @@ -11,7 +12,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn get_index(&self, key: &usize, current: bool) -> Option<&usize> {
{
Expand Down
21 changes: 19 additions & 2 deletions deep_causality/src/types/context_types/context_graph/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.

use std::collections::HashMap;
use std::hash::Hash;
use std::ops::*;

use ultragraph::prelude::*;
Expand All @@ -24,7 +25,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
id: u64,
name: &'l str,
Expand All @@ -42,7 +51,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
/// Creates a new context with the given node capacity.
pub fn with_capacity(id: u64, name: &'l str, capacity: usize) -> Self {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.
use std::fmt::{Display, Formatter};
use std::hash::Hash;
use std::marker::PhantomData;
use std::ops::*;

Expand All @@ -25,7 +26,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
Datoid(D),
Tempoid(T),
Expand All @@ -41,7 +50,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
pub fn root(&self) -> Option<&Root> {
if let ContextoidType::Root(b) = self {
Expand Down Expand Up @@ -87,7 +104,16 @@ where
S: Display + Spatial<V>,
T: Display + Temporable<V>,
ST: Display + SpaceTemporal<V>,
V: Display + Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Display
+ Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use std::hash::Hash;
// SPDX-License-Identifier: MIT
// Copyright (c) "2023" . The DeepCausality Authors. All Rights Reserved.
use std::ops::*;
Expand All @@ -12,7 +13,15 @@ where
S: Spatial<V>,
T: Temporable<V>,
ST: SpaceTemporal<V>,
V: Default + Add<V, Output = V> + Sub<V, Output = V> + Mul<V, Output = V>,
V: Default
+ Copy
+ Clone
+ Hash
+ Eq
+ PartialEq
+ Add<V, Output = V>
+ Sub<V, Output = V>
+ Mul<V, Output = V>,
{
fn vertex_type(&self) -> &ContextoidType<D, S, T, ST, V> {
&self.vertex_type
Expand Down
Loading

0 comments on commit f78bbb0

Please sign in to comment.