diff --git a/Project.toml b/Project.toml index a8a7b45..c65846a 100644 --- a/Project.toml +++ b/Project.toml @@ -6,12 +6,19 @@ version = "0.1.3-DEV" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +[weakdeps] +Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + +[extensions] +ReferenceablesAdaptExt = "Adapt" + [compat] Adapt = "2, 3, 4" julia = "1" [extras] +Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test"] +test = ["Test", "Adapt"] diff --git a/ext/ReferenceablesAdaptExt.jl b/ext/ReferenceablesAdaptExt.jl new file mode 100644 index 0000000..b4b6bcf --- /dev/null +++ b/ext/ReferenceablesAdaptExt.jl @@ -0,0 +1,7 @@ +module ReferenceablesAdaptExt +import Referenceables: Referenceable, referenceable +import Adapt + +Adapt.adapt_structure(to, x::Referenceable) = referenceable(Adapt.adapt(to, parent(x))) + +end diff --git a/src/Referenceables.jl b/src/Referenceables.jl index f581a17..6a822db 100644 --- a/src/Referenceables.jl +++ b/src/Referenceables.jl @@ -2,8 +2,6 @@ module Referenceables export referenceable -import Adapt - # Use markdown files as the docstring: for (name, path) in [ :Referenceables => joinpath(dirname(@__DIR__), "README.md"), @@ -98,6 +96,8 @@ isreferenceable(xs) = _valtype(xs) <: RefIndexable _valtype(xs) = valtype(xs) _valtype(xs::AbstractArray) = eltype(xs) # for old Julia -Adapt.adapt_structure(to, x::Referenceable) = referenceable(Adapt.adapt(to, parent(x))) +if !isdefined(Base, :get_extension) + include("../ext/ReferenceablesAdaptExt.jl") +end end # module