20 dépôts
Shared behaviors that operate on multiple types via generic parameters.
Distinct from Generic Types: Specifically targets traits that are themselves generic, as opposed to generic types.
Explore 20 awesome GitHub repositories matching programming languages & runtimes · Generic Traits. Refine with filters or upvote what's useful.
type-fest is a library of reusable utility types for performing complex transformations and validations on objects, arrays, strings, and numeric ranges in TypeScript. It provides a collection of type definitions designed to handle advanced structural changes and constraints. The project distinguishes itself by offering specialized logic for string literal processing, such as casing transformations and pattern-based modifications, and type-level arithmetic for calculating numeric ranges and absolute values. It also includes utilities for enforcing deep immutability, ensuring union mutual exclu
Provides a set of types for type-level arithmetic and numeric range validation.
fp-ts is a TypeScript library that brings pure functional programming patterns to the language through algebraic data types, type class abstractions, and composable combinators. It provides foundational data types like Option for optional values, Either for typed error handling, and Task for lazy asynchronous computations, all designed to make invalid states unrepresentable and side effects explicit. The library is built on category theory concepts, offering type classes such as Functor, Applicative, Monad, Semigroup, and Monoid with lawful instances for common data structures. The library di
Simulates higher-kinded types in TypeScript to enable generic abstractions over type constructors.
This project is an interactive programming education resource and tutorial designed for learning the Rust programming language and systems programming concepts. It provides a collection of runnable and editable code examples that serve as a practical reference for language syntax and implementation. The resource features an interactive code sandbox that allows users to execute and test code snippets in real time. It emphasizes the verification of technical accuracy by executing embedded code blocks during the build process to ensure all examples remain functional. The content covers a compre
Explains how to define and implement traits that accept generic type parameters.
100 Go Mistakes is a reference book and code review companion that catalogues frequent Go programming anti-patterns and provides corrected implementations for each one. It covers a wide range of common pitfalls, from range loop variable capture and interface nil handling to error wrapping and map iteration randomization, helping developers recognize and avoid these issues in their own code. The project distinguishes itself by offering a structured, example-driven approach to learning idiomatic Go. It covers core design decisions such as when to use pointer versus value receivers, how to apply
Shows how to extract common behaviors like sorting into generic functions.
Arktype is a TypeScript runtime validation library and schema orchestrator. It synchronizes TypeScript types with runtime data validation, allowing users to define type-safe schemas that ensure unknown data adheres to specific structures during application execution. The project distinguishes itself by using set-theory type analysis to determine intersections and subtype compatibility, alongside JIT-compiled validation functions for optimized performance. It supports advanced type modeling through branded type constraints, recursive alias resolution, and the ability to generate runtime valida
Provides utility types to verify if a value is a number, integer, or specific constant like Infinity or NaN.
ts-toolbelt is a collection of specialized utilities for manipulating and validating TypeScript types. It provides a toolkit for performing complex transformations on objects, unions, and functions to enforce strict data consistency at compile time. The library features dedicated transformers for function types, including utilities for currying, composition, and signature extraction. It also includes an object type manipulator for deep merging, patching, and reshaping complex structures. The capability surface extends to literal string processing, type-level arithmetic, and tuple operations.
Provides helper types for performing mathematical addition and validation on numeric types.
language-ext is a functional programming framework for C# that provides a suite of immutable data structures and monadic types. It enables the implementation of pure functional programming patterns, utilizing containers to manage side effects, optional values, and error handling. The library is distinguished by its advanced concurrency and state management tools, including a software transactional memory system and lock-free atomic references. It also provides specialized utilities for distributed systems, such as vector clocks for causality tracking and deterministic data conflict resolution
Simulates higher-kinded generics using traits to define common behaviors across different type constructors.
The Rust RFCs repository is the formal home for the Rust language evolution process, housing the structured design documents and community review mechanisms that govern changes to the Rust programming language, its compiler, and its standard library. It defines the complete lifecycle for proposing, discussing, and implementing substantial changes through RFC documents, from initial submission and community feedback through final comment periods and sub-team sign-offs. The repository codifies the governance and collaboration processes that shape Rust's development, including mechanisms for com
Defines the core numeric trait hierarchy used for generic programming over primitive types in Rust.
Il s'agit d'une bibliothèque de traitement d'image en Rust conçue pour encoder et décoder divers formats de fichiers image et manipuler les pixels. Elle fournit une boîte à outils de manipulation d'images numériques et un ensemble de codecs de format d'image pour lire les données à partir de fichiers et écrire des tampons mémoire dans des formats standard. La bibliothèque dispose d'un pipeline de traitement en pur Rust pour garantir la sécurité mémoire et la compatibilité multiplateforme. Elle inclut un système de hooks enfichables pour l'enregistrement dynamique de formats, permettant à des crates externes d'enregistrer des décodeurs et encodeurs personnalisés au moment de l'exécution. La surface de fonctionnalités couvre la manipulation géométrique pour redimensionner, recadrer et faire pivoter les images, ainsi que la gestion des couleurs pour les conversions d'espace et la génération de dégradés. Elle inclut des outils pour extraire et intégrer des métadonnées telles que les profils Exif et ICC, et fournit des fonctions pour l'application de filtres visuels et les ajustements d'apparence. L'assurance qualité est gérée par le fuzz testing, utilisant la génération d'entrées aléatoires pour identifier les vulnérabilités dans l'analyse syntaxique de fichiers binaires.
Defines common behaviors for image types and pixel formats using Rust traits to enable generic processing logic.
Ce projet est une ressource éducative localisée pour apprendre le langage de programmation Rust, fournissant un guide complet et des spécifications techniques traduites en chinois simplifié. Il sert d'outil pédagogique pour étudier les idiomes du langage, la gestion de la mémoire et les systèmes de types. Le dépôt se concentre sur la localisation de la documentation logicielle, convertissant les guides officiels en chinois simplifié pour accroître l'accessibilité pour les non-anglophones. Il utilise un système basé sur Markdown pour organiser le contenu et prend en charge l'export multi-format vers des formats HTML statiques, PDF et EPUB pour une visualisation web et hors ligne. Le contenu couvre un large éventail de domaines techniques de Rust, incluant les primitives de gestion de la mémoire comme l'ownership et l'emprunt (borrowing), la conception avancée du langage impliquant les traits et les génériques, et des stratégies complètes de gestion des erreurs. Il détaille également les fondamentaux de la programmation, la modélisation des données et l'utilisation d'outils de productivité pour la gestion des builds et des dépendances.
Explains how to specify sets of methods that different types must implement to enable generic code restrictions.
Cats est une bibliothèque de programmation fonctionnelle et de classes de types pour Scala, conçue pour implémenter des patterns algébriques et des abstractions fonctionnelles. Elle fournit un ensemble standardisé d'interfaces et une boîte à outils modulaire de wrappers et conteneurs fonctionnels pour permettre le polymorphisme ad-hoc et la programmation générique sur des types disparates. Le projet sert de standard d'abstraction fonctionnelle, offrant une suite de transformateurs de monades pour composer des contextes à effets imbriqués et gérer de multiples effets de bord computationnels au sein d'un pipeline unique. Il permet en outre la construction de langages dédiés (DSL) embarqués en représentant la logique du programme sous forme de structures de données interprétées séparément de leurs définitions. La bibliothèque couvre de larges domaines de capacités, incluant la manipulation de données algébriques pour combiner et réduire des valeurs, la gestion d'état typée, et la gestion fonctionnelle des erreurs pour formaliser l'accumulation et la récupération d'erreurs. Elle fournit également des outils pour la gestion de calculs à effets et l'extension des types de collection standard avec des capacités fonctionnelles. La bibliothèque inclut des mécanismes de validation des lois algébriques pour garantir que les instances de classes de types respectent les propriétés mathématiques.
Defines type constructors capable of taking other type constructors as parameters for generic functional containers.
nalgebra est une bibliothèque d'algèbre linéaire pour Rust qui fournit des opérations sur les matrices et les vecteurs avec prise en charge des dimensions à la compilation et à l'exécution. Elle fonctionne comme une bibliothèque d'analyse numérique et une bibliothèque de matrices creuses, offrant un framework mathématique capable de s'exécuter dans des environnements embarqués et WebAssembly sans nécessiter la bibliothèque standard Rust. Le projet se distingue comme une bibliothèque de transformation géométrique, utilisant des coordonnées homogènes, des quaternions et des isométries pour gérer les rotations, translations et projections 3D. Il implémente une variété de décompositions de matrices — notamment LU, QR, Cholesky, SVD et décomposition en valeurs propres — pour résoudre des systèmes linéaires et analyser des matrices. La bibliothèque couvre de larges domaines de capacités, notamment le calcul géométrique pour les transformations spatiales, les utilitaires d'infographie pour la composition de matrices de projection et l'exportation de données de shader, et la gestion spécialisée des matrices creuses utilisant le stockage compressé par lignes et colonnes. Elle fournit également des outils de gestion de données pour l'initialisation, le redimensionnement et l'analyse de fichiers Matrix Market.
Uses generic traits to provide a consistent interface for different matrix decompositions and linear solvers.
Scalaz est une bibliothèque de programmation fonctionnelle pour Scala qui fournit une collection de structures de données purement fonctionnelles et de classes de types. Elle fonctionne comme un framework pour organiser les comportements fonctionnels en hiérarchies afin de permettre la programmation générique et les transformations typées. La bibliothèque inclut des outils pour composer et gérer des effets fonctionnels imbriqués au sein d'une même pile de types via un système de transformateurs de monades. Elle fournit des structures de données pour représenter et combiner les effets d'entrée, de sortie et d'optionnalité. Le projet couvre une large surface d'abstractions fonctionnelles, incluant l'implémentation de patterns de programmation de principe et la gestion des opérations d'entrée et de sortie en tant que valeurs de première classe. Elle fournit également des mécanismes pour invoquer des classes de types et appliquer une syntaxe fonctionnelle aux structures de données.
Implements native higher-kinded type definitions to create generic interfaces for containers and effects.
Returns est une bibliothèque de programmation fonctionnelle pour Python qui fournit des conteneurs typés pour gérer l'état, la gestion d'erreurs et l'optionalité. Elle sert de bibliothèque de conteneurs monadiques et de framework de gestion d'erreurs typé, remplaçant les blocs try-catch traditionnels et les vérifications de nullité par des conteneurs Result et Optional pour traiter les exceptions comme des données. Le projet se distingue par son utilisation d'un plugin d'analyse statique Mypy spécialisé pour valider les pipelines fonctionnels et émuler des types d'ordre supérieur. Il fournit des mécanismes pour isoler les effets de bord via des conteneurs IO et offre un framework pour l'injection de dépendances typée qui diffère la fourniture des dépendances jusqu'à l'exécution finale d'un calcul. La bibliothèque couvre un large éventail de primitives fonctionnelles, incluant le currying, l'application partielle et la composition de pipelines de données déclaratifs. Elle prend en charge la gestion de workflow asynchrone en enveloppant les coroutines dans des conteneurs pour enchaîner des opérations non bloquantes et inclut des utilitaires pour la gestion du cycle de vie des ressources et la vérification des lois algébriques pour les conteneurs personnalisés.
Simulates higher-kinded types to allow generic functions to operate across various container types.
ndarray est une bibliothèque de tableaux multidimensionnels pour Rust qui sert de framework d'algèbre linéaire et d'outil de calcul scientifique. Elle fournit l'infrastructure de base pour créer et manipuler des tableaux n-dimensionnels, fonctionnant à la fois comme un processeur de tableaux parallèle et une boîte à outils pour l'analyse de données numériques. La bibliothèque se distingue en fournissant un découpage (slicing) et des vues mémoire efficaces, permettant le partage de données sans copie. Elle tire parti de bibliothèques mathématiques backend optimisées pour la multiplication de matrices à haute vitesse et distribue les itérations mathématiques lourdes sur plusieurs threads CPU pour accélérer le traitement. Le projet couvre un large éventail d'opérations mathématiques, notamment l'arithmétique élément par élément, l'agrégation de données basée sur les axes et les calculs de produit scalaire. Elle inclut également des utilitaires complets pour la manipulation de tableaux tels que le remodelage, l'aplatissement, l'empilement et la génération de grilles de coordonnées, ainsi qu'une prise en charge de la génération de tableaux aléatoires et de la sérialisation.
Uses generics and numeric traits to apply mathematical operations across different numeric types and dimensions.
redis-rs is a client library for interacting with Redis data stores using synchronous and asynchronous Rust interfaces. It serves as a driver for performing data caching, session management, and general data storage. The library features specialized support for Redis Cluster environments, including cluster-aware node routing and distributed data management. It distinguishes itself through zero-copy deserialization to minimize memory allocations and a multiplexed connection model that allows multiple concurrent requests to share a single network connection. The project covers a broad capabili
Uses generic conversion traits to map raw Redis responses into strongly typed Rust values.
petgraph is a graph data structure library for the Rust programming language. It provides a collection of tools for representing and manipulating graphs, functioning as a network analysis tool and a comprehensive graph algorithm suite. The library integrates with Graphviz DOT for importing, exporting, and parsing graph data to facilitate visualization. It distinguishes itself by offering specialized network analysis capabilities, such as the detection of cliques, bridge edges, articulation points, and subgraph isomorphisms. Its computational surface covers a wide range of algorithms, includi
Defines common graph behaviors via generic interfaces to allow different internal storage layouts.
This project is an educational resource and technical reference library designed to assist experienced systems engineers in transitioning from C++ to Rust. It provides a structured curriculum that maps familiar programming patterns, syntax, and memory management techniques to their counterparts in the Rust ecosystem. The platform focuses on bridging the mental model gap between manual memory management and Rust’s ownership and borrowing rules. By aligning complex type systems, trait-based polymorphism, and template metaprogramming, it clarifies how to achieve performance parity through zero-c
Clarifies how trait-based polymorphism and generic types in Rust serve as equivalents to C++ template metaprogramming.
RAML is a declarative YAML-based specification language used for modeling RESTful interfaces and data structures. It functions as a contract-first API framework and modeling standard, establishing a formal agreement for service communication and a single source of truth before implementation begins. The specification enables the automation of functional mock servers and the generation of language-specific client SDKs directly from the definition files. It supports a modular approach to API design through the use of external libraries, overlays for extending contracts, and reusable traits and
Applies reusable sets of methods and headers to multiple endpoints to ensure consistency across similar API resources.
This library is a collection of zero-overhead C++ abstractions designed to replace primitive types with strict wrappers. By leveraging template metaprogramming, it enforces compile-time type safety and validates data integrity, ensuring that logic errors are caught during the build process rather than at runtime. The project distinguishes itself by providing a zero-cost abstraction layer that maps high-level type safety wrappers directly to machine instructions. It utilizes static type identity enforcement to treat logically distinct data as incompatible types, even when they share the same u
Provides strict numeric type enforcement to prevent accidental data loss or invalid arithmetic.